@svgrid/grid 3.0.2 → 3.0.4

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 (281) hide show
  1. package/README.md +2 -1
  2. package/dist/GridMenus.svelte +44 -2
  3. package/dist/SvChartMenu.svelte +69 -0
  4. package/dist/SvChartMenu.svelte.d.ts +11 -0
  5. package/dist/SvChartPanes.svelte +113 -0
  6. package/dist/SvChartPanes.svelte.d.ts +20 -0
  7. package/dist/SvGrid.controller.svelte.d.ts +110 -39
  8. package/dist/SvGrid.controller.svelte.js +655 -200
  9. package/dist/SvGrid.css +105 -2
  10. package/dist/SvGrid.svelte +386 -514
  11. package/dist/SvGrid.types.d.ts +210 -9
  12. package/dist/SvGridCellEditor.svelte +17 -0
  13. package/dist/SvGridChart.svelte +2257 -329
  14. package/dist/SvGridChart.svelte.d.ts +6 -106
  15. package/dist/SvGridChart.types.d.ts +338 -0
  16. package/dist/SvGridChart.types.js +1 -0
  17. package/dist/SvGridChartBuilder.svelte +323 -0
  18. package/dist/SvGridChartBuilder.svelte.d.ts +34 -0
  19. package/dist/SvGridChartPanel.svelte +221 -275
  20. package/dist/SvGridChartPickers.svelte +417 -0
  21. package/dist/SvGridChartPickers.svelte.d.ts +70 -0
  22. package/dist/SvGridChartView.svelte +13 -14
  23. package/dist/SvModal.svelte +7 -1
  24. package/dist/SvModal.svelte.d.ts +5 -0
  25. package/dist/ai.d.ts +40 -8
  26. package/dist/ai.js +135 -24
  27. package/dist/aria.d.ts +11 -0
  28. package/dist/build-api.js +108 -22
  29. package/dist/cdn/GridMenus-7kbpnnBW.js +635 -0
  30. package/dist/cdn/GridMenus-BL7ZgQvU.js +636 -0
  31. package/dist/cdn/SvChartMenu-Bl6PBbkT.js +58 -0
  32. package/dist/cdn/SvChartMenu-FBSMINA6.js +59 -0
  33. package/dist/cdn/{SvDateRangeInput-DMLKmGEc.js → SvDateRangeInput-BeU_TkbQ.js} +15 -14
  34. package/dist/cdn/{SvDateRangeInput-CaOuMs8O.js → SvDateRangeInput-yX8vzleW.js} +38 -37
  35. package/dist/cdn/{SvDateTimePicker-sonaH0oh.js → SvDateTimePicker-DQwt4UAs.js} +139 -180
  36. package/dist/cdn/SvDateTimePicker-vNU6bZ-q.js +775 -0
  37. package/dist/cdn/{SvGridCellEditor-CjEJMJKc.js → SvGridCellEditor-B1p-vCK5.js} +188 -178
  38. package/dist/cdn/{SvGridCellEditor-BWnTi2N7.js → SvGridCellEditor-D_0q4xAu.js} +98 -88
  39. package/dist/cdn/SvGridChart-C3EWAZaM.js +3574 -0
  40. package/dist/cdn/SvGridChart-DzLkSwCH.js +3572 -0
  41. package/dist/cdn/SvGridChartBuilder-BE2T1ykB.js +783 -0
  42. package/dist/cdn/SvGridChartBuilder-CfII62sZ.js +784 -0
  43. package/dist/cdn/SvGridChartPanel-CCX5_Wgd.js +675 -0
  44. package/dist/cdn/SvGridChartPanel-xf4sWVTo.js +699 -0
  45. package/dist/cdn/SvGridChartView-CfuXmY5I.js +48 -0
  46. package/dist/cdn/SvGridChartView-DYwabQWj.js +47 -0
  47. package/dist/cdn/SvMenuList-CLN8OuIK.js +452 -0
  48. package/dist/cdn/SvMenuList-DkGhNKjf.js +451 -0
  49. package/dist/cdn/SvModal-BAE-pjZX.js +396 -0
  50. package/dist/cdn/SvModal-CIZWCcad.js +397 -0
  51. package/dist/cdn/chart-Dz7SqMXH.js +4341 -0
  52. package/dist/cdn/chart-export-BXqueeWJ.js +135 -0
  53. package/dist/cdn/chart-export-pdf-DONFUnNY.js +110 -0
  54. package/dist/cdn/chart-panel-messages-CUbf2R4i.js +1052 -0
  55. package/dist/cdn/chart-panel-messages-CmNrMdsr.js +1053 -0
  56. package/dist/cdn/chart-summary-BJW_tg_X.js +138 -0
  57. package/dist/cdn/chart-trend-CaN9mDEV.js +50 -0
  58. package/dist/cdn/chart-validate-HcOVFAfJ.js +188 -0
  59. package/dist/cdn/{column-resize-DsfNXMom.js → column-resize-DpmOLfRp.js} +3 -3
  60. package/dist/cdn/{date-format-BnnHlqGw.js → date-format-CtquV-p3.js} +583 -603
  61. package/dist/cdn/{date-format-BNii4zeD.js → date-format-D6KFzU_W.js} +347 -367
  62. package/dist/cdn/dismissable-DAHetSNk.js +44 -0
  63. package/dist/cdn/editor-contract-LXgQJAgd.js +22 -0
  64. package/dist/cdn/focus-trap-BBOQYBma.js +65 -0
  65. package/dist/cdn/{row-resize-BRcimkUT.js → row-resize-niQCp040.js} +44 -36
  66. package/dist/cdn/{src-DNbz94Ct.js → src-BKhZ6eXd.js} +10227 -9787
  67. package/dist/cdn/{src-BJ2opd0j.js → src-V1uu8iE9.js} +6568 -6128
  68. package/dist/cdn/svgrid.js +26 -15
  69. package/dist/cdn/svgrid.svelte-external.js +26 -15
  70. package/dist/chart-axes.d.ts +53 -0
  71. package/dist/chart-axes.js +351 -0
  72. package/dist/chart-cartesian.d.ts +88 -0
  73. package/dist/chart-cartesian.js +1862 -0
  74. package/dist/chart-decimate.d.ts +51 -0
  75. package/dist/chart-decimate.js +199 -0
  76. package/dist/chart-export-pdf.d.ts +47 -0
  77. package/dist/chart-export-pdf.js +187 -0
  78. package/dist/chart-export.d.ts +2 -1
  79. package/dist/chart-export.js +18 -3
  80. package/dist/chart-financial.d.ts +91 -0
  81. package/dist/chart-financial.js +175 -0
  82. package/dist/chart-flow.d.ts +10 -0
  83. package/dist/chart-flow.js +298 -0
  84. package/dist/chart-format.d.ts +18 -0
  85. package/dist/chart-format.js +65 -0
  86. package/dist/chart-grid.d.ts +8 -0
  87. package/dist/chart-grid.js +190 -0
  88. package/dist/chart-hierarchy.d.ts +17 -0
  89. package/dist/chart-hierarchy.js +146 -0
  90. package/dist/chart-indicators.d.ts +115 -0
  91. package/dist/chart-indicators.js +389 -0
  92. package/dist/chart-messages.d.ts +95 -0
  93. package/dist/chart-messages.js +92 -0
  94. package/dist/chart-motion.d.ts +16 -0
  95. package/dist/chart-motion.js +141 -0
  96. package/dist/chart-panel-messages.d.ts +265 -0
  97. package/dist/chart-panel-messages.js +285 -0
  98. package/dist/chart-pivot.d.ts +87 -0
  99. package/dist/chart-pivot.js +156 -0
  100. package/dist/chart-polar.d.ts +25 -0
  101. package/dist/chart-polar.js +700 -0
  102. package/dist/chart-samples.d.ts +16 -0
  103. package/dist/chart-samples.js +153 -0
  104. package/dist/chart-scale.d.ts +113 -0
  105. package/dist/chart-scale.js +405 -0
  106. package/dist/chart-stats.d.ts +111 -0
  107. package/dist/chart-stats.js +419 -0
  108. package/dist/chart-stream.d.ts +45 -0
  109. package/dist/chart-stream.js +91 -0
  110. package/dist/chart-summary.d.ts +27 -0
  111. package/dist/chart-summary.js +205 -0
  112. package/dist/chart-sync.svelte.d.ts +32 -0
  113. package/dist/chart-sync.svelte.js +23 -0
  114. package/dist/chart-table.d.ts +35 -0
  115. package/dist/chart-table.js +165 -0
  116. package/dist/chart-trend.d.ts +19 -0
  117. package/dist/chart-trend.js +61 -0
  118. package/dist/chart-types.d.ts +1456 -0
  119. package/dist/chart-types.js +6 -0
  120. package/dist/chart-validate.d.ts +43 -0
  121. package/dist/chart-validate.js +272 -0
  122. package/dist/chart-zoom.d.ts +40 -0
  123. package/dist/chart-zoom.js +145 -0
  124. package/dist/chart.d.ts +186 -865
  125. package/dist/chart.js +460 -2204
  126. package/dist/clipboard.d.ts +1 -0
  127. package/dist/clipboard.js +137 -18
  128. package/dist/column-resize.d.ts +3 -0
  129. package/dist/column-resize.js +4 -1
  130. package/dist/columns.js +3 -0
  131. package/dist/command-context.d.ts +19 -0
  132. package/dist/command-context.js +116 -0
  133. package/dist/core.d.ts +7 -0
  134. package/dist/createPopoverSelect.svelte.d.ts +2 -2
  135. package/dist/editing.d.ts +2 -8
  136. package/dist/editing.js +262 -33
  137. package/dist/fill-patterns.d.ts +0 -5
  138. package/dist/fill-patterns.js +56 -2
  139. package/dist/grid-messages.d.ts +10 -3
  140. package/dist/grid-messages.js +5 -0
  141. package/dist/history.d.ts +83 -0
  142. package/dist/history.js +133 -0
  143. package/dist/index.d.ts +24 -6
  144. package/dist/index.js +20 -2
  145. package/dist/keyboard-handlers.js +88 -31
  146. package/dist/keyboard.d.ts +55 -0
  147. package/dist/keyboard.js +132 -0
  148. package/dist/menus.d.ts +3 -1
  149. package/dist/menus.js +7 -2
  150. package/dist/merges.d.ts +97 -0
  151. package/dist/merges.js +147 -0
  152. package/dist/row-resize.d.ts +3 -0
  153. package/dist/row-resize.js +14 -0
  154. package/dist/scroll-sync.d.ts +1 -0
  155. package/dist/scroll-sync.js +24 -0
  156. package/dist/selection.d.ts +16 -0
  157. package/dist/selection.js +108 -16
  158. package/dist/shortcut-registry.d.ts +145 -0
  159. package/dist/shortcut-registry.js +44 -0
  160. package/dist/svgrid-wrapper.types.d.ts +213 -22
  161. package/dist/virtualization/virtualizer.js +38 -17
  162. package/package.json +6 -1
  163. package/src/GridMenus.svelte +44 -2
  164. package/src/SvChartMenu.svelte +69 -0
  165. package/src/SvChartPanes.svelte +113 -0
  166. package/src/SvChartPanes.test.ts +66 -0
  167. package/src/SvGrid.controller.svelte.ts +629 -172
  168. package/src/SvGrid.css +105 -2
  169. package/src/SvGrid.svelte +386 -514
  170. package/src/SvGrid.types.ts +188 -8
  171. package/src/SvGridCellEditor.svelte +17 -0
  172. package/src/SvGridChart.svelte +2257 -329
  173. package/src/SvGridChart.test.ts +1419 -1
  174. package/src/SvGridChart.types.ts +336 -0
  175. package/src/SvGridChartBuilder.svelte +323 -0
  176. package/src/SvGridChartPanel.svelte +221 -275
  177. package/src/SvGridChartPickers.svelte +417 -0
  178. package/src/SvGridChartView.svelte +13 -14
  179. package/src/SvModal.svelte +7 -1
  180. package/src/SvModal.test.ts +9 -0
  181. package/src/ai.test.ts +57 -2
  182. package/src/ai.ts +166 -22
  183. package/src/aria.d.ts +11 -0
  184. package/src/build-api.coverage.test.ts +184 -0
  185. package/src/build-api.ts +107 -18
  186. package/src/chart-axes.test.ts +573 -0
  187. package/src/chart-axes.ts +342 -0
  188. package/src/chart-cartesian.ts +1863 -0
  189. package/src/chart-decimate.test.ts +249 -0
  190. package/src/chart-decimate.ts +186 -0
  191. package/src/chart-export-pdf.test.ts +91 -0
  192. package/src/chart-export-pdf.ts +207 -0
  193. package/src/chart-export.test.ts +14 -0
  194. package/src/chart-export.ts +13 -3
  195. package/src/chart-financial.ts +208 -0
  196. package/src/chart-flow.ts +286 -0
  197. package/src/chart-format.ts +67 -0
  198. package/src/chart-grid.ts +179 -0
  199. package/src/chart-hierarchy.ts +135 -0
  200. package/src/chart-indicators.test.ts +443 -0
  201. package/src/chart-indicators.ts +384 -0
  202. package/src/chart-messages.test.ts +21 -0
  203. package/src/chart-messages.ts +184 -0
  204. package/src/chart-motion.test.ts +71 -0
  205. package/src/chart-motion.ts +148 -0
  206. package/src/chart-panel-messages.test.ts +29 -0
  207. package/src/chart-panel-messages.ts +550 -0
  208. package/src/chart-pivot.test.ts +54 -0
  209. package/src/chart-pivot.ts +225 -0
  210. package/src/chart-polar.ts +674 -0
  211. package/src/chart-samples.ts +106 -0
  212. package/src/chart-scale.ts +394 -0
  213. package/src/chart-series-types.test.ts +714 -0
  214. package/src/chart-stats.ts +409 -0
  215. package/src/chart-stream.test.ts +75 -0
  216. package/src/chart-stream.ts +114 -0
  217. package/src/chart-summary.test.ts +90 -0
  218. package/src/chart-summary.ts +197 -0
  219. package/src/chart-sync.svelte.ts +41 -0
  220. package/src/chart-table.test.ts +76 -0
  221. package/src/chart-table.ts +178 -0
  222. package/src/chart-trend.ts +47 -0
  223. package/src/chart-types.ts +1309 -0
  224. package/src/chart-validate.test.ts +100 -0
  225. package/src/chart-validate.ts +247 -0
  226. package/src/chart-zoom.test.ts +137 -0
  227. package/src/chart-zoom.ts +124 -0
  228. package/src/chart.coverage.test.ts +81 -0
  229. package/src/chart.test.ts +56 -3
  230. package/src/chart.ts +557 -2784
  231. package/src/clipboard.test.ts +151 -0
  232. package/src/clipboard.ts +145 -16
  233. package/src/column-resize.ts +7 -1
  234. package/src/columns.ts +2 -0
  235. package/src/command-context.test.ts +200 -0
  236. package/src/command-context.ts +137 -0
  237. package/src/core.ts +7 -0
  238. package/src/editing.test.ts +281 -3
  239. package/src/editing.ts +256 -38
  240. package/src/fill-patterns.test.ts +35 -0
  241. package/src/fill-patterns.ts +56 -2
  242. package/src/grid-messages.ts +16 -3
  243. package/src/history.test.ts +196 -0
  244. package/src/history.ts +162 -0
  245. package/src/icon-seam.test.ts +3 -2
  246. package/src/index.ts +150 -2
  247. package/src/keyboard-handlers.coverage.test.ts +126 -6
  248. package/src/keyboard-handlers.ts +91 -30
  249. package/src/keyboard-shortcuts.seam.test.ts +200 -0
  250. package/src/keyboard.test.ts +124 -1
  251. package/src/keyboard.ts +142 -0
  252. package/src/menus.test.ts +26 -0
  253. package/src/menus.ts +10 -3
  254. package/src/merges.test.ts +112 -0
  255. package/src/merges.ts +168 -0
  256. package/src/pivot.grid.test.ts +40 -5
  257. package/src/row-resize.test.ts +44 -0
  258. package/src/row-resize.ts +17 -0
  259. package/src/scroll-sync.test.ts +42 -1
  260. package/src/scroll-sync.ts +25 -0
  261. package/src/selection.multi-range.test.ts +34 -0
  262. package/src/selection.test.ts +30 -2
  263. package/src/selection.ts +111 -19
  264. package/src/shortcut-registry.test.ts +97 -0
  265. package/src/shortcut-registry.ts +181 -0
  266. package/src/svgrid-wrapper.types.ts +184 -13
  267. package/src/svgrid.behavior.test.ts +135 -0
  268. package/src/svgrid.charting.test.ts +513 -3
  269. package/src/svgrid.context-menu.test.ts +31 -0
  270. package/src/svgrid.new-features.wrapper.test.ts +10 -3
  271. package/src/virtualization/virtualizer.ts +39 -17
  272. package/dist/cdn/GridMenus-DyFA-QxA.js +0 -602
  273. package/dist/cdn/GridMenus-M2XP9t0_.js +0 -603
  274. package/dist/cdn/SvDateTimePicker-CCbDZNZB.js +0 -816
  275. package/dist/cdn/SvGridChart-DAb9RbRs.js +0 -1480
  276. package/dist/cdn/SvGridChart-Yl-IXZFO.js +0 -1481
  277. package/dist/cdn/SvGridChartPanel-DayQpDsR.js +0 -834
  278. package/dist/cdn/SvGridChartPanel-aqf8n-vJ.js +0 -810
  279. package/dist/cdn/SvGridChartView-CxfakxR0.js +0 -56
  280. package/dist/cdn/SvGridChartView-Dm_YEx9L.js +0 -55
  281. package/dist/cdn/chart-CKJRCPOk.js +0 -1652
