@svgrid/grid 2.2.16 → 2.2.18

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 (290) hide show
  1. package/README.md +1 -1
  2. package/dist/GridFooter.svelte +12 -11
  3. package/dist/SvAnchor.svelte +65 -0
  4. package/dist/SvAnchor.svelte.d.ts +24 -0
  5. package/dist/SvAspectRatio.svelte +38 -0
  6. package/dist/SvAspectRatio.svelte.d.ts +16 -0
  7. package/dist/SvAutoComplete.svelte +52 -7
  8. package/dist/SvAutoComplete.svelte.d.ts +4 -1
  9. package/dist/SvBlockquote.svelte +43 -0
  10. package/dist/SvBlockquote.svelte.d.ts +16 -0
  11. package/dist/SvCalendar.svelte +33 -2
  12. package/dist/SvCalendar.svelte.d.ts +8 -1
  13. package/dist/SvCheckBox.svelte +6 -2
  14. package/dist/SvCode.svelte +52 -0
  15. package/dist/SvCode.svelte.d.ts +19 -0
  16. package/dist/SvCollapsible.svelte +75 -0
  17. package/dist/SvCollapsible.svelte.d.ts +27 -0
  18. package/dist/SvColorInput.svelte +11 -17
  19. package/dist/SvColorInput.svelte.d.ts +2 -0
  20. package/dist/SvComboBox.svelte +85 -8
  21. package/dist/SvComboBox.svelte.d.ts +14 -0
  22. package/dist/SvCountryInput.svelte +2 -2
  23. package/dist/SvCountryInput.svelte.d.ts +1 -1
  24. package/dist/SvDropDownList.svelte +154 -51
  25. package/dist/SvDropDownList.svelte.d.ts +17 -3
  26. package/dist/SvDurationInput.svelte +59 -41
  27. package/dist/SvDurationInput.svelte.d.ts +18 -0
  28. package/dist/SvField.svelte +203 -12
  29. package/dist/SvField.svelte.d.ts +45 -8
  30. package/dist/SvForm.svelte +195 -21
  31. package/dist/SvForm.svelte.d.ts +23 -0
  32. package/dist/SvGrid.controller.svelte.d.ts +12 -1
  33. package/dist/SvGrid.controller.svelte.js +87 -7
  34. package/dist/SvGrid.svelte +383 -181
  35. package/dist/SvGrid.types.d.ts +123 -2
  36. package/dist/SvGridChartView.svelte +70 -0
  37. package/dist/SvGridChartView.svelte.d.ts +11 -0
  38. package/dist/SvGridDropdown.svelte +9 -2
  39. package/dist/SvGridSelect.svelte +5 -2
  40. package/dist/SvGridSelect.svelte.d.ts +1 -1
  41. package/dist/SvGroup.svelte +41 -0
  42. package/dist/SvGroup.svelte.d.ts +27 -0
  43. package/dist/SvHoverCard.svelte +70 -0
  44. package/dist/SvHoverCard.svelte.d.ts +41 -0
  45. package/dist/SvKbd.svelte +51 -0
  46. package/dist/SvKbd.svelte.d.ts +18 -0
  47. package/dist/SvList.svelte +55 -0
  48. package/dist/SvList.svelte.d.ts +23 -0
  49. package/dist/SvListBox.svelte +166 -77
  50. package/dist/SvListBox.svelte.d.ts +17 -4
  51. package/dist/SvLoadingOverlay.svelte +53 -0
  52. package/dist/SvLoadingOverlay.svelte.d.ts +28 -0
  53. package/dist/SvMark.svelte +36 -0
  54. package/dist/SvMark.svelte.d.ts +14 -0
  55. package/dist/SvMaskedInput.svelte +50 -35
  56. package/dist/SvMaskedInput.svelte.d.ts +17 -2
  57. package/dist/SvMenuList.svelte +32 -3
  58. package/dist/SvMenubar.svelte +200 -0
  59. package/dist/SvMenubar.svelte.d.ts +18 -0
  60. package/dist/SvMultiSelect.svelte +7 -4
  61. package/dist/SvMultiSelect.svelte.d.ts +1 -1
  62. package/dist/SvNumberInput.svelte +79 -42
  63. package/dist/SvNumberInput.svelte.d.ts +25 -0
  64. package/dist/SvOtpInput.svelte +2 -2
  65. package/dist/SvPasswordInput.svelte +51 -31
  66. package/dist/SvPasswordInput.svelte.d.ts +17 -0
  67. package/dist/SvPhoneInput.svelte +39 -28
  68. package/dist/SvPhoneInput.svelte.d.ts +4 -0
  69. package/dist/SvPopconfirm.svelte +79 -0
  70. package/dist/SvPopconfirm.svelte.d.ts +42 -0
  71. package/dist/SvPopover.svelte +87 -29
  72. package/dist/SvPopover.svelte.d.ts +18 -4
  73. package/dist/SvRadioGroup.svelte +5 -1
  74. package/dist/SvResult.svelte +73 -0
  75. package/dist/SvResult.svelte.d.ts +28 -0
  76. package/dist/SvSegmented.svelte +114 -0
  77. package/dist/SvSegmented.svelte.d.ts +29 -0
  78. package/dist/SvSimpleGrid.svelte +41 -0
  79. package/dist/SvSimpleGrid.svelte.d.ts +25 -0
  80. package/dist/SvSlider.svelte +23 -10
  81. package/dist/SvSpinner.svelte +43 -0
  82. package/dist/SvSpinner.svelte.d.ts +20 -0
  83. package/dist/SvStack.svelte +37 -0
  84. package/dist/SvStack.svelte.d.ts +24 -0
  85. package/dist/SvSwitchButton.svelte +6 -1
  86. package/dist/SvTagsInput.svelte +9 -5
  87. package/dist/SvText.svelte +76 -0
  88. package/dist/SvText.svelte.d.ts +31 -0
  89. package/dist/SvTextInput.svelte +75 -43
  90. package/dist/SvTextInput.svelte.d.ts +28 -1
  91. package/dist/SvTimePicker.svelte +32 -2
  92. package/dist/SvTimePicker.svelte.d.ts +8 -9
  93. package/dist/SvTitle.svelte +57 -0
  94. package/dist/SvTitle.svelte.d.ts +24 -0
  95. package/dist/SvToaster.svelte +41 -6
  96. package/dist/SvToggleButton.svelte +4 -1
  97. package/dist/SvTooltip.svelte +68 -34
  98. package/dist/SvTooltip.svelte.d.ts +14 -2
  99. package/dist/SvTree.svelte +81 -21
  100. package/dist/SvTree.svelte.d.ts +3 -2
  101. package/dist/SvTreeSelect.svelte +5 -2
  102. package/dist/SvTreeSelect.svelte.d.ts +1 -1
  103. package/dist/SvVisuallyHidden.svelte +49 -0
  104. package/dist/SvVisuallyHidden.svelte.d.ts +19 -0
  105. package/dist/ai.d.ts +289 -0
  106. package/dist/ai.js +1013 -0
  107. package/dist/board-view.svelte.d.ts +22 -0
  108. package/dist/board-view.svelte.js +13 -0
  109. package/dist/build-api.js +36 -6
  110. package/dist/cdn/GridMenus-0AK9O7qG.js +420 -0
  111. package/dist/cdn/GridMenus-BjUoCXoD.js +416 -0
  112. package/dist/cdn/SvDateTimePicker-CYC7gRER.js +2176 -0
  113. package/dist/cdn/SvDateTimePicker-DtQKd4Ns.js +2198 -0
  114. package/dist/cdn/SvGridChart-BcLCYvw9.js +1195 -0
  115. package/dist/cdn/SvGridChart-BhnFdLd0.js +1203 -0
  116. package/dist/cdn/SvGridChartPanel-Cmx9DHAS.js +561 -0
  117. package/dist/cdn/SvGridChartPanel-DvjwxLvK.js +577 -0
  118. package/dist/cdn/SvGridChartView-B40DTJSX.js +54 -0
  119. package/dist/cdn/SvGridChartView-PwqI4s02.js +53 -0
  120. package/dist/cdn/SvGridDropdown-DjALc_4f.js +255 -0
  121. package/dist/cdn/SvGridDropdown-hpnHvOGt.js +254 -0
  122. package/dist/cdn/chart-T1usDN0o.js +1212 -0
  123. package/dist/cdn/disclose-version-DoD9AFD_.js +2958 -0
  124. package/dist/cdn/export-format-JT5pWVT8.js +561 -0
  125. package/dist/cdn/popover-P-9P2YYn.js +69 -0
  126. package/dist/cdn/rolldown-runtime-Dy4uBu1J.js +11 -0
  127. package/dist/cdn/src-BLhdLmoN.js +25707 -0
  128. package/dist/cdn/src-BwnUVj3T.js +25623 -0
  129. package/dist/cdn/svgrid.js +9 -32897
  130. package/dist/cdn/svgrid.svelte-external.js +9 -30052
  131. package/dist/cell-formatting.d.ts +2 -2
  132. package/dist/cell-render.js +4 -4
  133. package/dist/chart-view.svelte.d.ts +25 -0
  134. package/dist/chart-view.svelte.js +14 -0
  135. package/dist/createCombobox.svelte.d.ts +5 -0
  136. package/dist/createCombobox.svelte.js +21 -5
  137. package/dist/createDropdownList.svelte.d.ts +3 -0
  138. package/dist/createDropdownList.svelte.js +8 -2
  139. package/dist/createForm.svelte.d.ts +18 -0
  140. package/dist/createForm.svelte.js +51 -6
  141. package/dist/createMenu.svelte.js +27 -0
  142. package/dist/createPopoverSelect.svelte.d.ts +3 -0
  143. package/dist/createPopoverSelect.svelte.js +9 -1
  144. package/dist/createSlider.svelte.d.ts +8 -21
  145. package/dist/createSlider.svelte.js +34 -0
  146. package/dist/createTooltip.svelte.d.ts +12 -0
  147. package/dist/createTooltip.svelte.js +72 -9
  148. package/dist/editor-contract.d.ts +15 -0
  149. package/dist/export-provider.d.ts +27 -0
  150. package/dist/export-provider.js +9 -0
  151. package/dist/filter-operators.d.ts +6 -0
  152. package/dist/filter-operators.js +33 -0
  153. package/dist/form-field.d.ts +45 -2
  154. package/dist/grid-messages.d.ts +61 -0
  155. package/dist/grid-messages.js +72 -0
  156. package/dist/group-display.d.ts +62 -0
  157. package/dist/group-display.js +78 -0
  158. package/dist/index.d.ts +36 -4
  159. package/dist/index.js +43 -2
  160. package/dist/js-scroller.svelte.d.ts +35 -0
  161. package/dist/js-scroller.svelte.js +154 -0
  162. package/dist/list-option.d.ts +46 -0
  163. package/dist/list-option.js +53 -0
  164. package/dist/menus.js +25 -11
  165. package/dist/pivot-view.svelte.d.ts +72 -0
  166. package/dist/pivot-view.svelte.js +13 -0
  167. package/dist/positioning.d.ts +111 -0
  168. package/dist/positioning.js +191 -0
  169. package/dist/scheduler-model.d.ts +3 -0
  170. package/dist/scheduler-model.js +22 -5
  171. package/dist/svgrid-wrapper.types.d.ts +18 -0
  172. package/dist/toast-store.svelte.d.ts +54 -0
  173. package/dist/toast-store.svelte.js +65 -15
  174. package/package.json +9 -1
  175. package/src/GridFooter.svelte +12 -11
  176. package/src/SvAnchor.svelte +65 -0
  177. package/src/SvAspectRatio.svelte +38 -0
  178. package/src/SvAutoComplete.svelte +52 -7
  179. package/src/SvBlockquote.svelte +43 -0
  180. package/src/SvCalendar.svelte +33 -2
  181. package/src/SvCalendar.test.ts +15 -0
  182. package/src/SvCheckBox.svelte +6 -2
  183. package/src/SvCode.svelte +52 -0
  184. package/src/SvCollapsible.svelte +75 -0
  185. package/src/SvColorInput.svelte +11 -17
  186. package/src/SvComboBox.svelte +85 -8
  187. package/src/SvCountryInput.svelte +2 -2
  188. package/src/SvDropDownList.svelte +154 -51
  189. package/src/SvDurationInput.svelte +59 -41
  190. package/src/SvField.svelte +203 -12
  191. package/src/SvForm.svelte +195 -21
  192. package/src/SvForm.test.ts +112 -0
  193. package/src/SvGrid.controller.svelte.ts +88 -7
  194. package/src/SvGrid.svelte +383 -181
  195. package/src/SvGrid.types.ts +125 -1
  196. package/src/SvGridChartView.svelte +70 -0
  197. package/src/SvGridDropdown.svelte +9 -2
  198. package/src/SvGridSelect.svelte +5 -2
  199. package/src/SvGroup.svelte +41 -0
  200. package/src/SvHoverCard.svelte +70 -0
  201. package/src/SvKbd.svelte +51 -0
  202. package/src/SvList.svelte +55 -0
  203. package/src/SvListBox.svelte +166 -77
  204. package/src/SvLoadingOverlay.svelte +53 -0
  205. package/src/SvMark.svelte +36 -0
  206. package/src/SvMaskedInput.svelte +50 -35
  207. package/src/SvMenuList.svelte +32 -3
  208. package/src/SvMenubar.svelte +200 -0
  209. package/src/SvMultiSelect.svelte +7 -4
  210. package/src/SvNumberInput.svelte +79 -42
  211. package/src/SvOtpInput.svelte +2 -2
  212. package/src/SvPasswordInput.svelte +51 -31
  213. package/src/SvPhoneInput.svelte +39 -28
  214. package/src/SvPopconfirm.svelte +79 -0
  215. package/src/SvPopover.svelte +87 -29
  216. package/src/SvRadioGroup.svelte +5 -1
  217. package/src/SvResult.svelte +73 -0
  218. package/src/SvSegmented.svelte +114 -0
  219. package/src/SvSimpleGrid.svelte +41 -0
  220. package/src/SvSlider.svelte +23 -10
  221. package/src/SvSpinner.svelte +43 -0
  222. package/src/SvStack.svelte +37 -0
  223. package/src/SvSwitchButton.svelte +6 -1
  224. package/src/SvTagsInput.svelte +9 -5
  225. package/src/SvText.svelte +76 -0
  226. package/src/SvTextInput.svelte +75 -43
  227. package/src/SvTimePicker.svelte +32 -2
  228. package/src/SvTitle.svelte +57 -0
  229. package/src/SvToaster.svelte +41 -6
  230. package/src/SvToaster.test.ts +32 -0
  231. package/src/SvToggleButton.svelte +4 -1
  232. package/src/SvTooltip.svelte +68 -34
  233. package/src/SvTree.svelte +81 -21
  234. package/src/SvTreeSelect.svelte +5 -2
  235. package/src/SvVisuallyHidden.svelte +49 -0
  236. package/src/ai.test.ts +502 -0
  237. package/src/ai.ts +1391 -0
  238. package/src/board-view.svelte.ts +33 -0
  239. package/src/build-api.coverage.test.ts +101 -0
  240. package/src/build-api.ts +43 -18
  241. package/src/builtin-editors.grid.test.ts +1 -1
  242. package/src/cell-formatting.ts +5 -5
  243. package/src/cell-render.ts +4 -4
  244. package/src/chart-view.svelte.ts +36 -0
  245. package/src/createCombobox.svelte.ts +17 -5
  246. package/src/createDropdownList.svelte.ts +8 -2
  247. package/src/createForm.svelte.ts +59 -6
  248. package/src/createMenu.svelte.ts +23 -0
  249. package/src/createPopoverSelect.svelte.ts +8 -1
  250. package/src/createSlider.svelte.ts +20 -0
  251. package/src/createTooltip.svelte.ts +67 -9
  252. package/src/editor-contract.ts +16 -0
  253. package/src/export-provider.ts +40 -0
  254. package/src/filter-operators.ts +37 -0
  255. package/src/form-field.ts +42 -2
  256. package/src/grid-messages.test.ts +24 -0
  257. package/src/grid-messages.ts +137 -0
  258. package/src/group-display.test.ts +77 -0
  259. package/src/group-display.ts +117 -0
  260. package/src/i18n.grid.test.ts +73 -0
  261. package/src/index.ts +91 -2
  262. package/src/js-scroller.svelte.ts +173 -0
  263. package/src/list-option.test.ts +56 -0
  264. package/src/list-option.ts +81 -0
  265. package/src/menus.test.ts +32 -0
  266. package/src/menus.ts +25 -12
  267. package/src/pivot-view.svelte.ts +90 -0
  268. package/src/pivot-view.test.ts +38 -0
  269. package/src/pivot.grid.test.ts +102 -0
  270. package/src/positioning.test.ts +141 -0
  271. package/src/positioning.ts +266 -0
  272. package/src/scheduler-model.test.ts +16 -0
  273. package/src/scheduler-model.ts +24 -5
  274. package/src/svgrid-wrapper.types.ts +23 -0
  275. package/src/svgrid.charting.test.ts +8 -1
  276. package/src/svgrid.comments-autocomplete.test.ts +7 -2
  277. package/src/svgrid.context-menu.test.ts +8 -3
  278. package/src/toast-store.svelte.ts +98 -0
  279. package/src/toast-store.test.ts +62 -1
  280. package/src/ui-breadth.test.ts +138 -0
  281. package/src/ui-buttons.test.ts +39 -0
  282. package/src/ui-inputs.test.ts +2 -2
  283. package/src/ui-range.test.ts +9 -0
  284. package/src/ui-selection.test.ts +36 -0
  285. package/src/ui-tier1.test.ts +1 -1
  286. package/src/virtual.test.ts +20 -6
  287. package/dist/SvGridBoard.svelte +0 -2339
  288. package/dist/SvGridBoard.svelte.d.ts +0 -31
  289. package/src/SvGridBoard.svelte +0 -2339
  290. package/src/board.test.ts +0 -927
@@ -0,0 +1,561 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ //#region src/cell-formatting.ts
3
+ function t(e, t) {
4
+ if (e) switch (e.trim()) {
5
+ case "d": return t === "datetime" ? {
6
+ year: "numeric",
7
+ month: "numeric",
8
+ day: "numeric",
9
+ hour: "numeric",
10
+ minute: "numeric"
11
+ } : {
12
+ year: "numeric",
13
+ month: "numeric",
14
+ day: "numeric"
15
+ };
16
+ case "D": return t === "datetime" ? {
17
+ weekday: "long",
18
+ year: "numeric",
19
+ month: "long",
20
+ day: "numeric",
21
+ hour: "numeric",
22
+ minute: "numeric"
23
+ } : {
24
+ weekday: "long",
25
+ year: "numeric",
26
+ month: "long",
27
+ day: "numeric"
28
+ };
29
+ case "y-m-d": return t === "datetime" ? {
30
+ year: "numeric",
31
+ month: "2-digit",
32
+ day: "2-digit",
33
+ hour: "2-digit",
34
+ minute: "2-digit",
35
+ hour12: !1
36
+ } : {
37
+ year: "numeric",
38
+ month: "2-digit",
39
+ day: "2-digit"
40
+ };
41
+ case "medium": return {
42
+ dateStyle: "medium",
43
+ timeStyle: t === "datetime" ? "short" : void 0
44
+ };
45
+ case "short": return {
46
+ dateStyle: "short",
47
+ timeStyle: t === "datetime" ? "short" : void 0
48
+ };
49
+ case "long": return {
50
+ dateStyle: "long",
51
+ timeStyle: t === "datetime" ? "short" : void 0
52
+ };
53
+ default: return;
54
+ }
55
+ }
56
+ var n = /* @__PURE__ */ new Map();
57
+ function r(e, t) {
58
+ let r = (Array.isArray(e) ? e.join(",") : e ?? "") + "|" + (t.style ?? "") + "|" + (t.currency ?? "") + "|" + (t.minimumFractionDigits ?? "") + "|" + (t.maximumFractionDigits ?? "") + "|" + (t.useGrouping ?? "") + "|" + (t.currencyDisplay ?? "") + "|" + (t.notation ?? ""), i = n.get(r);
59
+ return i || (i = new Intl.NumberFormat(e, t), n.set(r, i)), i;
60
+ }
61
+ var i = /* @__PURE__ */ new Map();
62
+ function a(e, t) {
63
+ let n = (Array.isArray(e) ? e.join(",") : e ?? "") + "|" + (t.dateStyle ?? "") + "|" + (t.timeStyle ?? "") + "|" + (t.year ?? "") + "|" + (t.month ?? "") + "|" + (t.day ?? "") + "|" + (t.hour ?? "") + "|" + (t.minute ?? "") + "|" + (t.second ?? "") + "|" + (t.weekday ?? "") + "|" + (t.hour12 ?? ""), r = i.get(n);
64
+ return r || (r = new Intl.DateTimeFormat(e, t), i.set(n, r)), r;
65
+ }
66
+ function o(e, t) {
67
+ let n = typeof e == "number" ? e : Number(e);
68
+ if (!Number.isFinite(n)) return String(e ?? "");
69
+ let i = t.locales;
70
+ if (t.type === "currency") return r(i, {
71
+ style: "currency",
72
+ currency: t.currency ?? "USD",
73
+ ...t.options
74
+ }).format(n);
75
+ if (t.type === "percent") {
76
+ let e = t.valueIsPercentPoints === !0 ? n / 100 : n;
77
+ return r(i, {
78
+ style: "percent",
79
+ minimumFractionDigits: 0,
80
+ maximumFractionDigits: 2,
81
+ ...t.options
82
+ }).format(e);
83
+ }
84
+ return r(i, t.options ?? {}).format(n);
85
+ }
86
+ //#endregion
87
+ //#region src/conditional-formatting.ts
88
+ var s = {
89
+ arrows: [
90
+ "↓",
91
+ "→",
92
+ "↑"
93
+ ],
94
+ traffic: [
95
+ "🔴",
96
+ "🟡",
97
+ "🟢"
98
+ ],
99
+ triangles: [
100
+ "▼",
101
+ "◆",
102
+ "▲"
103
+ ]
104
+ };
105
+ function c(e) {
106
+ let t = Infinity, n = -Infinity, r = !1;
107
+ for (let i of e) {
108
+ if (i == null || i === "") continue;
109
+ let e = Number(i);
110
+ Number.isFinite(e) && (r = !0, e < t && (t = e), e > n && (n = e));
111
+ }
112
+ return r ? {
113
+ min: t,
114
+ max: n
115
+ } : null;
116
+ }
117
+ function l(e, t, n) {
118
+ let r = 0;
119
+ for (let e = 0; e < t.length; e += 1) n >= t[e] && (r = e + 1);
120
+ return e[Math.min(e.length - 1, Math.max(0, r))] ?? e[e.length - 1];
121
+ }
122
+ function u(e) {
123
+ return e < 0 ? 0 : e > 1 ? 1 : e;
124
+ }
125
+ function d(e) {
126
+ let t = /^#?([0-9a-f]{6})$/i.exec(e.trim());
127
+ if (!t) return null;
128
+ let n = parseInt(t[1], 16);
129
+ return [
130
+ n >> 16 & 255,
131
+ n >> 8 & 255,
132
+ n & 255
133
+ ];
134
+ }
135
+ function f(e) {
136
+ return "#" + e.map((e) => Math.round(u(e / 255) * 255).toString(16).padStart(2, "0")).join("");
137
+ }
138
+ function p(e) {
139
+ let t = d(e);
140
+ if (!t) return null;
141
+ let n = t.map((e) => {
142
+ let t = e / 255;
143
+ return t <= .03928 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
144
+ });
145
+ return .2126 * n[0] + .7152 * n[1] + .0722 * n[2] > .45 ? "#1e293b" : "#ffffff";
146
+ }
147
+ function m(e, t, n) {
148
+ let r = d(e), i = d(t);
149
+ if (!r || !i) return e;
150
+ let a = u(n);
151
+ return f([
152
+ r[0] + (i[0] - r[0]) * a,
153
+ r[1] + (i[1] - r[1]) * a,
154
+ r[2] + (i[2] - r[2]) * a
155
+ ]);
156
+ }
157
+ function h(e, t) {
158
+ let n = d(e);
159
+ return n ? `rgba(${n[0]}, ${n[1]}, ${n[2]}, ${u(t).toFixed(3)})` : e;
160
+ }
161
+ function g(e, t) {
162
+ let n = [...e].sort((e, t) => e.offset - t.offset);
163
+ if (n.length === 0) return "#000000";
164
+ if (t <= n[0].offset) return n[0].color;
165
+ let r = n[n.length - 1];
166
+ if (t >= r.offset) return r.color;
167
+ for (let e = 0; e < n.length - 1; e += 1) {
168
+ let r = n[e], i = n[e + 1];
169
+ if (t >= r.offset && t <= i.offset) {
170
+ let e = i.offset - r.offset || 1;
171
+ return m(r.color, i.color, (t - r.offset) / e);
172
+ }
173
+ }
174
+ return r.color;
175
+ }
176
+ function _(e, t) {
177
+ if (e.stops && e.stops.length >= 2) return g(e.stops, t);
178
+ let n = e.min ?? "#ffffff", r = e.max ?? "#000000";
179
+ return e.mid ? t <= .5 ? m(n, e.mid, t / .5) : m(e.mid, r, (t - .5) / .5) : m(n, r, t);
180
+ }
181
+ function v(e, t, n, r) {
182
+ let i;
183
+ if (e.compareColumn) {
184
+ let r = Number(n?.[e.compareColumn]);
185
+ if (!Number.isFinite(r) || r === 0) return null;
186
+ i = u(t / r);
187
+ } else if (e.type === "colorScale" && e.zeroCentred) {
188
+ let n = e.minValue ?? r?.min ?? t, a = e.maxValue ?? r?.max ?? t;
189
+ i = u(.5 + t / (Math.max(Math.abs(n), Math.abs(a)) || 1) / 2);
190
+ } else {
191
+ let n = r?.min ?? t, a = r?.max ?? t, o, s;
192
+ if (e.bounds === "percent") {
193
+ let t = a - n;
194
+ o = n + (e.minValue ?? 0) / 100 * t, s = n + (e.maxValue ?? 100) / 100 * t;
195
+ } else o = e.minValue ?? n, s = e.maxValue ?? a;
196
+ i = s === o ? .5 : u((t - o) / (s - o));
197
+ }
198
+ return e.type === "colorScale" && e.reverse && (i = 1 - i), i;
199
+ }
200
+ function y(e, t, n, r, i) {
201
+ let a = {};
202
+ for (let o of r) {
203
+ if (o.columns && !o.columns.includes(n)) continue;
204
+ let r = Number(e);
205
+ if (o.type === "rule") {
206
+ if (o.when({
207
+ value: e,
208
+ row: t
209
+ })) {
210
+ if (o.background && (a.background = o.background, !o.color)) {
211
+ let e = p(o.background);
212
+ e && (a.color = e);
213
+ }
214
+ o.color && (a.color = o.color), o.fontWeight != null && (a.fontWeight = o.fontWeight);
215
+ }
216
+ continue;
217
+ }
218
+ if (!(e == null || e === "" || !Number.isFinite(r))) {
219
+ if (o.type === "colorScale") {
220
+ let n = v(o, r, t, i);
221
+ if (n == null) continue;
222
+ if (o.mode === "alpha") {
223
+ let [e, t] = o.alphaBounds ?? [.05, .85];
224
+ a.background = h(o.base ?? "#2563eb", e + (t - e) * n);
225
+ } else {
226
+ a.background = _(o, n);
227
+ let e = p(a.background);
228
+ e && (a.color = e);
229
+ }
230
+ o.tooltip === "value" ? a.title = String(e) : o.tooltip === "percent" && (a.title = `${Math.round(n * 100)}%`);
231
+ } else if (o.type === "dataBar") {
232
+ let e;
233
+ if (o.compareColumn) {
234
+ let n = v(o, r, t, i);
235
+ if (n == null) continue;
236
+ e = n * 100;
237
+ } else if (o.bounds === "percent") {
238
+ let n = v(o, r, t, i);
239
+ if (n == null) continue;
240
+ e = n * 100;
241
+ } else {
242
+ let t = o.minValue ?? Math.min(0, i?.min ?? 0), n = (o.maxValue ?? i?.max ?? r) - t || 1;
243
+ e = u((r - t) / n) * 100;
244
+ }
245
+ a.dataBar = {
246
+ percent: e,
247
+ color: r < 0 ? o.negativeColor ?? "#ef4444" : o.color,
248
+ fromRight: !1,
249
+ gradient: o.gradient
250
+ }, o.showValue === !1 && (a.color = "transparent");
251
+ } else if (o.type === "iconSet") {
252
+ let e = s[o.set ?? "arrows"];
253
+ a.icon = l(e, o.thresholds, r), o.iconOnly && (a.iconOnly = !0);
254
+ }
255
+ }
256
+ }
257
+ return a;
258
+ }
259
+ function b(e) {
260
+ return (e.type === "colorScale" || e.type === "dataBar") && !("compareColumn" in e && e.compareColumn);
261
+ }
262
+ function x(e) {
263
+ return e.some(b);
264
+ }
265
+ //#endregion
266
+ //#region src/export-format.ts
267
+ var S = /* @__PURE__ */ e({
268
+ coerceExportDate: () => C,
269
+ copyTextToClipboard: () => K,
270
+ downloadBlobFile: () => W,
271
+ downloadTextFile: () => G,
272
+ formatValueForExport: () => w,
273
+ projectGridRows: () => E,
274
+ serializeDelimited: () => N,
275
+ serializeHtml: () => I,
276
+ serializeJson: () => L,
277
+ serializeMarkdown: () => z,
278
+ serializeXml: () => U,
279
+ toExcelNumFmt: () => T,
280
+ valueForExcel: () => O
281
+ });
282
+ function C(e) {
283
+ if (e instanceof Date) return Number.isNaN(e.getTime()) ? null : e;
284
+ if (typeof e == "number" && Number.isFinite(e)) {
285
+ let t = new Date(e);
286
+ return Number.isNaN(t.getTime()) ? null : t;
287
+ }
288
+ if (typeof e == "string" && e.trim() !== "") {
289
+ let t = new Date(e);
290
+ return Number.isNaN(t.getTime()) ? null : t;
291
+ }
292
+ return null;
293
+ }
294
+ function w(e, n) {
295
+ if (e == null) return "";
296
+ if (!n) return String(e);
297
+ if (n.type === "number" || n.type === "currency" || n.type === "percent") return o(e, {
298
+ type: n.type,
299
+ locales: n.locales,
300
+ currency: n.type === "currency" ? n.currency ?? "USD" : void 0,
301
+ valueIsPercentPoints: n.type === "percent" ? n.valueIsPercentPoints : void 0,
302
+ options: n.options
303
+ });
304
+ if (n.type === "date" || n.type === "datetime") {
305
+ let r = C(e);
306
+ if (r) {
307
+ let e = t(n.pattern, n.type), i = e || n.options ? {
308
+ ...e,
309
+ ...n.options
310
+ } : n.type === "date" ? {
311
+ year: "numeric",
312
+ month: "2-digit",
313
+ day: "2-digit"
314
+ } : {
315
+ year: "numeric",
316
+ month: "2-digit",
317
+ day: "2-digit",
318
+ hour: "2-digit",
319
+ minute: "2-digit"
320
+ };
321
+ return a(n.locales, i).format(r);
322
+ }
323
+ }
324
+ return String(e);
325
+ }
326
+ function T(e) {
327
+ if (!e) return;
328
+ let t = () => {
329
+ let t = e.options;
330
+ return t && typeof t.maximumFractionDigits == "number" ? t.maximumFractionDigits : t && typeof t.minimumFractionDigits == "number" ? t.minimumFractionDigits : e.type === "currency" ? 2 : e.type === "number" ? 0 : 2;
331
+ }, n = (e) => e > 0 ? "." + "0".repeat(e) : "";
332
+ switch (e.type) {
333
+ case "number": return `#,##0${n(t())}`;
334
+ case "currency": return `"${D(e.currency ?? "USD")}"#,##0${n(t())}`;
335
+ case "percent": return `0${n(t())}%`;
336
+ case "date": return "yyyy-mm-dd";
337
+ case "datetime": return "yyyy-mm-dd hh:mm";
338
+ default: return;
339
+ }
340
+ }
341
+ function E(e, t, n = {}) {
342
+ let r = n.columns && n.columns.length ? n.columns.map((e) => t.find((t) => t.field === e)).filter((e) => !!e) : t.filter((e) => e.field), i = r.map((e) => e.field), a = {};
343
+ for (let e of r) e.align && (a[e.field] = e.align);
344
+ let o = {};
345
+ for (let e of r) o[e.field] = e.header;
346
+ let s = [o];
347
+ for (let t of e) {
348
+ let e = {};
349
+ for (let i of r) {
350
+ let r = t[i.field];
351
+ e[i.field] = n.rawValues ? r : w(r, i.format);
352
+ }
353
+ s.push(e);
354
+ }
355
+ return {
356
+ records: s,
357
+ fields: i,
358
+ align: a
359
+ };
360
+ }
361
+ function D(e) {
362
+ return {
363
+ USD: "$",
364
+ EUR: "€",
365
+ GBP: "£",
366
+ JPY: "¥",
367
+ CNY: "¥",
368
+ INR: "₹",
369
+ KRW: "₩",
370
+ RUB: "₽",
371
+ BRL: "R$"
372
+ }[e.toUpperCase()] ?? e.toUpperCase();
373
+ }
374
+ function O(e, t) {
375
+ if (e == null || !t) return { ok: !1 };
376
+ if (t.type === "number" || t.type === "currency") {
377
+ let t = typeof e == "number" ? e : Number(e);
378
+ return Number.isFinite(t) ? {
379
+ ok: !0,
380
+ value: t
381
+ } : { ok: !1 };
382
+ }
383
+ if (t.type === "percent") {
384
+ let n = typeof e == "number" ? e : Number(e);
385
+ return Number.isFinite(n) ? {
386
+ ok: !0,
387
+ value: t.valueIsPercentPoints === !0 ? n / 100 : n
388
+ } : { ok: !1 };
389
+ }
390
+ if (t.type === "date" || t.type === "datetime") {
391
+ let t = C(e);
392
+ return t ? {
393
+ ok: !0,
394
+ value: t
395
+ } : { ok: !1 };
396
+ }
397
+ return { ok: !1 };
398
+ }
399
+ var k = "";
400
+ function A(e) {
401
+ if (e?.aborted) throw new DOMException("Export aborted", "AbortError");
402
+ }
403
+ var j = () => new Promise((e) => setTimeout(e, 0));
404
+ function M(e, t) {
405
+ let n = e == null ? "" : e instanceof Date ? e.toISOString() : String(e);
406
+ return n === "" ? n : n.includes(t) || n.includes("\"") || n.includes("\n") || n.includes("\r") ? `"${n.replace(/"/g, "\"\"")}"` : n;
407
+ }
408
+ async function N(e, t, n = {}) {
409
+ let r = n.csv?.delimiter ?? ",", i = n.csv?.eol ?? "\r\n", a = n.csv?.bom ?? !0, o = Math.max(1, n.chunkRows ?? 5e3), s = e.length, c = [];
410
+ for (let i = 0; i < e.length; i++) {
411
+ A(n.signal);
412
+ let a = e[i];
413
+ c.push(t.map((e) => M(a[e], r)).join(r)), i > 0 && i % o === 0 && (n.onProgress?.({
414
+ phase: "serialize",
415
+ ratio: i / s,
416
+ row: i,
417
+ total: s
418
+ }), await j());
419
+ }
420
+ n.onProgress?.({
421
+ phase: "serialize",
422
+ ratio: 1,
423
+ row: s,
424
+ total: s
425
+ });
426
+ let l = c.join(i);
427
+ return (a ? k : "") + l;
428
+ }
429
+ var P = {
430
+ "&": "&amp;",
431
+ "<": "&lt;",
432
+ ">": "&gt;",
433
+ "\"": "&quot;",
434
+ "'": "&#39;"
435
+ };
436
+ function F(e) {
437
+ return (e == null ? "" : e instanceof Date ? e.toISOString() : String(e)).replace(/[&<>"']/g, (e) => P[e]);
438
+ }
439
+ async function I(e, t, n = {}) {
440
+ let r = Math.max(1, n.chunkRows ?? 5e3), i = e.length, a = n.align ?? {}, o = n.cellStyle, s = n.cellLink, c = n.title ?? "Grid export", l = e[0], u = l ? t.map((e) => `<th>${F(l[e])}</th>`).join("") : "", d = [];
441
+ for (let c = 1; c < e.length; c++) {
442
+ A(n.signal);
443
+ let l = e[c], u = t.map((e, t) => {
444
+ let n = a[e], r = [];
445
+ n && n !== "left" && r.push(`text-align:${n}`);
446
+ let i = o?.(c - 1, t);
447
+ i?.fill && r.push(`background:${i.fill}`), i?.color && r.push(`color:${i.color}`), i?.bold && r.push("font-weight:700");
448
+ let u = r.length ? ` style="${r.join(";")}"` : "", d = i?.icon ? `${i.icon} ${F(l[e])}` : F(l[e]), f = s?.(c - 1, t);
449
+ return f && (d = `<a href="${F(f)}">${d}</a>`), `<td${u}>${d}</td>`;
450
+ }).join("");
451
+ d.push(`<tr>${u}</tr>`), c > 0 && c % r === 0 && (n.onProgress?.({
452
+ phase: "serialize",
453
+ ratio: c / i,
454
+ row: c,
455
+ total: i
456
+ }), await j());
457
+ }
458
+ return n.onProgress?.({
459
+ phase: "serialize",
460
+ ratio: 1,
461
+ row: i,
462
+ total: i
463
+ }), `<!doctype html><html><head><meta charset="utf-8"><title>${F(c)}</title><style>table{border-collapse:collapse;font-family:system-ui,sans-serif;font-size:13px}th,td{border:1px solid #d0d7de;padding:6px 10px}th{background:#f6f8fa;text-align:left}</style></head><body><table><thead><tr>${u}</tr></thead><tbody>${d.join("")}</tbody></table></body></html>`;
464
+ }
465
+ async function L(e, t, n = {}) {
466
+ let r = Math.max(1, n.chunkRows ?? 5e3), i = e.length - 1, a = [];
467
+ for (let o = 1; o < e.length; o++) {
468
+ A(n.signal);
469
+ let s = e[o], c = {};
470
+ for (let e of t) c[e] = s[e];
471
+ a.push(c), o > 0 && o % r === 0 && (n.onProgress?.({
472
+ phase: "serialize",
473
+ ratio: o / i,
474
+ row: o,
475
+ total: i
476
+ }), await j());
477
+ }
478
+ return n.onProgress?.({
479
+ phase: "serialize",
480
+ ratio: 1,
481
+ row: i,
482
+ total: i
483
+ }), JSON.stringify(a, null, 2);
484
+ }
485
+ function R(e) {
486
+ return (e == null ? "" : e instanceof Date ? e.toISOString() : String(e)).replace(/\\/g, "\\\\").replace(/\|/g, "\\|").replace(/\r?\n/g, "<br>");
487
+ }
488
+ async function z(e, t, n = {}) {
489
+ let r = Math.max(1, n.chunkRows ?? 5e3), i = e.length, a = n.align ?? {}, o = e[0], s = `| ${t.map((e) => R(o?.[e])).join(" | ")} |`, c = `| ${t.map((e) => {
490
+ let t = a[e];
491
+ return t === "right" ? "---:" : t === "center" ? ":--:" : "---";
492
+ }).join(" | ")} |`, l = [];
493
+ for (let a = 1; a < e.length; a++) {
494
+ A(n.signal);
495
+ let o = e[a];
496
+ l.push(`| ${t.map((e) => R(o[e])).join(" | ")} |`), a > 0 && a % r === 0 && (n.onProgress?.({
497
+ phase: "serialize",
498
+ ratio: a / i,
499
+ row: a,
500
+ total: i
501
+ }), await j());
502
+ }
503
+ return n.onProgress?.({
504
+ phase: "serialize",
505
+ ratio: 1,
506
+ row: i,
507
+ total: i
508
+ }), [
509
+ s,
510
+ c,
511
+ ...l
512
+ ].join("\n") + "\n";
513
+ }
514
+ var B = {
515
+ "&": "&amp;",
516
+ "<": "&lt;",
517
+ ">": "&gt;",
518
+ "\"": "&quot;",
519
+ "'": "&apos;"
520
+ };
521
+ function V(e) {
522
+ return (e == null ? "" : e instanceof Date ? e.toISOString() : String(e)).replace(/[\x00-\x08\x0B\x0C\x0E-\x1F]/g, "").replace(/[&<>"']/g, (e) => B[e]);
523
+ }
524
+ function H(e) {
525
+ let t = e.replace(/[^A-Za-z0-9_.-]/g, "_");
526
+ return /^[A-Za-z_]/.test(t) ? t : `_${t}`;
527
+ }
528
+ async function U(e, t, n = {}) {
529
+ let r = Math.max(1, n.chunkRows ?? 5e3), i = e.length - 1, a = n.rootTag ?? "rows", o = n.rowTag ?? "row", s = t.map(H), c = ["<?xml version=\"1.0\" encoding=\"UTF-8\"?>", `<${a}>`];
530
+ for (let a = 1; a < e.length; a++) {
531
+ A(n.signal);
532
+ let l = e[a], u = t.map((e, t) => `<${s[t]}>${V(l[e])}</${s[t]}>`).join("");
533
+ c.push(` <${o}>${u}</${o}>`), a > 0 && a % r === 0 && (n.onProgress?.({
534
+ phase: "serialize",
535
+ ratio: a / i,
536
+ row: a,
537
+ total: i
538
+ }), await j());
539
+ }
540
+ return c.push(`</${a}>`), n.onProgress?.({
541
+ phase: "serialize",
542
+ ratio: 1,
543
+ row: i,
544
+ total: i
545
+ }), c.join("\n");
546
+ }
547
+ function W(e, t) {
548
+ if (typeof document > "u" || typeof URL > "u") throw Error("@svgrid/grid: export requires a browser environment");
549
+ let n = URL.createObjectURL(e), r = document.createElement("a");
550
+ r.href = n, r.download = t, document.body.appendChild(r), r.click(), r.remove(), setTimeout(() => URL.revokeObjectURL(n), 0);
551
+ }
552
+ function G(e, t, n) {
553
+ if (typeof document > "u" || typeof URL > "u") throw Error("@svgrid/grid: text export requires a browser environment");
554
+ W(new Blob([e], { type: n }), t);
555
+ }
556
+ async function K(e) {
557
+ if (typeof navigator > "u" || !navigator.clipboard) throw Error("@svgrid/grid: clipboard API is unavailable in this context");
558
+ await navigator.clipboard.writeText(e);
559
+ }
560
+ //#endregion
561
+ export { a as C, o as S, b as _, S as a, y as b, N as c, z as d, U as f, p as g, c as h, G as i, I as l, O as m, K as n, w as o, T as p, W as r, E as s, C as t, L as u, x as v, t as w, h as x, m as y };
@@ -0,0 +1,69 @@
1
+ //#region src/popover.ts
2
+ var e = [
3
+ "--sg-accent",
4
+ "--sg-on-accent",
5
+ "--sg-bg",
6
+ "--sg-fg",
7
+ "--sg-muted",
8
+ "--sg-border",
9
+ "--sg-header-bg",
10
+ "--sg-header-fg",
11
+ "--sg-row-hover-bg",
12
+ "--sg-row-alt-bg",
13
+ "--sg-selection-bg",
14
+ "--sg-selection-fg",
15
+ "--sg-input-bg",
16
+ "--sg-input-border",
17
+ "--sg-danger",
18
+ "--sg-focus-ring",
19
+ "--sg-radius",
20
+ "--sg-font",
21
+ "--sg-invalid-bg",
22
+ "--sg-invalid-border",
23
+ "--sg-invalid-fg",
24
+ "--sg-rating-on",
25
+ "--sg-rating-empty",
26
+ "--sg-rating-hover"
27
+ ];
28
+ function t(t, n = e) {
29
+ let r = getComputedStyle(t);
30
+ for (let e of n) {
31
+ let n = r.getPropertyValue(e).trim();
32
+ n && t.style.setProperty(e, n);
33
+ }
34
+ return document.body.appendChild(t), { destroy() {
35
+ t.parentNode === document.body && document.body.removeChild(t);
36
+ } };
37
+ }
38
+ function n(e, t = {}) {
39
+ if (typeof e.animate != "function" || typeof matchMedia == "function" && matchMedia("(prefers-reduced-motion: reduce)").matches) return;
40
+ let n = t.up ? 6 : -6, r = t.scale ?? .97;
41
+ return e.animate([{
42
+ opacity: 0,
43
+ transform: `translateY(${n}px) scale(${r})`
44
+ }, {
45
+ opacity: 1,
46
+ transform: "translateY(0) scale(1)"
47
+ }], {
48
+ duration: t.duration ?? 140,
49
+ easing: "cubic-bezier(0.16, 1, 0.3, 1)"
50
+ }), {};
51
+ }
52
+ function r(e, t) {
53
+ let n = t.gap ?? 2, r = t.viewportMargin ?? 8, i = t.minHeight ?? 96, a = window.innerHeight - e.bottom - n - r, o = e.top - n - r, s = a < t.estimatedHeight && o > a, c = Math.max(i, Math.floor(s ? o : a)), l = Math.min(t.estimatedHeight, c), u = Math.max(e.width, t.minWidth ?? 0), d = e.left;
54
+ if (t.clampHorizontal !== !1) {
55
+ let e = window.innerWidth - u - 4;
56
+ d = Math.max(4, Math.min(d, e));
57
+ }
58
+ return {
59
+ top: s ? Math.max(r, e.top - n - l) : e.bottom + n,
60
+ left: d,
61
+ width: u,
62
+ openUpward: s,
63
+ maxHeight: l,
64
+ availHeight: c,
65
+ bottom: Math.round(window.innerHeight - e.top + n)
66
+ };
67
+ }
68
+ //#endregion
69
+ export { t as i, r as n, n as r, e as t };
@@ -0,0 +1,11 @@
1
+ //#region \0rolldown/runtime.js
2
+ var e = Object.defineProperty, t = (t, n) => {
3
+ let r = {};
4
+ for (var i in t) e(r, i, {
5
+ get: t[i],
6
+ enumerable: !0
7
+ });
8
+ return n || e(r, Symbol.toStringTag, { value: "Module" }), r;
9
+ };
10
+ //#endregion
11
+ export { t };