@@ -0,0 +1,775 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { a as t, i as n, t as r } from "./editor-contract-LXgQJAgd.js";
3
+ import { C as i, M as a, P as o, g as s, i as c, k as l, n as u, t as d } from "./date-format-CtquV-p3.js";
4
+ import { i as f, n as p, r as m } from "./popover-P-9P2YYn.js";
5
+ import { t as h } from "./dismissable-DAHetSNk.js";
6
+ import * as g from "svelte/internal/client";
7
+ import "svelte/internal/disclose-version";
8
+ //#region src/createTimePicker.svelte.ts
9
+ var _ = 240, v = _ / 2, y = 98, b = 62;
10
+ function x(e, t) {
11
+ let n = (e - 90) * Math.PI / 180;
12
+ return {
13
+ x: v + t * Math.cos(n),
14
+ y: v + t * Math.sin(n)
15
+ };
16
+ }
17
+ function S(e) {
18
+ if (e == null) {
19
+ let e = /* @__PURE__ */ new Date();
20
+ return {
21
+ h: e.getHours(),
22
+ m: e.getMinutes()
23
+ };
24
+ }
25
+ if (typeof e == "string") {
26
+ let t = e.match(/^(\d{1,2}):(\d{2})(?::(\d{2}))?/);
27
+ if (t) return {
28
+ h: Math.min(23, +t[1]),
29
+ m: Math.min(59, +t[2])
30
+ };
31
+ let n = new Date(e);
32
+ if (!isNaN(n.getTime())) return {
33
+ h: n.getHours(),
34
+ m: n.getMinutes()
35
+ };
36
+ let r = /* @__PURE__ */ new Date();
37
+ return {
38
+ h: r.getHours(),
39
+ m: r.getMinutes()
40
+ };
41
+ }
42
+ let t = new Date(e);
43
+ return {
44
+ h: t.getHours(),
45
+ m: t.getMinutes()
46
+ };
47
+ }
48
+ function C(e) {
49
+ let t = () => e.format?.() ?? "24-hour", n = () => e.minuteInterval?.() ?? 1, r = () => e.autoSwitchToMinutes?.() ?? !0, i = () => e.disabled?.() ?? !1, a = () => e.readonly?.() ?? !1, o = g.derived(() => t() === "12-hour"), s = g.derived(() => !i() && !a()), c = g.state(0), l = g.state(0), u = g.state("hour"), d = !1, f = "￿";
50
+ g.user_effect(() => {
51
+ let { h: t, m: n } = S(e.value()), r = `${t}:${n}`;
52
+ r !== f && (f = r, g.set(c, t, !0), g.set(l, n, !0), d || (d = !0, g.set(u, e.selection?.() ?? "hour", !0)));
53
+ });
54
+ let p = g.derived(() => g.get(o) ? g.get(c) % 12 == 0 ? 12 : g.get(c) % 12 : g.get(c)), m = g.derived(() => g.get(c) >= 12), h = g.derived(() => String(g.get(l)).padStart(2, "0")), C = g.derived(() => {
55
+ let e = [];
56
+ if (g.get(o)) for (let t = 0; t < 12; t++) {
57
+ let n = t === 0 ? 12 : t, r = x(t * 30, y);
58
+ e.push({
59
+ label: String(n),
60
+ x: r.x,
61
+ y: r.y,
62
+ value: n,
63
+ ring: "outer"
64
+ });
65
+ }
66
+ else for (let t = 0; t < 12; t++) {
67
+ let n = x(t * 30, y), r = x(t * 30, b), i = t + 12, a = t;
68
+ e.push({
69
+ label: String(i).padStart(2, "0"),
70
+ x: n.x,
71
+ y: n.y,
72
+ value: i,
73
+ ring: "outer"
74
+ }), e.push({
75
+ label: a === 0 ? "00" : String(a).padStart(2, "0"),
76
+ x: r.x,
77
+ y: r.y,
78
+ value: a,
79
+ ring: "inner"
80
+ });
81
+ }
82
+ return e;
83
+ }), w = g.derived(() => Array.from({ length: 12 }, (e, t) => {
84
+ let n = t * 5, r = x(t * 30, y);
85
+ return {
86
+ label: String(n).padStart(2, "0"),
87
+ x: r.x,
88
+ y: r.y,
89
+ value: n,
90
+ ring: "outer"
91
+ };
92
+ })), T = g.derived(() => g.get(u) === "hour" ? g.get(o) ? g.get(p) % 12 * 30 : g.get(c) % 12 * 30 : g.get(l) * 6), E = g.derived(() => g.get(u) === "hour" && !g.get(o) && g.get(c) % 12 === g.get(c) && g.get(c) < 12 ? b : y), D = g.derived(() => x(g.get(T), g.get(E)));
93
+ function O() {
94
+ let t = /* @__PURE__ */ new Date();
95
+ t.setHours(g.get(c), g.get(l), 0, 0), e.onChange?.(t);
96
+ }
97
+ let k = (e) => {
98
+ let t = Math.max(1, Math.floor(n()));
99
+ return Math.round(e / t) * t % 60;
100
+ };
101
+ function A(e) {
102
+ g.set(u, e, !0);
103
+ }
104
+ function j(e) {
105
+ g.set(l, k(e), !0), f = `${g.get(c)}:${g.get(l)}`, O();
106
+ }
107
+ function M(e) {
108
+ e !== g.get(m) && (g.set(c, e ? g.get(c) % 12 + 12 : g.get(c) % 12, !0), f = `${g.get(c)}:${g.get(l)}`, O());
109
+ }
110
+ function N(e, t) {
111
+ if (g.get(s)) {
112
+ if (g.get(u) === "hour") {
113
+ let n = Math.round(e / 30) % 12;
114
+ if (g.get(o)) {
115
+ let e = (n === 0 ? 12 : n) % 12;
116
+ g.set(c, g.get(m) ? e + 12 : e, !0);
117
+ } else {
118
+ let e = t < 80;
119
+ g.set(c, e ? n : n + 12, !0);
120
+ }
121
+ f = `${g.get(c)}:${g.get(l)}`, O();
122
+ } else j(Math.round(e / 6) % 60);
123
+ }
124
+ }
125
+ function P() {
126
+ g.get(u) === "hour" && r() && g.set(u, "minute");
127
+ }
128
+ function F(e) {
129
+ if (!g.get(s)) return;
130
+ let t = g.get(u) === "minute" ? Math.max(1, Math.floor(n())) : 1;
131
+ e.key === "ArrowUp" || e.key === "ArrowRight" ? (e.preventDefault(), g.get(u) === "hour" ? g.set(c, (g.get(c) + 1) % 24) : g.set(l, (g.get(l) + t) % 60), f = `${g.get(c)}:${g.get(l)}`, O()) : e.key === "ArrowDown" || e.key === "ArrowLeft" ? (e.preventDefault(), g.get(u) === "hour" ? g.set(c, (g.get(c) + 23) % 24) : g.set(l, (g.get(l) - t + 60) % 60), f = `${g.get(c)}:${g.get(l)}`, O()) : e.key === "Tab" && !e.shiftKey && g.get(u) === "hour" && g.set(u, "minute");
132
+ }
133
+ function I() {
134
+ let e = /* @__PURE__ */ new Date();
135
+ g.set(c, e.getHours(), !0), g.set(l, e.getMinutes(), !0), f = `${g.get(c)}:${g.get(l)}`, O();
136
+ }
137
+ function L(e) {
138
+ return g.get(o) ? e.value === g.get(p) : e.value === g.get(c);
139
+ }
140
+ return {
141
+ SIZE: _,
142
+ C: v,
143
+ get hours() {
144
+ return g.get(c);
145
+ },
146
+ get minutes() {
147
+ return g.get(l);
148
+ },
149
+ get selection() {
150
+ return g.get(u);
151
+ },
152
+ get is12() {
153
+ return g.get(o);
154
+ },
155
+ get isInteractive() {
156
+ return g.get(s);
157
+ },
158
+ get displayHour() {
159
+ return g.get(p);
160
+ },
161
+ get isPm() {
162
+ return g.get(m);
163
+ },
164
+ get mm() {
165
+ return g.get(h);
166
+ },
167
+ get hourTicks() {
168
+ return g.get(C);
169
+ },
170
+ get minuteTicks() {
171
+ return g.get(w);
172
+ },
173
+ get handEnd() {
174
+ return g.get(D);
175
+ },
176
+ isActiveHour: L,
177
+ setSelection: A,
178
+ setMinute: j,
179
+ setAmPm: M,
180
+ pointerSelect: N,
181
+ endPointer: P,
182
+ onKeydown: F,
183
+ now: I,
184
+ segProps(e) {
185
+ return {
186
+ type: "button",
187
+ disabled: i(),
188
+ onclick: () => A(e)
189
+ };
190
+ },
191
+ ampmProps(e) {
192
+ return {
193
+ type: "button",
194
+ disabled: i(),
195
+ onclick: () => M(e)
196
+ };
197
+ },
198
+ dialProps() {
199
+ return {
200
+ role: "slider",
201
+ tabindex: i() ? -1 : 0,
202
+ "aria-label": g.get(u) === "hour" ? "Hour" : "Minute",
203
+ "aria-valuenow": g.get(u) === "hour" ? g.get(c) : g.get(l),
204
+ "aria-valuemin": 0,
205
+ "aria-valuemax": g.get(u) === "hour" ? 23 : 59,
206
+ onkeydown: F
207
+ };
208
+ },
209
+ nowProps() {
210
+ return {
211
+ type: "button",
212
+ disabled: i(),
213
+ onclick: I
214
+ };
215
+ }
216
+ };
217
+ }
218
+ //#endregion
219
+ //#region src/SvTimePicker.svelte
220
+ var w = g.from_html("<div class=\"sv-tp__ampm svelte-1r061pp\"><button> </button> <button> </button></div>"), T = g.from_svg("<text dominant-baseline=\"central\" text-anchor=\"middle\"> </text>"), E = g.from_svg("<text dominant-baseline=\"central\" text-anchor=\"middle\"> </text>"), D = g.from_html("<div class=\"sv-tp__footer svelte-1r061pp\"><button> </button></div>"), O = g.from_html("<input type=\"hidden\"/>"), k = g.from_html("<div role=\"group\"><div class=\"sv-tp__head svelte-1r061pp\"><button> </button> <span class=\"sv-tp__colon svelte-1r061pp\">:</span> <button> </button> <!></div> <svg><circle class=\"sv-tp__face svelte-1r061pp\"></circle><line class=\"sv-tp__hand svelte-1r061pp\"></line><circle class=\"sv-tp__hub svelte-1r061pp\" r=\"3\"></circle><circle class=\"sv-tp__knob svelte-1r061pp\" r=\"15\"></circle><!></svg> <!> <!></div>"), A = {
221
+ hash: "svelte-1r061pp",
222
+ code: ".sv-tp.svelte-1r061pp {--_accent: var(--sg-accent, #2563eb);--_bg: var(--sg-bg, #fff);--_fg: var(--sg-fg, #0f172a);--_muted: var(--sg-muted, #64748b);--_border: var(--sg-border, #e2e8f0);--_face: var(--sg-header-bg, #f1f5f9);--_radius: var(--sg-radius, 8px);display:inline-flex;flex-direction:column;gap:10px;align-items:center;width:260px;padding:12px;background:var(--_bg);color:var(--_fg);border:1px solid var(--_border);border-radius:calc(var(--_radius) + 4px);user-select:none;}.sv-tp--invalid.svelte-1r061pp {border-color:var(--sg-danger, #dc2626);}.sv-tp--disabled.svelte-1r061pp {opacity:0.55;pointer-events:none;}.sv-tp__head.svelte-1r061pp {display:flex;align-items:center;gap:2px;font-variant-numeric:tabular-nums;}.sv-tp__seg.svelte-1r061pp {font-size:30px;font-weight:700;line-height:1;background:none;border:0;color:var(--_muted);cursor:pointer;padding:2px 6px;border-radius:var(--_radius);}.sv-tp__seg.is-active.svelte-1r061pp {color:var(--_accent);background:color-mix(in srgb, var(--_accent) 12%, transparent);}.sv-tp__colon.svelte-1r061pp {font-size:28px;font-weight:700;color:var(--_muted);}.sv-tp__ampm.svelte-1r061pp {display:flex;flex-direction:column;margin-inline-start:8px;gap:2px;}.sv-tp__ampm.svelte-1r061pp button:where(.svelte-1r061pp) {font-size:11px;font-weight:700;padding:3px 8px;background:none;border:1px solid var(--_border);border-radius:6px;color:var(--_muted);cursor:pointer;}.sv-tp__ampm.svelte-1r061pp button.is-active:where(.svelte-1r061pp) {background:var(--_accent);color:var(--sg-on-accent, #fff);border-color:var(--_accent);}.sv-tp__dial.svelte-1r061pp {touch-action:none;cursor:pointer;outline:none;display:block;width:100%;height:auto;aspect-ratio:1;}.sv-tp__dial.svelte-1r061pp:focus-visible {outline:2px solid var(--sg-focus-ring, var(--_accent));outline-offset:2px;border-radius:50%;}.sv-tp__face.svelte-1r061pp {fill:var(--_face);}.sv-tp__hand.svelte-1r061pp {stroke:var(--_accent);stroke-width:2;}.sv-tp__hub.svelte-1r061pp {fill:var(--_accent);}.sv-tp__knob.svelte-1r061pp {fill:var(--_accent);opacity:0.9;}.sv-tp__num.svelte-1r061pp {font-size:13px;fill:var(--_fg);pointer-events:none;font-family:inherit;}.sv-tp__num.is-inner.svelte-1r061pp {font-size:11px;fill:var(--_muted);}.sv-tp__num.is-active.svelte-1r061pp {fill:var(--sg-on-accent, #fff);font-weight:700;}.sv-tp__footer.svelte-1r061pp {width:100%;display:flex;justify-content:center;border-top:1px solid var(--_border);padding-top:8px;}.sv-tp__now.svelte-1r061pp {padding:5px 14px;font:inherit;font-size:12px;font-weight:600;background:none;border:1px solid var(--_border);border-radius:var(--_radius);color:var(--_accent);cursor:pointer;}.sv-tp__now.svelte-1r061pp:hover {background:color-mix(in srgb, var(--_accent) 10%, transparent);}"
223
+ };
224
+ function j(e, r) {
225
+ g.push(r, !0), g.append_styles(e, A);
226
+ let i = (e) => {
227
+ var t = k();
228
+ let n;
229
+ var i = g.child(t), a = g.child(i);
230
+ g.attribute_effect(a, (e) => ({
231
+ class: "sv-tp__seg",
232
+ ...e,
233
+ [g.CLASS]: { "is-active": j.selection === "hour" }
234
+ }), [() => j.segProps("hour")], void 0, void 0, "svelte-1r061pp");
235
+ var o = g.child(a, !0);
236
+ g.reset(a);
237
+ var s = g.sibling(a, 4);
238
+ g.attribute_effect(s, (e) => ({
239
+ class: "sv-tp__seg",
240
+ ...e,
241
+ [g.CLASS]: { "is-active": j.selection === "minute" }
242
+ }), [() => j.segProps("minute")], void 0, void 0, "svelte-1r061pp");
243
+ var c = g.child(s, !0);
244
+ g.reset(s);
245
+ var l = g.sibling(s, 2), u = (e) => {
246
+ var t = w(), n = g.child(t);
247
+ g.attribute_effect(n, (e) => ({
248
+ ...e,
249
+ [g.CLASS]: { "is-active": !j.isPm }
250
+ }), [() => j.ampmProps(!1)], void 0, void 0, "svelte-1r061pp");
251
+ var r = g.child(n, !0);
252
+ g.reset(n);
253
+ var i = g.sibling(n, 2);
254
+ g.attribute_effect(i, (e) => ({
255
+ ...e,
256
+ [g.CLASS]: { "is-active": j.isPm }
257
+ }), [() => j.ampmProps(!0)], void 0, void 0, "svelte-1r061pp");
258
+ var a = g.child(i, !0);
259
+ g.reset(i), g.reset(t), g.template_effect(() => {
260
+ g.set_text(r, g.get(x).am), g.set_text(a, g.get(x).pm);
261
+ }), g.append(e, t);
262
+ };
263
+ g.if(l, (e) => {
264
+ j.is12 && e(u);
265
+ }), g.reset(i);
266
+ var p = g.sibling(i, 2);
267
+ g.attribute_effect(p, (e) => ({
268
+ class: "sv-tp__dial",
269
+ viewBox: `0 0 ${j.SIZE} ${j.SIZE}`,
270
+ width: "100%",
271
+ ...e,
272
+ onpointerdown: F,
273
+ onpointermove: I,
274
+ onpointerup: L,
275
+ onpointercancel: L
276
+ }), [() => j.dialProps()], void 0, void 0, "svelte-1r061pp");
277
+ var m = g.child(p), h = g.sibling(m), v = g.sibling(h), b = g.sibling(v), C = g.sibling(b), A = (e) => {
278
+ var t = g.comment(), n = g.first_child(t);
279
+ g.each(n, 17, () => j.hourTicks, (e) => e.ring + "-" + e.value, (e, t) => {
280
+ var n = T();
281
+ let r;
282
+ var i = g.child(n, !0);
283
+ g.reset(n), g.template_effect((e) => {
284
+ r = g.set_class(n, 0, "sv-tp__num svelte-1r061pp", null, r, e), g.set_attribute(n, "x", g.get(t).x), g.set_attribute(n, "y", g.get(t).y), g.set_text(i, g.get(t).label);
285
+ }, [() => ({
286
+ "is-active": j.isActiveHour(g.get(t)),
287
+ "is-inner": g.get(t).ring === "inner"
288
+ })]), g.append(e, n);
289
+ }), g.append(e, t);
290
+ }, N = (e) => {
291
+ var t = g.comment(), n = g.first_child(t);
292
+ g.each(n, 17, () => j.minuteTicks, (e) => e.value, (e, t) => {
293
+ var n = E();
294
+ let r;
295
+ var i = g.child(n, !0);
296
+ g.reset(n), g.template_effect(() => {
297
+ r = g.set_class(n, 0, "sv-tp__num svelte-1r061pp", null, r, { "is-active": g.get(t).value === j.minutes }), g.set_attribute(n, "x", g.get(t).x), g.set_attribute(n, "y", g.get(t).y), g.set_text(i, g.get(t).label);
298
+ }), g.append(e, n);
299
+ }), g.append(e, t);
300
+ };
301
+ g.if(C, (e) => {
302
+ j.selection === "hour" ? e(A) : e(N, -1);
303
+ }), g.reset(p), g.bind_this(p, (e) => M = e, () => M);
304
+ var P = g.sibling(p, 2), R = (e) => {
305
+ var t = D(), n = g.child(t);
306
+ g.attribute_effect(n, (e) => ({
307
+ class: "sv-tp__now",
308
+ ...e
309
+ }), [() => j.nowProps()], void 0, void 0, "svelte-1r061pp");
310
+ var r = g.child(n, !0);
311
+ g.reset(n), g.reset(t), g.template_effect(() => g.set_text(r, g.get(x).now)), g.append(e, t);
312
+ };
313
+ g.if(P, (e) => {
314
+ d() && e(R);
315
+ });
316
+ var z = g.sibling(P, 2), B = (e) => {
317
+ var t = O();
318
+ g.remove_input_defaults(t), g.template_effect((e) => {
319
+ g.set_attribute(t, "name", r.name), g.set_value(t, e);
320
+ }, [() => `${String(j.hours).padStart(2, "0")}:${j.mm}`]), g.append(e, t);
321
+ };
322
+ g.if(z, (e) => {
323
+ r.name && e(B);
324
+ }), g.reset(t), g.template_effect((e) => {
325
+ n = g.set_class(t, 1, "sv-tp svelte-1r061pp", null, n, {
326
+ "sv-tp--disabled": f(),
327
+ "sv-tp--invalid": _()
328
+ }), g.set_attribute(t, "id", g.get(y)), g.set_attribute(t, "aria-label", r.label ?? g.get(x).label), g.set_attribute(t, "dir", g.get(S)), g.set_text(o, e), g.set_text(c, j.mm), g.set_attribute(m, "cx", j.C), g.set_attribute(m, "cy", j.C), g.set_attribute(m, "r", j.C - 4), g.set_attribute(h, "x1", j.C), g.set_attribute(h, "y1", j.C), g.set_attribute(h, "x2", j.handEnd.x), g.set_attribute(h, "y2", j.handEnd.y), g.set_attribute(v, "cx", j.C), g.set_attribute(v, "cy", j.C), g.set_attribute(b, "cx", j.handEnd.x), g.set_attribute(b, "cy", j.handEnd.y), t.dir = t.dir;
329
+ }, [() => String(j.displayHour).padStart(2, "0")]), g.append(e, t);
330
+ }, a = {
331
+ label: "Time picker",
332
+ am: "AM",
333
+ pm: "PM",
334
+ now: "Now"
335
+ }, o = g.prop(r, "value", 3, null), c = g.prop(r, "format", 3, "24-hour"), l = g.prop(r, "minuteInterval", 3, 1), u = g.prop(r, "autoSwitchToMinutes", 3, !0), d = g.prop(r, "footer", 3, !1), f = g.prop(r, "disabled", 3, !1), p = g.prop(r, "readonly", 3, !1), m = g.prop(r, "selection", 3, "hour"), h = g.prop(r, "required", 3, !1), _ = g.prop(r, "invalid", 3, !1), v = n("sv-tp"), y = g.derived(() => r.id ?? v), b = g.derived(() => !!(r.label || r.hint || r.error)), x = g.derived(() => t(a, r.messages)), S = g.derived(() => r.dir === "ltr" || r.dir === "rtl" ? r.dir : void 0), j = C({
336
+ value: () => o(),
337
+ onChange: (e) => r.onChange?.(e),
338
+ format: () => c(),
339
+ minuteInterval: () => l(),
340
+ autoSwitchToMinutes: () => u(),
341
+ disabled: () => f(),
342
+ readonly: () => p(),
343
+ selection: () => m()
344
+ }), M = null, N = !1;
345
+ function P(e) {
346
+ let t = M.getBoundingClientRect(), n = j.SIZE / t.width, r = (e.clientX - t.left) * n - j.C, i = (e.clientY - t.top) * n - j.C, a = Math.atan2(i, r) * 180 / Math.PI + 90;
347
+ return a < 0 && (a += 360), {
348
+ angle: a,
349
+ dist: Math.hypot(r, i)
350
+ };
351
+ }
352
+ function F(e) {
353
+ if (!j.isInteractive) return;
354
+ N = !0, M?.setPointerCapture(e.pointerId);
355
+ let { angle: t, dist: n } = P(e);
356
+ j.pointerSelect(t, n);
357
+ }
358
+ function I(e) {
359
+ if (!N) return;
360
+ let { angle: t, dist: n } = P(e);
361
+ j.pointerSelect(t, n);
362
+ }
363
+ function L(e) {
364
+ N && (N = !1, M?.releasePointerCapture(e.pointerId), j.endPointer());
365
+ }
366
+ var R = g.comment(), z = g.first_child(R), B = (e) => {
367
+ s(e, {
368
+ get id() {
369
+ return g.get(y);
370
+ },
371
+ get label() {
372
+ return r.label;
373
+ },
374
+ get hint() {
375
+ return r.hint;
376
+ },
377
+ get error() {
378
+ return r.error;
379
+ },
380
+ get required() {
381
+ return h();
382
+ },
383
+ get dir() {
384
+ return r.dir;
385
+ },
386
+ children: (e, t) => {
387
+ i(e);
388
+ },
389
+ $$slots: { default: !0 }
390
+ });
391
+ }, V = (e) => {
392
+ i(e);
393
+ };
394
+ g.if(z, (e) => {
395
+ g.get(b) ? e(B) : e(V, -1);
396
+ }), g.append(e, R), g.pop();
397
+ }
398
+ //#endregion
399
+ //#region src/createDateTimePicker.svelte.ts
400
+ var M = () => typeof navigator < "u" ? navigator.language : "en-US";
401
+ function N(e) {
402
+ let t = () => e.formatString?.() ?? "yyyy-MM-dd HH:mm", n = () => e.nullable?.() ?? !0, s = () => e.locale?.() ?? M(), c = () => e.dropDownDisplayMode?.() ?? "both", f = () => e.spinButtons?.() ?? !1, p = () => e.stepMinutes?.() ?? 1, m = () => e.disabled?.() ?? !1, h = () => e.readonly?.() ?? !1, _ = g.derived(() => !m() && !h()), v = g.derived(() => a(e.min?.() ?? null)), y = g.derived(() => a(e.max?.() ?? null)), b = g.state(null), x = g.state(""), S = "￿";
403
+ g.user_effect(() => {
404
+ let n = a(e.value()), r = n ? String(n.getTime()) : "null";
405
+ r !== S && (S = r, g.set(b, n, !0), g.set(x, n ? d(n, t(), s()) : "", !0));
406
+ });
407
+ let C = g.state(!1), w = g.state("date"), T = g.derived(() => c() !== "time"), E = g.derived(() => c() !== "calendar");
408
+ function D(n) {
409
+ let r = n ? i(n, g.get(v), g.get(y)) : null;
410
+ g.set(b, r, !0), S = r ? String(r.getTime()) : "null", g.set(x, r ? d(r, t(), s()) : "", !0), e.onChange?.(r);
411
+ }
412
+ function O() {
413
+ let e = g.get(x).trim();
414
+ if (!e) {
415
+ n() ? D(null) : g.set(x, g.get(b) ? d(g.get(b), t(), s()) : "", !0);
416
+ return;
417
+ }
418
+ let r = u(e, t(), s(), 2029, g.get(b) ?? /* @__PURE__ */ new Date());
419
+ r ? D(r) : g.set(x, g.get(b) ? d(g.get(b), t(), s()) : "", !0);
420
+ }
421
+ function k(e) {
422
+ let t = g.get(b) ?? /* @__PURE__ */ new Date();
423
+ D(new Date(t.getTime() + e * 6e4));
424
+ }
425
+ function A(t) {
426
+ let n = t[0];
427
+ n && (D(o(n, g.get(b) ?? l(n))), c() === "calendar" ? (g.set(C, !1), e.onCommit?.(g.get(b))) : c() === "both" && g.set(w, "time"));
428
+ }
429
+ function j(e) {
430
+ let t = g.get(b) ?? /* @__PURE__ */ new Date();
431
+ D(o(t, e));
432
+ }
433
+ function N() {
434
+ !g.get(_) || g.get(C) || (g.set(w, c() === "time" ? "time" : "date", !0), g.set(C, !0));
435
+ }
436
+ function P() {
437
+ g.set(C, !1);
438
+ }
439
+ function F() {
440
+ (g.get(C) ? P : N)();
441
+ }
442
+ function I(e) {
443
+ g.set(w, e, !0);
444
+ }
445
+ function L(t) {
446
+ t.key === "Enter" ? (t.preventDefault(), O(), P(), e.onCommit?.(g.get(b))) : t.key === "Escape" ? (P(), e.onCancel?.()) : t.key === "ArrowDown" && (t.altKey || !g.get(x)) ? (t.preventDefault(), N()) : f() && t.key === "ArrowUp" ? (t.preventDefault(), k(p())) : f() && t.key === "ArrowDown" && (t.preventDefault(), k(-p()));
447
+ }
448
+ return {
449
+ get current() {
450
+ return g.get(b);
451
+ },
452
+ get text() {
453
+ return g.get(x);
454
+ },
455
+ set text(e) {
456
+ g.set(x, e, !0);
457
+ },
458
+ get open() {
459
+ return g.get(C);
460
+ },
461
+ get tab() {
462
+ return g.get(w);
463
+ },
464
+ get isInteractive() {
465
+ return g.get(_);
466
+ },
467
+ get showDateTab() {
468
+ return g.get(T);
469
+ },
470
+ get showTimeTab() {
471
+ return g.get(E);
472
+ },
473
+ commit: D,
474
+ commitFromText: O,
475
+ bump: k,
476
+ onCalendarChange: A,
477
+ onTimeChange: j,
478
+ openPanel: N,
479
+ closePanel: P,
480
+ toggle: F,
481
+ setTab: I,
482
+ onInputKeydown: L,
483
+ inputProps() {
484
+ return {
485
+ id: e.id?.(),
486
+ type: "text",
487
+ disabled: m(),
488
+ readonly: h(),
489
+ ...r({
490
+ id: e.id?.(),
491
+ invalid: e.invalid?.(),
492
+ required: e.required?.(),
493
+ error: e.error?.(),
494
+ hint: e.hint?.(),
495
+ ariaLabel: e.ariaLabel?.()
496
+ }),
497
+ onblur: O,
498
+ onkeydown: L
499
+ };
500
+ },
501
+ toggleProps() {
502
+ return {
503
+ type: "button",
504
+ "aria-label": e.toggleLabel?.() ?? "Open picker",
505
+ "aria-haspopup": "dialog",
506
+ "aria-expanded": g.get(C),
507
+ disabled: !g.get(_),
508
+ tabindex: -1,
509
+ onclick: F
510
+ };
511
+ },
512
+ clearProps() {
513
+ return {
514
+ type: "button",
515
+ "aria-label": e.clearLabel?.() ?? "Clear",
516
+ onclick: () => D(null)
517
+ };
518
+ },
519
+ spinProps(e) {
520
+ return {
521
+ type: "button",
522
+ tabindex: -1,
523
+ "aria-label": e === 1 ? "Increment" : "Decrement",
524
+ disabled: !g.get(_),
525
+ onclick: () => k(e * p())
526
+ };
527
+ },
528
+ tabProps(e) {
529
+ return {
530
+ type: "button",
531
+ role: "tab",
532
+ "aria-selected": g.get(w) === e,
533
+ onclick: () => I(e)
534
+ };
535
+ }
536
+ };
537
+ }
538
+ //#endregion
539
+ //#region src/SvDateTimePicker.svelte
540
+ var P = /* @__PURE__ */ e({ default: () => H }), F = g.from_html("<div class=\"sv-dtp__spin svelte-pd5igp\"><button>▲</button> <button>▼</button></div>"), I = g.from_html("<button>&times;</button>"), L = g.from_html("<div class=\"sv-dtp__tabs\" role=\"tablist\"><button> </button> <button> </button></div>"), R = g.from_html("<div class=\"sv-dtp__panel\" role=\"dialog\"><!> <div class=\"sv-dtp__body\"><!></div></div>"), z = g.from_html("<input type=\"hidden\"/>"), B = g.from_html("<div><div><!> <input/> <!> <button><svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"></rect><path d=\"M16 2v4M8 2v4M3 10h18\"></path></svg></button></div> <!> <!></div>"), V = {
541
+ hash: "svelte-pd5igp",
542
+ code: ".sv-dtp.svelte-pd5igp {--_accent: var(--sg-accent, #2563eb);--_bg: var(--sg-input-bg, var(--sg-bg, #fff));--_fg: var(--sg-fg, #0f172a);--_muted: var(--sg-muted, #64748b);--_border: var(--sg-input-border, var(--sg-border, #cbd5e1));--_radius: var(--sg-radius, 8px);display:inline-block;position:relative;width:240px;color:var(--_fg);}\n /* Fill the container (grid cell editor) instead of the fixed default width. */.sv-dtp--block.svelte-pd5igp {display:block;width:100%;}.sv-dtp--disabled.svelte-pd5igp {opacity:0.6;}.sv-dtp__field.svelte-pd5igp {display:flex;align-items:center;gap:2px;background:var(--_bg);border:1px solid var(--_border);border-radius:var(--_radius);padding-block:0;padding-inline:0 4px;height:34px;}.sv-dtp__field.svelte-pd5igp:focus-within {border-color:var(--_accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--_accent) 22%, transparent);}.sv-dtp__field.is-invalid.svelte-pd5igp {border-color:var(--sg-danger, #dc2626);}.sv-dtp__field.is-invalid.svelte-pd5igp:focus-within {box-shadow:0 0 0 2px color-mix(in srgb, var(--sg-danger, #dc2626) 22%, transparent);}.sv-dtp__input.svelte-pd5igp {flex:1;min-width:0;border:0;background:none;outline:none;color:inherit;font:inherit;font-size:13px;padding:0 8px;height:100%;}.sv-dtp__spin.svelte-pd5igp {display:flex;flex-direction:column;border-inline-end:1px solid var(--_border);}.sv-dtp__spin.svelte-pd5igp button:where(.svelte-pd5igp) {flex:1;width:20px;border:0;background:none;color:var(--_muted);cursor:pointer;font-size:7px;line-height:1;padding:0;}.sv-dtp__spin.svelte-pd5igp button:where(.svelte-pd5igp):hover:not(:disabled) {color:var(--_accent);}.sv-dtp__clear.svelte-pd5igp, .sv-dtp__toggle.svelte-pd5igp {display:grid;place-items:center;width:26px;height:26px;flex:none;background:none;border:0;color:var(--_muted);cursor:pointer;border-radius:6px;}.sv-dtp__clear.svelte-pd5igp {font-size:17px;line-height:1;}.sv-dtp__clear.svelte-pd5igp:hover, .sv-dtp__toggle.svelte-pd5igp:hover {color:var(--_accent);background:color-mix(in srgb, var(--_accent) 10%, transparent);}\n\n /* Portalled panel - lives under <body>, styled globally. */.sv-dtp__panel {z-index:2147483647;background:var(--sg-bg, #fff);border:1px solid var(--sg-border, #e2e8f0);border-radius:12px;box-shadow:0 16px 48px -12px rgba(15, 23, 42, 0.35);overflow:hidden;}.sv-dtp__tabs {display:flex;border-bottom:1px solid var(--sg-border, #e2e8f0);}.sv-dtp__tabs button {flex:1;padding:9px;font:inherit;font-size:11px;font-weight:700;letter-spacing:0.04em;background:none;border:0;color:var(--sg-muted, #64748b);cursor:pointer;border-bottom:2px solid transparent;}.sv-dtp__tabs button.is-active {color:var(--sg-accent, #2563eb);border-bottom-color:var(--sg-accent, #2563eb);}.sv-dtp__body {display:grid;place-items:center;padding:8px;}"
543
+ };
544
+ function H(e, r) {
545
+ g.push(r, !0), g.append_styles(e, V);
546
+ let i = {
547
+ dialog: "Choose date and time",
548
+ date: "DATE",
549
+ time: "TIME",
550
+ clear: "Clear",
551
+ open: "Open picker"
552
+ }, a = g.prop(r, "value", 3, null), o = g.prop(r, "formatString", 3, "yyyy-MM-dd HH:mm"), l = g.prop(r, "min", 3, null), u = g.prop(r, "max", 3, null), d = g.prop(r, "nullable", 3, !0), _ = g.prop(r, "placeholder", 3, "Select date & time"), v = g.prop(r, "disabled", 3, !1), y = g.prop(r, "readonly", 3, !1), b = g.prop(r, "locale", 19, () => typeof navigator < "u" ? navigator.language : "en-US"), x = g.prop(r, "firstDayOfWeek", 3, 0), S = g.prop(r, "weekNumbers", 3, !1), C = g.prop(r, "hourFormat", 3, "24-hour"), w = g.prop(r, "minuteInterval", 3, 1), T = g.prop(r, "dropDownDisplayMode", 3, "both"), E = g.prop(r, "spinButtons", 3, !1), D = g.prop(r, "stepMinutes", 3, 1), O = g.prop(r, "autoOpen", 3, !1), k = g.prop(r, "block", 3, !1), A = g.prop(r, "animate", 3, !1), M = g.prop(r, "invalid", 3, !1), P = g.prop(r, "required", 3, !1), H = n("sv-dtp"), U = g.derived(() => r.id ?? H), W = g.derived(() => t(i, r.messages)), G = g.derived(() => r.dir === "ltr" || r.dir === "rtl" ? r.dir : void 0), K = N({
553
+ value: () => a(),
554
+ onChange: (e) => r.onChange?.(e),
555
+ onCommit: (e) => r.onCommit?.(e),
556
+ onCancel: () => r.onCancel?.(),
557
+ formatString: () => o(),
558
+ min: () => l(),
559
+ max: () => u(),
560
+ nullable: () => d(),
561
+ locale: () => b(),
562
+ dropDownDisplayMode: () => T(),
563
+ spinButtons: () => E(),
564
+ stepMinutes: () => D(),
565
+ disabled: () => v(),
566
+ readonly: () => y(),
567
+ toggleLabel: () => g.get(W).open,
568
+ clearLabel: () => g.get(W).clear,
569
+ id: () => g.get(U),
570
+ invalid: () => M(),
571
+ required: () => P(),
572
+ error: () => r.error,
573
+ hint: () => r.hint,
574
+ ariaLabel: () => r.ariaLabel
575
+ }), q = g.state(null), J = g.state(null), Y = g.state(g.proxy({
576
+ top: 0,
577
+ left: 0,
578
+ width: 0,
579
+ openUpward: !1,
580
+ maxHeight: 0,
581
+ availHeight: 0
582
+ }));
583
+ function X() {
584
+ g.get(q) && g.set(Y, p(g.get(q).getBoundingClientRect(), {
585
+ estimatedHeight: 360,
586
+ minWidth: 300
587
+ }), !0);
588
+ }
589
+ g.user_effect(() => {
590
+ if (!K.open) return;
591
+ X();
592
+ let e = () => X();
593
+ window.addEventListener("scroll", e, !0), window.addEventListener("resize", e);
594
+ let t = h({
595
+ element: () => [g.get(q), g.get(J)],
596
+ onDismiss: () => K.closePanel(),
597
+ closeOnEscape: !1
598
+ });
599
+ return t.activate(), () => {
600
+ window.removeEventListener("scroll", e, !0), window.removeEventListener("resize", e), t.release();
601
+ };
602
+ });
603
+ function Z(e) {
604
+ O() && (e.focus(), K.openPanel());
605
+ }
606
+ function Q(e) {
607
+ let t = e.relatedTarget;
608
+ t && (g.get(q)?.contains(t) || g.get(J)?.contains(t)) || r.onCommit?.(K.current);
609
+ }
610
+ s(e, {
611
+ get id() {
612
+ return g.get(U);
613
+ },
614
+ get label() {
615
+ return r.label;
616
+ },
617
+ get hint() {
618
+ return r.hint;
619
+ },
620
+ get error() {
621
+ return r.error;
622
+ },
623
+ get required() {
624
+ return P();
625
+ },
626
+ get dir() {
627
+ return r.dir;
628
+ },
629
+ get block() {
630
+ return k();
631
+ },
632
+ children: (e, t) => {
633
+ var n = B();
634
+ let i;
635
+ var a = g.child(n);
636
+ let o;
637
+ var s = g.child(a), p = (e) => {
638
+ var t = F(), n = g.child(t);
639
+ g.attribute_effect(n, (e) => ({ ...e }), [() => K.spinProps(1)], void 0, void 0, "svelte-pd5igp");
640
+ var r = g.sibling(n, 2);
641
+ g.attribute_effect(r, (e) => ({ ...e }), [() => K.spinProps(-1)], void 0, void 0, "svelte-pd5igp"), g.reset(t), g.append(e, t);
642
+ };
643
+ g.if(s, (e) => {
644
+ E() && e(p);
645
+ });
646
+ var h = g.sibling(s, 2);
647
+ g.attribute_effect(h, (e) => ({
648
+ class: "sv-dtp__input",
649
+ placeholder: _(),
650
+ ...e
651
+ }), [() => K.inputProps()], void 0, void 0, "svelte-pd5igp", !0), g.effect(() => g.bind_value(h, () => K.text, (e) => K.text = e)), g.action(h, (e) => Z?.(e));
652
+ var y = g.sibling(h, 2), T = (e) => {
653
+ var t = I();
654
+ g.attribute_effect(t, (e) => ({
655
+ class: "sv-dtp__clear",
656
+ ...e
657
+ }), [() => K.clearProps()], void 0, void 0, "svelte-pd5igp"), g.append(e, t);
658
+ };
659
+ g.if(y, (e) => {
660
+ d() && K.current && K.isInteractive && e(T);
661
+ });
662
+ var D = g.sibling(y, 2);
663
+ g.attribute_effect(D, (e) => ({
664
+ class: "sv-dtp__toggle",
665
+ ...e
666
+ }), [() => K.toggleProps()], void 0, void 0, "svelte-pd5igp"), g.reset(a), g.bind_this(a, (e) => g.set(q, e), () => g.get(q));
667
+ var O = g.sibling(a, 2), N = (e) => {
668
+ var t = R();
669
+ let n;
670
+ var r = g.child(t), i = (e) => {
671
+ var t = L(), n = g.child(t);
672
+ g.attribute_effect(n, (e) => ({
673
+ ...e,
674
+ [g.CLASS]: { "is-active": K.tab === "date" }
675
+ }), [() => K.tabProps("date")], void 0, void 0, "svelte-pd5igp");
676
+ var r = g.child(n, !0);
677
+ g.reset(n);
678
+ var i = g.sibling(n, 2);
679
+ g.attribute_effect(i, (e) => ({
680
+ ...e,
681
+ [g.CLASS]: { "is-active": K.tab === "time" }
682
+ }), [() => K.tabProps("time")], void 0, void 0, "svelte-pd5igp");
683
+ var a = g.child(i, !0);
684
+ g.reset(i), g.reset(t), g.template_effect(() => {
685
+ g.set_text(r, g.get(W).date), g.set_text(a, g.get(W).time);
686
+ }), g.append(e, t);
687
+ };
688
+ g.if(r, (e) => {
689
+ K.showDateTab && K.showTimeTab && e(i);
690
+ });
691
+ var a = g.sibling(r, 2), o = g.child(a), s = (e) => {
692
+ c(e, {
693
+ get value() {
694
+ return K.current;
695
+ },
696
+ selectionMode: "one",
697
+ get min() {
698
+ return l();
699
+ },
700
+ get max() {
701
+ return u();
702
+ },
703
+ get firstDayOfWeek() {
704
+ return x();
705
+ },
706
+ get weekNumbers() {
707
+ return S();
708
+ },
709
+ get locale() {
710
+ return b();
711
+ },
712
+ get animate() {
713
+ return A();
714
+ },
715
+ get dir() {
716
+ return g.get(G);
717
+ },
718
+ get onChange() {
719
+ return K.onCalendarChange;
720
+ }
721
+ });
722
+ }, d = (e) => {
723
+ j(e, {
724
+ get value() {
725
+ return K.current;
726
+ },
727
+ get format() {
728
+ return C();
729
+ },
730
+ get minuteInterval() {
731
+ return w();
732
+ },
733
+ footer: !0,
734
+ get dir() {
735
+ return g.get(G);
736
+ },
737
+ get onChange() {
738
+ return K.onTimeChange;
739
+ }
740
+ });
741
+ };
742
+ g.if(o, (e) => {
743
+ K.tab === "date" && K.showDateTab ? e(s) : K.showTimeTab && e(d, 1);
744
+ }), g.reset(a), g.reset(t), g.bind_this(t, (e) => g.set(J, e), () => g.get(J)), g.action(t, (e) => f?.(e)), g.action(t, (e, t) => m?.(e, t), () => ({ up: g.get(Y).openUpward })), g.template_effect(() => {
745
+ g.set_attribute(t, "aria-label", g.get(W).dialog), g.set_attribute(t, "dir", g.get(G)), n = g.set_style(t, "", n, {
746
+ position: "fixed",
747
+ top: `${g.get(Y).top}px`,
748
+ left: `${g.get(Y).left}px`
749
+ }), t.dir = t.dir;
750
+ }), g.append(e, t);
751
+ };
752
+ g.if(O, (e) => {
753
+ K.open && e(N);
754
+ });
755
+ var P = g.sibling(O, 2), V = (e) => {
756
+ var t = z();
757
+ g.remove_input_defaults(t), g.template_effect((e) => {
758
+ g.set_attribute(t, "name", r.name), g.set_value(t, e);
759
+ }, [() => K.current ? K.current.toISOString() : ""]), g.append(e, t);
760
+ };
761
+ g.if(P, (e) => {
762
+ r.name && e(V);
763
+ }), g.reset(n), g.template_effect(() => {
764
+ i = g.set_class(n, 1, "sv-dtp svelte-pd5igp", null, i, {
765
+ "sv-dtp--disabled": v(),
766
+ "sv-dtp--block": k()
767
+ }), g.set_attribute(n, "dir", g.get(G)), o = g.set_class(a, 1, "sv-dtp__field svelte-pd5igp", null, o, { "is-invalid": M() }), n.dir = n.dir;
768
+ }), g.delegated("focusout", n, Q), g.append(e, n);
769
+ },
770
+ $$slots: { default: !0 }
771
+ }), g.pop();
772
+ }
773
+ g.delegate(["focusout"]);
774
+ //#endregion
775
+ export { C as a, j as i, P as n, S as o, N as r, H as t };