asterui 0.12.1 → 0.12.2

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 (293) hide show
  1. package/dist/components/Calendar.d.ts +23 -0
  2. package/dist/components/Checkbox.d.ts +10 -0
  3. package/dist/components/Dock.d.ts +38 -0
  4. package/dist/components/Mask.d.ts +14 -0
  5. package/dist/index.css +1 -0
  6. package/dist/index.d.ts +8 -1
  7. package/dist/index.js +203 -194
  8. package/dist/index.js.map +1 -1
  9. package/dist/index10.js +85 -59
  10. package/dist/index10.js.map +1 -1
  11. package/dist/index100.js +45 -7
  12. package/dist/index100.js.map +1 -1
  13. package/dist/index101.js +11 -11
  14. package/dist/index101.js.map +1 -1
  15. package/dist/index102.js +12 -28
  16. package/dist/index102.js.map +1 -1
  17. package/dist/index103.js +7 -17
  18. package/dist/index103.js.map +1 -1
  19. package/dist/index104.js +12 -10792
  20. package/dist/index104.js.map +1 -1
  21. package/dist/index105.js +31 -5
  22. package/dist/index105.js.map +1 -1
  23. package/dist/index106.js +16 -40
  24. package/dist/index106.js.map +1 -1
  25. package/dist/index107.js +174 -2
  26. package/dist/index107.js.map +1 -1
  27. package/dist/index109.js +10788 -147
  28. package/dist/index109.js.map +1 -1
  29. package/dist/index110.js +5 -30
  30. package/dist/index110.js.map +1 -1
  31. package/dist/index111.js +39 -27
  32. package/dist/index111.js.map +1 -1
  33. package/dist/index113.js +6 -71
  34. package/dist/index113.js.map +1 -1
  35. package/dist/index114.js +147 -34
  36. package/dist/index114.js.map +1 -1
  37. package/dist/index115.js +28 -24
  38. package/dist/index115.js.map +1 -1
  39. package/dist/index116.js +28 -19
  40. package/dist/index116.js.map +1 -1
  41. package/dist/index117.js +2 -24
  42. package/dist/index117.js.map +1 -1
  43. package/dist/index118.js +71 -19
  44. package/dist/index118.js.map +1 -1
  45. package/dist/index119.js +33 -94
  46. package/dist/index119.js.map +1 -1
  47. package/dist/index120.js +24 -358
  48. package/dist/index120.js.map +1 -1
  49. package/dist/index121.js +19 -23
  50. package/dist/index121.js.map +1 -1
  51. package/dist/index122.js +22 -71
  52. package/dist/index122.js.map +1 -1
  53. package/dist/index123.js +18 -14
  54. package/dist/index123.js.map +1 -1
  55. package/dist/index124.js +92 -58
  56. package/dist/index124.js.map +1 -1
  57. package/dist/index125.js +357 -141
  58. package/dist/index125.js.map +1 -1
  59. package/dist/index126.js +25 -2
  60. package/dist/index126.js.map +1 -1
  61. package/dist/index127.js +70 -53
  62. package/dist/index127.js.map +1 -1
  63. package/dist/index128.js +16 -2
  64. package/dist/index128.js.map +1 -1
  65. package/dist/index129.js +66 -2
  66. package/dist/index129.js.map +1 -1
  67. package/dist/index13.js +35 -95
  68. package/dist/index13.js.map +1 -1
  69. package/dist/index130.js +144 -2
  70. package/dist/index130.js.map +1 -1
  71. package/dist/index131.js +2 -2
  72. package/dist/index132.js +56 -2
  73. package/dist/index132.js.map +1 -1
  74. package/dist/index133.js +2 -2
  75. package/dist/index134.js +2 -2
  76. package/dist/index136.js +2 -32
  77. package/dist/index136.js.map +1 -1
  78. package/dist/index137.js +2 -2
  79. package/dist/index138.js +2 -8
  80. package/dist/index138.js.map +1 -1
  81. package/dist/index139.js +2 -2
  82. package/dist/index14.js +90 -153
  83. package/dist/index14.js.map +1 -1
  84. package/dist/index140.js +2 -2
  85. package/dist/index141.js +31 -20
  86. package/dist/index141.js.map +1 -1
  87. package/dist/index142.js +2 -2
  88. package/dist/index143.js +7 -23
  89. package/dist/index143.js.map +1 -1
  90. package/dist/index144.js +2 -71
  91. package/dist/index144.js.map +1 -1
  92. package/dist/index145.js +2 -21
  93. package/dist/index145.js.map +1 -1
  94. package/dist/index146.js +20 -33
  95. package/dist/index146.js.map +1 -1
  96. package/dist/index147.js +2 -70
  97. package/dist/index147.js.map +1 -1
  98. package/dist/index148.js +24 -2
  99. package/dist/index148.js.map +1 -1
  100. package/dist/index149.js +70 -21
  101. package/dist/index149.js.map +1 -1
  102. package/dist/index15.js +154 -146
  103. package/dist/index15.js.map +1 -1
  104. package/dist/index150.js +21 -2
  105. package/dist/index150.js.map +1 -1
  106. package/dist/index151.js +34 -2
  107. package/dist/index151.js.map +1 -1
  108. package/dist/index152.js +70 -2
  109. package/dist/index152.js.map +1 -1
  110. package/dist/index153.js +2 -2
  111. package/dist/index154.js +21 -3
  112. package/dist/index154.js.map +1 -1
  113. package/dist/index155.js +5 -0
  114. package/dist/index155.js.map +1 -0
  115. package/dist/index156.js +5 -0
  116. package/dist/index156.js.map +1 -0
  117. package/dist/index157.js +5 -0
  118. package/dist/index157.js.map +1 -0
  119. package/dist/index158.js +5 -0
  120. package/dist/index158.js.map +1 -0
  121. package/dist/index159.js +7 -0
  122. package/dist/index159.js.map +1 -0
  123. package/dist/index16.js +150 -5
  124. package/dist/index16.js.map +1 -1
  125. package/dist/index17.js +5 -71
  126. package/dist/index17.js.map +1 -1
  127. package/dist/index18.js +71 -17
  128. package/dist/index18.js.map +1 -1
  129. package/dist/index19.js +15 -96
  130. package/dist/index19.js.map +1 -1
  131. package/dist/index20.js +89 -105
  132. package/dist/index20.js.map +1 -1
  133. package/dist/index21.js +107 -177
  134. package/dist/index21.js.map +1 -1
  135. package/dist/index22.js +181 -107
  136. package/dist/index22.js.map +1 -1
  137. package/dist/index23.js +110 -19
  138. package/dist/index23.js.map +1 -1
  139. package/dist/index24.js +19 -32
  140. package/dist/index24.js.map +1 -1
  141. package/dist/index25.js +42 -40
  142. package/dist/index25.js.map +1 -1
  143. package/dist/index26.js +31 -11
  144. package/dist/index26.js.map +1 -1
  145. package/dist/index27.js +41 -33
  146. package/dist/index27.js.map +1 -1
  147. package/dist/index28.js +12 -63
  148. package/dist/index28.js.map +1 -1
  149. package/dist/index29.js +33 -80
  150. package/dist/index29.js.map +1 -1
  151. package/dist/index30.js +63 -18
  152. package/dist/index30.js.map +1 -1
  153. package/dist/index31.js +79 -219
  154. package/dist/index31.js.map +1 -1
  155. package/dist/index32.js +16 -1080
  156. package/dist/index32.js.map +1 -1
  157. package/dist/index33.js +218 -16
  158. package/dist/index33.js.map +1 -1
  159. package/dist/index34.js +1081 -121
  160. package/dist/index34.js.map +1 -1
  161. package/dist/index35.js +17 -39
  162. package/dist/index35.js.map +1 -1
  163. package/dist/index36.js +121 -190
  164. package/dist/index36.js.map +1 -1
  165. package/dist/index37.js +37 -94
  166. package/dist/index37.js.map +1 -1
  167. package/dist/index38.js +186 -157
  168. package/dist/index38.js.map +1 -1
  169. package/dist/index39.js +89 -138
  170. package/dist/index39.js.map +1 -1
  171. package/dist/index40.js +161 -14
  172. package/dist/index40.js.map +1 -1
  173. package/dist/index41.js +146 -18
  174. package/dist/index41.js.map +1 -1
  175. package/dist/index42.js +14 -20
  176. package/dist/index42.js.map +1 -1
  177. package/dist/index43.js +15 -116
  178. package/dist/index43.js.map +1 -1
  179. package/dist/index44.js +18 -10
  180. package/dist/index44.js.map +1 -1
  181. package/dist/index45.js +119 -35
  182. package/dist/index45.js.map +1 -1
  183. package/dist/index46.js +12 -115
  184. package/dist/index46.js.map +1 -1
  185. package/dist/index47.js +33 -174
  186. package/dist/index47.js.map +1 -1
  187. package/dist/index48.js +10 -147
  188. package/dist/index48.js.map +1 -1
  189. package/dist/index49.js +116 -12
  190. package/dist/index49.js.map +1 -1
  191. package/dist/index50.js +176 -22
  192. package/dist/index50.js.map +1 -1
  193. package/dist/index51.js +147 -14
  194. package/dist/index51.js.map +1 -1
  195. package/dist/index52.js +10 -5
  196. package/dist/index52.js.map +1 -1
  197. package/dist/index53.js +21 -265
  198. package/dist/index53.js.map +1 -1
  199. package/dist/index54.js +10 -13
  200. package/dist/index54.js.map +1 -1
  201. package/dist/index55.js +7 -122
  202. package/dist/index55.js.map +1 -1
  203. package/dist/index56.js +262 -106
  204. package/dist/index56.js.map +1 -1
  205. package/dist/index57.js +14 -167
  206. package/dist/index57.js.map +1 -1
  207. package/dist/index58.js +121 -31
  208. package/dist/index58.js.map +1 -1
  209. package/dist/index59.js +107 -119
  210. package/dist/index59.js.map +1 -1
  211. package/dist/index60.js +161 -77
  212. package/dist/index60.js.map +1 -1
  213. package/dist/index61.js +31 -19
  214. package/dist/index61.js.map +1 -1
  215. package/dist/index62.js +117 -69
  216. package/dist/index62.js.map +1 -1
  217. package/dist/index63.js +82 -53
  218. package/dist/index63.js.map +1 -1
  219. package/dist/index64.js +19 -44
  220. package/dist/index64.js.map +1 -1
  221. package/dist/index65.js +70 -48
  222. package/dist/index65.js.map +1 -1
  223. package/dist/index66.js +55 -60
  224. package/dist/index66.js.map +1 -1
  225. package/dist/index67.js +39 -101
  226. package/dist/index67.js.map +1 -1
  227. package/dist/index68.js +52 -41
  228. package/dist/index68.js.map +1 -1
  229. package/dist/index69.js +58 -64
  230. package/dist/index69.js.map +1 -1
  231. package/dist/index70.js +105 -19
  232. package/dist/index70.js.map +1 -1
  233. package/dist/index71.js +41 -46
  234. package/dist/index71.js.map +1 -1
  235. package/dist/index72.js +63 -129
  236. package/dist/index72.js.map +1 -1
  237. package/dist/index73.js +19 -50
  238. package/dist/index73.js.map +1 -1
  239. package/dist/index74.js +46 -22
  240. package/dist/index74.js.map +1 -1
  241. package/dist/index75.js +132 -29
  242. package/dist/index75.js.map +1 -1
  243. package/dist/index76.js +52 -22
  244. package/dist/index76.js.map +1 -1
  245. package/dist/index77.js +19 -326
  246. package/dist/index77.js.map +1 -1
  247. package/dist/index78.js +31 -56
  248. package/dist/index78.js.map +1 -1
  249. package/dist/index79.js +22 -40
  250. package/dist/index79.js.map +1 -1
  251. package/dist/index80.js +328 -22
  252. package/dist/index80.js.map +1 -1
  253. package/dist/index81.js +55 -94
  254. package/dist/index81.js.map +1 -1
  255. package/dist/index82.js +38 -128
  256. package/dist/index82.js.map +1 -1
  257. package/dist/index83.js +20 -158
  258. package/dist/index83.js.map +1 -1
  259. package/dist/index84.js +93 -63
  260. package/dist/index84.js.map +1 -1
  261. package/dist/index85.js +128 -33
  262. package/dist/index85.js.map +1 -1
  263. package/dist/index86.js +152 -225
  264. package/dist/index86.js.map +1 -1
  265. package/dist/index87.js +63 -32
  266. package/dist/index87.js.map +1 -1
  267. package/dist/index88.js +35 -210
  268. package/dist/index88.js.map +1 -1
  269. package/dist/index89.js +229 -208
  270. package/dist/index89.js.map +1 -1
  271. package/dist/index90.js +34 -295
  272. package/dist/index90.js.map +1 -1
  273. package/dist/index91.js +200 -168
  274. package/dist/index91.js.map +1 -1
  275. package/dist/index92.js +198 -243
  276. package/dist/index92.js.map +1 -1
  277. package/dist/index93.js +293 -12
  278. package/dist/index93.js.map +1 -1
  279. package/dist/index94.js +174 -29
  280. package/dist/index94.js.map +1 -1
  281. package/dist/index95.js +258 -6
  282. package/dist/index95.js.map +1 -1
  283. package/dist/index96.js +13 -13
  284. package/dist/index96.js.map +1 -1
  285. package/dist/index97.js +32 -45
  286. package/dist/index97.js.map +1 -1
  287. package/dist/index98.js +5 -12
  288. package/dist/index98.js.map +1 -1
  289. package/dist/index99.js +13 -14
  290. package/dist/index99.js.map +1 -1
  291. package/package.json +2 -1
  292. package/dist/index108.js +0 -10
  293. package/dist/index108.js.map +0 -1
package/dist/index105.js CHANGED
@@ -1,8 +1,34 @@
1
- import { getDefaultExportFromCjs as r } from "./index154.js";
2
- import { __require as o } from "./index106.js";
3
- var e = o();
4
- const a = /* @__PURE__ */ r(e);
1
+ import { useState as v, useCallback as i, useEffect as l } from "react";
2
+ function c(n, f = {}) {
3
+ const { target: u, event: o = "keydown", preventDefault: r = !1 } = f, [a, d] = v(!1), t = i(
4
+ (e) => {
5
+ e.key === n && (r && e.preventDefault(), d(!0));
6
+ },
7
+ [n, r]
8
+ ), s = i(
9
+ (e) => {
10
+ e.key === n && d(!1);
11
+ },
12
+ [n]
13
+ );
14
+ return l(() => {
15
+ const e = u ?? window;
16
+ return o === "keydown" ? (e.addEventListener("keydown", t), e.addEventListener("keyup", s)) : e.addEventListener("keyup", t), () => {
17
+ e.removeEventListener("keydown", t), e.removeEventListener("keyup", s);
18
+ };
19
+ }, [u, o, t, s]), a;
20
+ }
21
+ function y(n, f, u = {}) {
22
+ const { target: o, event: r = "keydown", preventDefault: a = !1 } = u;
23
+ l(() => {
24
+ const d = o ?? window, t = (s) => {
25
+ s.key === n && (a && s.preventDefault(), f(s));
26
+ };
27
+ return d.addEventListener(r, t), () => d.removeEventListener(r, t);
28
+ }, [o, n, f, r, a]);
29
+ }
5
30
  export {
6
- a as default
31
+ c as useKeyPress,
32
+ y as useKeyPressCallback
7
33
  };
8
34
  //# sourceMappingURL=index105.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index105.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index105.js","sources":["../src/hooks/useKeyPress.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react'\n\nexport interface UseKeyPressOptions {\n /** Target element (default: window) */\n target?: HTMLElement | Window | null\n /** Event type: 'keydown' | 'keyup' (default: 'keydown') */\n event?: 'keydown' | 'keyup'\n /** Prevent default browser behavior */\n preventDefault?: boolean\n}\n\n/**\n * Hook that detects when a specific key is pressed.\n *\n * @param targetKey - Key to detect (e.g., 'Enter', 'Escape', 'a')\n * @param options - Configuration options\n * @returns Whether the key is currently pressed\n *\n * @example\n * const enterPressed = useKeyPress('Enter')\n * const escapePressed = useKeyPress('Escape')\n *\n * useEffect(() => {\n * if (escapePressed) closeModal()\n * }, [escapePressed])\n *\n * @example\n * // With callback for immediate action\n * useKeyPress('Escape', { preventDefault: true })\n */\nexport function useKeyPress(\n targetKey: string,\n options: UseKeyPressOptions = {}\n): boolean {\n const { target, event = 'keydown', preventDefault = false } = options\n const [keyPressed, setKeyPressed] = useState(false)\n\n const downHandler = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === targetKey) {\n if (preventDefault) e.preventDefault()\n setKeyPressed(true)\n }\n },\n [targetKey, preventDefault]\n )\n\n const upHandler = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === targetKey) {\n setKeyPressed(false)\n }\n },\n [targetKey]\n )\n\n useEffect(() => {\n const targetElement = target ?? window\n\n if (event === 'keydown') {\n targetElement.addEventListener('keydown', downHandler as EventListener)\n targetElement.addEventListener('keyup', upHandler as EventListener)\n } else {\n targetElement.addEventListener('keyup', downHandler as EventListener)\n }\n\n return () => {\n targetElement.removeEventListener('keydown', downHandler as EventListener)\n targetElement.removeEventListener('keyup', upHandler as EventListener)\n }\n }, [target, event, downHandler, upHandler])\n\n return keyPressed\n}\n\n/**\n * Hook that calls a callback when a specific key is pressed.\n *\n * @param targetKey - Key to detect\n * @param callback - Function to call when key is pressed\n * @param options - Configuration options\n *\n * @example\n * useKeyPressCallback('Escape', () => closeModal())\n * useKeyPressCallback('Enter', () => submitForm(), { preventDefault: true })\n */\nexport function useKeyPressCallback(\n targetKey: string,\n callback: (event: KeyboardEvent) => void,\n options: UseKeyPressOptions = {}\n): void {\n const { target, event = 'keydown', preventDefault = false } = options\n\n useEffect(() => {\n const targetElement = target ?? window\n\n const handler = (e: KeyboardEvent) => {\n if (e.key === targetKey) {\n if (preventDefault) e.preventDefault()\n callback(e)\n }\n }\n\n targetElement.addEventListener(event, handler as EventListener)\n return () => targetElement.removeEventListener(event, handler as EventListener)\n }, [target, targetKey, callback, event, preventDefault])\n}\n"],"names":["useKeyPress","targetKey","options","target","event","preventDefault","keyPressed","setKeyPressed","useState","downHandler","useCallback","upHandler","useEffect","targetElement","useKeyPressCallback","callback","handler","e"],"mappings":";AA8BO,SAASA,EACdC,GACAC,IAA8B,IACrB;AACT,QAAM,EAAE,QAAAC,GAAQ,OAAAC,IAAQ,WAAW,gBAAAC,IAAiB,OAAUH,GACxD,CAACI,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAE5CC,IAAcC;AAAA,IAClB,CAAC,MAAqB;AACpB,MAAI,EAAE,QAAQT,MACRI,OAAkB,eAAA,GACtBE,EAAc,EAAI;AAAA,IAEtB;AAAA,IACA,CAACN,GAAWI,CAAc;AAAA,EAAA,GAGtBM,IAAYD;AAAA,IAChB,CAAC,MAAqB;AACpB,MAAI,EAAE,QAAQT,KACZM,EAAc,EAAK;AAAA,IAEvB;AAAA,IACA,CAACN,CAAS;AAAA,EAAA;AAGZ,SAAAW,EAAU,MAAM;AACd,UAAMC,IAAgBV,KAAU;AAEhC,WAAIC,MAAU,aACZS,EAAc,iBAAiB,WAAWJ,CAA4B,GACtEI,EAAc,iBAAiB,SAASF,CAA0B,KAElEE,EAAc,iBAAiB,SAASJ,CAA4B,GAG/D,MAAM;AACX,MAAAI,EAAc,oBAAoB,WAAWJ,CAA4B,GACzEI,EAAc,oBAAoB,SAASF,CAA0B;AAAA,IACvE;AAAA,EACF,GAAG,CAACR,GAAQC,GAAOK,GAAaE,CAAS,CAAC,GAEnCL;AACT;AAaO,SAASQ,EACdb,GACAc,GACAb,IAA8B,CAAA,GACxB;AACN,QAAM,EAAE,QAAAC,GAAQ,OAAAC,IAAQ,WAAW,gBAAAC,IAAiB,OAAUH;AAE9D,EAAAU,EAAU,MAAM;AACd,UAAMC,IAAgBV,KAAU,QAE1Ba,IAAU,CAACC,MAAqB;AACpC,MAAIA,EAAE,QAAQhB,MACRI,OAAkB,eAAA,GACtBU,EAASE,CAAC;AAAA,IAEd;AAEA,WAAAJ,EAAc,iBAAiBT,GAAOY,CAAwB,GACvD,MAAMH,EAAc,oBAAoBT,GAAOY,CAAwB;AAAA,EAChF,GAAG,CAACb,GAAQF,GAAWc,GAAUX,GAAOC,CAAc,CAAC;AACzD;"}
package/dist/index106.js CHANGED
@@ -1,45 +1,21 @@
1
- import { __exports as u } from "./index107.js";
2
- import { __require as C } from "./index108.js";
3
- import { __require as h } from "./index109.js";
4
- import { __require as R } from "./index110.js";
5
- import { __require as y } from "./index111.js";
6
- var _;
7
- function B() {
8
- if (_) return u;
9
- _ = 1;
10
- const q = C(), f = h(), l = R(), w = y();
11
- function a(d, e, r, n, o) {
12
- const m = [].slice.call(arguments, 1), i = m.length, g = typeof m[i - 1] == "function";
13
- if (!g && !q())
14
- throw new Error("Callback required as last argument");
15
- if (g) {
16
- if (i < 2)
17
- throw new Error("Too few arguments provided");
18
- i === 2 ? (o = r, r = e, e = n = void 0) : i === 3 && (e.getContext && typeof o > "u" ? (o = n, n = void 0) : (o = n, n = r, r = e, e = void 0));
19
- } else {
20
- if (i < 1)
21
- throw new Error("Too few arguments provided");
22
- return i === 1 ? (r = e, e = n = void 0) : i === 2 && !e.getContext && (n = r, r = e, e = void 0), new Promise(function(t, c) {
23
- try {
24
- const s = f.create(r, n);
25
- t(d(s, e, n));
26
- } catch (s) {
27
- c(s);
28
- }
1
+ import { useState as t, useEffect as d } from "react";
2
+ function r() {
3
+ const [i, n] = t(() => typeof window > "u" ? { width: 0, height: 0 } : {
4
+ width: window.innerWidth,
5
+ height: window.innerHeight
6
+ });
7
+ return d(() => {
8
+ if (typeof window > "u") return;
9
+ const e = () => {
10
+ n({
11
+ width: window.innerWidth,
12
+ height: window.innerHeight
29
13
  });
30
- }
31
- try {
32
- const t = f.create(r, n);
33
- o(null, d(t, e, n));
34
- } catch (t) {
35
- o(t);
36
- }
37
- }
38
- return u.create = f.create, u.toCanvas = a.bind(null, l.render), u.toDataURL = a.bind(null, l.renderToDataURL), u.toString = a.bind(null, function(d, e, r) {
39
- return w.render(d, r);
40
- }), u;
14
+ };
15
+ return window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
16
+ }, []), i;
41
17
  }
42
18
  export {
43
- B as __require
19
+ r as useWindowSize
44
20
  };
45
21
  //# sourceMappingURL=index106.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index106.js","sources":["../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/browser.js"],"sourcesContent":["\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n"],"names":["canPromise","require$$0","QRCode","require$$1","CanvasRenderer","require$$2","SvgRenderer","require$$3","renderCanvas","renderFunc","canvas","text","opts","cb","args","argsNum","isLastArgCb","resolve","reject","data","e","browser","_"],"mappings":";;;;;;;;;AACA,QAAMA,IAAaC,EAAA,GAEbC,IAASC,EAAA,GACTC,IAAiBC,EAAA,GACjBC,IAAcC,EAAA;AAEpB,WAASC,EAAcC,GAAYC,GAAQC,GAAMC,GAAMC,GAAI;AACzD,UAAMC,IAAO,CAAA,EAAG,MAAM,KAAK,WAAW,CAAC,GACjCC,IAAUD,EAAK,QACfE,IAAc,OAAOF,EAAKC,IAAU,CAAC,KAAM;AAEjD,QAAI,CAACC,KAAe,CAAChB;AACnB,YAAM,IAAI,MAAM,oCAAoC;AAGtD,QAAIgB,GAAa;AACf,UAAID,IAAU;AACZ,cAAM,IAAI,MAAM,4BAA4B;AAG9C,MAAIA,MAAY,KACdF,IAAKF,GACLA,IAAOD,GACPA,IAASE,IAAO,UACPG,MAAY,MACjBL,EAAO,cAAc,OAAOG,IAAO,OACrCA,IAAKD,GACLA,IAAO,WAEPC,IAAKD,GACLA,IAAOD,GACPA,IAAOD,GACPA,IAAS;AAAA,IAGjB,OAAS;AACL,UAAIK,IAAU;AACZ,cAAM,IAAI,MAAM,4BAA4B;AAG9C,aAAIA,MAAY,KACdJ,IAAOD,GACPA,IAASE,IAAO,UACPG,MAAY,KAAK,CAACL,EAAO,eAClCE,IAAOD,GACPA,IAAOD,GACPA,IAAS,SAGJ,IAAI,QAAQ,SAAUO,GAASC,GAAQ;AAC5C,YAAI;AACF,gBAAMC,IAAOjB,EAAO,OAAOS,GAAMC,CAAI;AACrC,UAAAK,EAAQR,EAAWU,GAAMT,GAAQE,CAAI,CAAC;AAAA,QAC9C,SAAeQ,GAAG;AACV,UAAAF,EAAOE,CAAC;AAAA,QAChB;AAAA,MACA,CAAK;AAAA,IACL;AAEE,QAAI;AACF,YAAMD,IAAOjB,EAAO,OAAOS,GAAMC,CAAI;AACrC,MAAAC,EAAG,MAAMJ,EAAWU,GAAMT,GAAQE,CAAI,CAAC;AAAA,IAC3C,SAAWQ,GAAG;AACV,MAAAP,EAAGO,CAAC;AAAA,IACR;AAAA,EACA;AAEA,SAAAC,EAAA,SAAiBnB,EAAO,QACxBmB,EAAA,WAAmBb,EAAa,KAAK,MAAMJ,EAAe,MAAM,GAChEiB,EAAA,YAAoBb,EAAa,KAAK,MAAMJ,EAAe,eAAe,GAG1EiB,EAAA,WAAmBb,EAAa,KAAK,MAAM,SAAUW,GAAMG,GAAGV,GAAM;AAClE,WAAON,EAAY,OAAOa,GAAMP,CAAI;AAAA,EACtC,CAAC;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index106.js","sources":["../src/hooks/useWindowSize.ts"],"sourcesContent":["import { useState, useEffect } from 'react'\n\nexport interface WindowSize {\n width: number\n height: number\n}\n\n/**\n * Hook that tracks window dimensions.\n * Updates on window resize.\n *\n * @returns Object with current width and height\n *\n * @example\n * const { width, height } = useWindowSize()\n *\n * return (\n * <div>\n * Window: {width} x {height}\n * {width < 768 && <MobileNav />}\n * </div>\n * )\n */\nexport function useWindowSize(): WindowSize {\n const [windowSize, setWindowSize] = useState<WindowSize>(() => {\n if (typeof window === 'undefined') {\n return { width: 0, height: 0 }\n }\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n })\n\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const handleResize = () => {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n\n window.addEventListener('resize', handleResize)\n return () => window.removeEventListener('resize', handleResize)\n }, [])\n\n return windowSize\n}\n"],"names":["useWindowSize","windowSize","setWindowSize","useState","useEffect","handleResize"],"mappings":";AAuBO,SAASA,IAA4B;AAC1C,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAAqB,MACnD,OAAO,SAAW,MACb,EAAE,OAAO,GAAG,QAAQ,EAAA,IAEtB;AAAA,IACL,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,EAAA,CAElB;AAED,SAAAC,EAAU,MAAM;AACd,QAAI,OAAO,SAAW,IAAa;AAEnC,UAAMC,IAAe,MAAM;AACzB,MAAAH,EAAc;AAAA,QACZ,OAAO,OAAO;AAAA,QACd,QAAQ,OAAO;AAAA,MAAA,CAChB;AAAA,IACH;AAEA,kBAAO,iBAAiB,UAAUG,CAAY,GACvC,MAAM,OAAO,oBAAoB,UAAUA,CAAY;AAAA,EAChE,GAAG,CAAA,CAAE,GAEEJ;AACT;"}
package/dist/index107.js CHANGED
@@ -1,5 +1,177 @@
1
- var r = {};
1
+ import { jsxs as f, jsx as l } from "react/jsx-runtime";
2
+ import b, { useMemo as A, useState as R } from "react";
3
+ const M = (n) => L(n, /* @__PURE__ */ new Date()), L = (n, t) => {
4
+ const a = new Date(n), s = new Date(t);
5
+ return a.setHours(0, 0, 0, 0), s.setHours(0, 0, 0, 0), s.getTime() === a.getTime();
6
+ }, W = (n) => {
7
+ const t = /* @__PURE__ */ new Date(), a = new Date(n);
8
+ return t.setHours(0, 0, 0, 0), a.setHours(0, 0, 0, 0), a > t;
9
+ }, H = (n) => {
10
+ const t = /* @__PURE__ */ new Date(), a = new Date(n);
11
+ return t.setHours(0, 0, 0, 0), a.setHours(0, 0, 0, 0), a < t;
12
+ }, E = (n, t) => n.filter((a) => a.date.getDate() === t.getDate() && a.date.getMonth() === t.getMonth() && a.date.getFullYear() === t.getFullYear()), F = (n, t) => new Date(n, t + 1, 0).getDate(), J = (n, t) => new Date(n, t, 1).getDay(), z = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], _ = [
13
+ "January",
14
+ "February",
15
+ "March",
16
+ "April",
17
+ "May",
18
+ "June",
19
+ "July",
20
+ "August",
21
+ "September",
22
+ "October",
23
+ "November",
24
+ "December"
25
+ ], q = "more", B = (n) => {
26
+ const t = {
27
+ hour: "numeric",
28
+ // removes leading zeros automatically
29
+ minute: "2-digit",
30
+ hour12: !0
31
+ };
32
+ return n.toLocaleTimeString("en-US", t).replace(" ", "").toLowerCase().replace(":00", "");
33
+ }, C = {
34
+ locale: "en",
35
+ daysShort: z,
36
+ monthsLong: _,
37
+ moreText: q,
38
+ formatTime: B
39
+ }, G = ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"], I = [
40
+ "janvier",
41
+ "février",
42
+ "mars",
43
+ "avril",
44
+ "mai",
45
+ "juin",
46
+ "juillet",
47
+ "août",
48
+ "septembre",
49
+ "octobre",
50
+ "novembre",
51
+ "décembre"
52
+ ], U = "autres", K = (n) => n.toLocaleTimeString("fr-FR", {
53
+ hour: "2-digit",
54
+ minute: "2-digit",
55
+ hour12: !1
56
+ }), j = {
57
+ locale: "fr",
58
+ daysShort: G,
59
+ monthsLong: I,
60
+ moreText: U,
61
+ formatTime: K
62
+ }, P = (n, t) => {
63
+ const a = F(n, t), s = J(n, t), h = [];
64
+ if (s > 0) {
65
+ const o = t === 0 ? 11 : t - 1, g = t === 0 ? n - 1 : n, m = F(g, o);
66
+ for (let y = 0; y < s; y++) {
67
+ const v = m - s + y + 1;
68
+ h.push({
69
+ day: v,
70
+ month: o,
71
+ year: g,
72
+ isCurrentMonth: !1,
73
+ date: new Date(g, o, v)
74
+ });
75
+ }
76
+ }
77
+ const D = [];
78
+ for (let o = 1; o <= a; o++)
79
+ D.push({
80
+ day: o,
81
+ month: t,
82
+ year: n,
83
+ isCurrentMonth: !0,
84
+ date: new Date(n, t, o)
85
+ });
86
+ const w = [], i = 42 - (h.length + D.length);
87
+ if (i > 0) {
88
+ const o = t === 11 ? 0 : t + 1, g = t === 11 ? n + 1 : n;
89
+ for (let m = 1; m <= i; m++)
90
+ w.push({
91
+ day: m,
92
+ month: o,
93
+ year: g,
94
+ isCurrentMonth: !1,
95
+ date: new Date(g, o, m)
96
+ });
97
+ }
98
+ return [...h, ...D, ...w];
99
+ }, O = ({ date: n = /* @__PURE__ */ new Date(), events: t = [], maxEventsPerDay: a = 5, onEventClick: s, onDayClick: h, onMoreEventsClick: D, header: w, daySelector: p, locale: i = C, ellipsis: o, theme: g = "light", allowPastInteraction: m = !1 }) => {
100
+ const [y, v] = R(/* @__PURE__ */ new Date()), T = n.getFullYear(), S = n.getMonth();
101
+ return f("div", { className: `month-calendar calendar-${g}`, children: [w && l("div", { className: "month-calendar-header", children: l("div", { className: "month-calendar-month-display", children: f("h2", { children: [i.monthsLong[S], " ", T] }) }) }), l("div", { className: "month-calendar-weekday-header", children: i.daysShort.map((e, r) => l("div", { className: "month-calendar-weekday-cell", children: e }, r)) }), l("div", { className: "month-calendar-grid", children: P(T, S).map((e, r) => {
102
+ const c = E(t, e.date);
103
+ return f("div", { className: `month-calendar-cell ${e.isCurrentMonth ? "" : "month-calendar-other-month"}
104
+ ${M(e.date) ? "month-calendar-today" : ""}
105
+ ${H(e.date) && !M(e.date) ? `month-calendar-past${m ? "" : " month-calendar-past-non-interactive"}` : ""}
106
+ ${p && L(e.date, y) ? "month-calendar-selected" : ""}`, onClick: () => {
107
+ H(e.date) && !M(e.date) && !m || (p && v(e.date), setTimeout(() => {
108
+ h?.(e.date);
109
+ }, 0));
110
+ }, children: [l("div", { className: "month-calendar-date-number-container", children: l("span", { className: `month-calendar-date-number ${M(e.date) ? "month-calendar-today-number" : ""}`, children: e.day }) }), f("div", { className: "month-calendar-events-container", children: [c.slice(0, c.length > a ? a - 1 : a).map((d, k) => f("div", { className: `
111
+ month-calendar-event
112
+ ${W(d.date) ? "month-calendar-future-event" : ""}
113
+ ${d.strikethrough ? "month-calendar-cancelled-event" : ""}
114
+ `, style: d.style, onClick: (u) => {
115
+ u.stopPropagation(), s && s(d);
116
+ }, title: d.title, children: [l("span", { className: "month-calendar-event-dot", style: { backgroundColor: d.color } }), l("span", { className: `month-calendar-event-title ${o ? "month-calendar-ellipsis" : ""}`, children: d.title })] }, k)), c.length > a && f("div", { className: "month-calendar-more-events", onClick: (d) => {
117
+ d.stopPropagation(), D && D(e.date, c);
118
+ }, children: ["+", c.length - a + 1, " ", i.moreText] })] })] }, r);
119
+ }) })] });
120
+ }, Q = (n) => {
121
+ const t = new Date(n), a = t.getDay(), s = t.getDate() - a;
122
+ return new Date(t.setDate(s));
123
+ }, V = (n, t) => {
124
+ const a = new Date(n);
125
+ return a.setDate(a.getDate() + t), a;
126
+ }, $ = (n, t) => {
127
+ const a = n.getDate(), s = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][n.getDay()];
128
+ return t === "YYYY-MM-DD" ? n.toISOString().split("T")[0] : t === "ddd" ? s : t === "D" ? a.toString() : n.toISOString();
129
+ }, ee = ({ date: n, events: t, locale: a = C, onEventClick: s, onDayClick: h, onSelectSlot: D, theme: w = "light", allowPastInteraction: p = !1 }) => {
130
+ const i = b.useRef(null), o = b.useRef(null);
131
+ b.useEffect(() => {
132
+ const e = () => {
133
+ if (i.current && o.current) {
134
+ const r = i.current, c = o.current, d = r.offsetWidth - r.clientWidth;
135
+ c.style.paddingRight = `${d}px`;
136
+ }
137
+ };
138
+ return e(), window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
139
+ }, []), b.useEffect(() => {
140
+ i.current && (i.current.scrollTop = 240);
141
+ }, [n]);
142
+ const g = Q(n), m = Array.from({ length: 7 }, (e, r) => V(g, r)), y = A(() => {
143
+ const e = {};
144
+ return t.forEach((r) => {
145
+ const c = $(r.date, "YYYY-MM-DD");
146
+ e[c] || (e[c] = []), e[c].push(r);
147
+ }), e;
148
+ }, [t]), v = Array.from({ length: 17 }, (e, r) => r + 6), T = (e) => a.formatTime ? a.formatTime(new Date(2e3, 0, 1, e, 0)) : `${e === 0 ? 12 : e > 12 ? e - 12 : e}:00 ${e < 12 ? "AM" : "PM"}`, S = (e, r) => (y[e] || []).filter((d) => d.date.getHours() === r);
149
+ return f("div", { className: `week-calendar calendar-${w}`, children: [f("div", { className: "week-calendar-header", ref: o, children: [l("div", { className: "week-calendar-time-column" }), m.map((e) => {
150
+ const r = H(e), c = M(e);
151
+ return f("div", { className: `week-calendar-day-header ${r ? `week-calendar-day-header-past${p ? "" : " week-calendar-day-header-past-non-interactive"}` : ""}`, onClick: () => {
152
+ r && !p || h?.(e);
153
+ }, children: [l("div", { className: `week-calendar-day-name ${r ? "week-calendar-day-name-past" : ""}`, children: $(e, "ddd") }), l("div", { className: `week-calendar-day-number ${c ? "week-calendar-day-number-today" : ""} ${r ? "week-calendar-day-number-past" : ""}`, children: $(e, "D") })] }, $(e, "YYYY-MM-DD"));
154
+ })] }), l("div", { className: "week-calendar-body", ref: i, children: v.map((e) => f("div", { className: "week-calendar-time-row", children: [l("div", { className: "week-calendar-time-label", children: T(e) }), m.map((r) => {
155
+ const c = $(r, "YYYY-MM-DD"), d = S(c, e), k = H(r) && !M(r);
156
+ return l("div", { className: `week-calendar-time-cell ${k ? `week-calendar-time-cell-past${p ? "" : " week-calendar-time-cell-non-interactive"}` : ""}`, onClick: (u) => {
157
+ if (!(k && !p) && D && (u.target === u.currentTarget || u.target.classList.contains("week-calendar-time-cell"))) {
158
+ const Y = new Date(r);
159
+ Y.setHours(e, 0, 0, 0);
160
+ const N = new Date(r);
161
+ N.setHours(e + 1, 0, 0, 0), D({ start: Y, end: N });
162
+ }
163
+ }, children: d.map((u, Y) => {
164
+ const N = ["week-calendar-event"];
165
+ return u.strikethrough && N.push("week-calendar-event-cancelled"), f("div", { className: N.join(" "), style: u.style, title: u.title, onClick: (x) => {
166
+ x.stopPropagation(), s?.(u);
167
+ }, children: [l("div", { className: "week-calendar-event-dot", style: { backgroundColor: u.color || "#bfbfbf" } }), l("div", { className: "week-calendar-event-title", children: u.title })] }, Y);
168
+ }) }, `${c}-${e}`);
169
+ })] }, e)) })] });
170
+ };
2
171
  export {
3
- r as __exports
172
+ O as MonthCalendar,
173
+ ee as WeekCalendar,
174
+ C as en,
175
+ j as fr
4
176
  };
5
177
  //# sourceMappingURL=index107.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index107.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index107.js","sources":["../../../node_modules/.pnpm/@vinctus+calendar@0.2.1_react-dom@19.2.0_react@19.2.0__react-router-dom@7.10.1_react-dom@19.2_5r2kgk6bwao76phqhq32c4ooqu/node_modules/@vinctus/calendar/dist/index.esm.js"],"sourcesContent":["import { jsxs, jsx } from 'react/jsx-runtime';\nimport React, { useState, useMemo } from 'react';\n\nconst isToday = (date) => isEqual(date, new Date());\nconst isEqual = (a, b) => {\n const acopy = new Date(a);\n const bcopy = new Date(b);\n acopy.setHours(0, 0, 0, 0);\n bcopy.setHours(0, 0, 0, 0);\n return bcopy.getTime() === acopy.getTime();\n};\nconst isFutureDate = (date) => {\n const today = new Date();\n const checkDate = new Date(date);\n today.setHours(0, 0, 0, 0);\n checkDate.setHours(0, 0, 0, 0);\n return checkDate > today;\n};\nconst isPastDate = (date) => {\n const today = new Date();\n const checkDate = new Date(date);\n today.setHours(0, 0, 0, 0);\n checkDate.setHours(0, 0, 0, 0);\n return checkDate < today;\n};\nconst getEventsForDate = (events, date) => {\n return events.filter((event) => event.date.getDate() === date.getDate() &&\n event.date.getMonth() === date.getMonth() &&\n event.date.getFullYear() === date.getFullYear());\n};\nconst getDaysInMonth = (year, month) => {\n return new Date(year, month + 1, 0).getDate();\n};\nconst getFirstDayOfMonth = (year, month) => {\n return new Date(year, month, 1).getDay();\n};\n\nconst daysShort$1 = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nconst monthsLong$1 = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\nconst moreText$1 = 'more';\nconst formatTime$1 = (date) => {\n const options = {\n hour: 'numeric', // removes leading zeros automatically\n minute: '2-digit',\n hour12: true,\n };\n const formatted = date.toLocaleTimeString('en-US', options);\n return formatted.replace(' ', '').toLowerCase().replace(':00', '');\n};\nconst en = {\n locale: 'en',\n daysShort: daysShort$1,\n monthsLong: monthsLong$1,\n moreText: moreText$1,\n formatTime: formatTime$1,\n};\n\nconst daysShort = ['dim', 'lun', 'mar', 'mer', 'jeu', 'ven', 'sam']; // No periods, Google Calendar style\nconst monthsLong = [\n 'janvier',\n 'février',\n 'mars',\n 'avril',\n 'mai',\n 'juin',\n 'juillet',\n 'août',\n 'septembre',\n 'octobre',\n 'novembre',\n 'décembre',\n];\nconst moreText = 'autres';\nconst formatTime = (date) => {\n return date.toLocaleTimeString('fr-FR', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n};\nconst fr = {\n locale: 'fr',\n daysShort,\n monthsLong,\n moreText,\n formatTime,\n};\n\nconst generateCalendarGrid = (year, month) => {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayOfMonth = getFirstDayOfMonth(year, month);\n const prevMonthDays = [];\n if (firstDayOfMonth > 0) {\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevMonthYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevMonthYear, prevMonth);\n for (let i = 0; i < firstDayOfMonth; i++) {\n const day = daysInPrevMonth - firstDayOfMonth + i + 1;\n prevMonthDays.push({\n day,\n month: prevMonth,\n year: prevMonthYear,\n isCurrentMonth: false,\n date: new Date(prevMonthYear, prevMonth, day),\n });\n }\n }\n const currentMonthDays = [];\n for (let day = 1; day <= daysInMonth; day++) {\n currentMonthDays.push({\n day,\n month,\n year,\n isCurrentMonth: true,\n date: new Date(year, month, day),\n });\n }\n const nextMonthDays = [];\n const totalDaysDisplayed = prevMonthDays.length + currentMonthDays.length;\n const daysToAdd = 6 * 7 - totalDaysDisplayed;\n if (daysToAdd > 0) {\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextMonthYear = month === 11 ? year + 1 : year;\n for (let day = 1; day <= daysToAdd; day++) {\n nextMonthDays.push({\n day,\n month: nextMonth,\n year: nextMonthYear,\n isCurrentMonth: false,\n date: new Date(nextMonthYear, nextMonth, day),\n });\n }\n }\n return [...prevMonthDays, ...currentMonthDays, ...nextMonthDays];\n};\nconst MonthCalendar = ({ date = new Date(), events = [], maxEventsPerDay = 5, onEventClick, onDayClick, onMoreEventsClick, header, daySelector, locale = en, ellipsis, theme = 'light', allowPastInteraction = false, }) => {\n const [selectedDate, setSelectedDate] = useState(new Date());\n const year = date.getFullYear();\n const month = date.getMonth();\n return (jsxs(\"div\", { className: `month-calendar calendar-${theme}`, children: [header && (jsx(\"div\", { className: \"month-calendar-header\", children: jsx(\"div\", { className: \"month-calendar-month-display\", children: jsxs(\"h2\", { children: [locale.monthsLong[month], \" \", year] }) }) })), jsx(\"div\", { className: \"month-calendar-weekday-header\", children: locale.daysShort.map((day, index) => (jsx(\"div\", { className: \"month-calendar-weekday-cell\", children: day }, index))) }), jsx(\"div\", { className: \"month-calendar-grid\", children: generateCalendarGrid(year, month).map((dateObj, index) => {\n const dateEvents = getEventsForDate(events, dateObj.date);\n return (jsxs(\"div\", { className: `month-calendar-cell ${!dateObj.isCurrentMonth ? 'month-calendar-other-month' : ''}\n ${isToday(dateObj.date) ? 'month-calendar-today' : ''}\n ${isPastDate(dateObj.date) && !isToday(dateObj.date) ? `month-calendar-past${!allowPastInteraction ? ' month-calendar-past-non-interactive' : ''}` : ''}\n ${daySelector && isEqual(dateObj.date, selectedDate) ? 'month-calendar-selected' : ''}`, onClick: () => {\n // Prevent interaction with past dates when allowPastInteraction is false\n if (isPastDate(dateObj.date) && !isToday(dateObj.date) && !allowPastInteraction) {\n return;\n }\n if (daySelector) {\n setSelectedDate(dateObj.date);\n }\n // Defer the callback to allow React to re-render first\n setTimeout(() => {\n onDayClick === null || onDayClick === void 0 ? void 0 : onDayClick(dateObj.date);\n }, 0);\n }, children: [jsx(\"div\", { className: \"month-calendar-date-number-container\", children: jsx(\"span\", { className: `month-calendar-date-number ${isToday(dateObj.date) ? 'month-calendar-today-number' : ''}`, children: dateObj.day }) }), jsxs(\"div\", { className: \"month-calendar-events-container\", children: [dateEvents\n .slice(0, dateEvents.length > maxEventsPerDay ? maxEventsPerDay - 1 : maxEventsPerDay)\n .map((event, eventIndex) => (jsxs(\"div\", { className: `\n month-calendar-event \n ${isFutureDate(event.date) ? 'month-calendar-future-event' : ''} \n ${event.strikethrough ? 'month-calendar-cancelled-event' : ''}\n `, style: event.style, onClick: (e) => {\n e.stopPropagation();\n if (onEventClick) {\n onEventClick(event);\n }\n }, title: event.title, children: [jsx(\"span\", { className: \"month-calendar-event-dot\", style: { backgroundColor: event.color } }), jsx(\"span\", { className: `month-calendar-event-title ${ellipsis ? 'month-calendar-ellipsis' : ''}`, children: event.title })] }, eventIndex))), dateEvents.length > maxEventsPerDay && (jsxs(\"div\", { className: \"month-calendar-more-events\", onClick: (e) => {\n e.stopPropagation();\n if (onMoreEventsClick) {\n onMoreEventsClick(dateObj.date, dateEvents);\n }\n }, children: [\"+\", dateEvents.length - maxEventsPerDay + 1, \" \", locale.moreText] }))] })] }, index));\n }) })] }));\n};\n\n// Simple date utility functions to replace dayjs\nconst getWeekStart = (date) => {\n const d = new Date(date);\n const day = d.getDay();\n const diff = d.getDate() - day;\n return new Date(d.setDate(diff));\n};\nconst addDays = (date, days) => {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n};\nconst formatDate = (date, format) => {\n const day = date.getDate();\n const dayName = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][date.getDay()];\n if (format === 'YYYY-MM-DD') {\n return date.toISOString().split('T')[0];\n }\n if (format === 'ddd') {\n return dayName;\n }\n if (format === 'D') {\n return day.toString();\n }\n return date.toISOString();\n};\nconst WeekCalendar = ({ date, events, locale = en, onEventClick, onDayClick, onSelectSlot, theme = 'light', allowPastInteraction = false, }) => {\n const bodyRef = React.useRef(null);\n const headerRef = React.useRef(null);\n // Adjust header padding to account for scrollbar\n React.useEffect(() => {\n const adjustScrollbar = () => {\n if (bodyRef.current && headerRef.current) {\n const bodyElement = bodyRef.current;\n const headerElement = headerRef.current;\n const scrollbarWidth = bodyElement.offsetWidth - bodyElement.clientWidth;\n headerElement.style.paddingRight = `${scrollbarWidth}px`;\n }\n };\n adjustScrollbar();\n window.addEventListener('resize', adjustScrollbar);\n return () => window.removeEventListener('resize', adjustScrollbar);\n }, []);\n // Scroll to 9am on mount\n React.useEffect(() => {\n if (bodyRef.current) {\n // 9am is the 4th time slot (6am=0, 7am=1, 8am=2, 9am=3)\n // Each time slot is 80px tall\n bodyRef.current.scrollTop = 3 * 80;\n }\n }, [date]); // Re-scroll when date changes\n const weekStart = getWeekStart(date);\n const weekDays = Array.from({ length: 7 }, (_, i) => addDays(weekStart, i));\n // Group events by day\n const eventsByDay = useMemo(() => {\n const grouped = {};\n events.forEach((event) => {\n const eventDate = formatDate(event.date, 'YYYY-MM-DD');\n if (!grouped[eventDate]) {\n grouped[eventDate] = [];\n }\n grouped[eventDate].push(event);\n });\n return grouped;\n }, [events]);\n // Time slots from 6 AM to 10 PM\n const timeSlots = Array.from({ length: 17 }, (_, i) => i + 6); // 6-22 (6 AM to 10 PM)\n const formatHour = (hour) => {\n return locale.formatTime\n ? locale.formatTime(new Date(2000, 0, 1, hour, 0))\n : `${hour === 0 ? 12 : hour > 12 ? hour - 12 : hour}:00 ${hour < 12 ? 'AM' : 'PM'}`;\n };\n const getEventsForDayAndHour = (dayStr, hour) => {\n const dayEvents = eventsByDay[dayStr] || [];\n return dayEvents.filter((event) => {\n const eventHour = event.date.getHours();\n return eventHour === hour;\n });\n };\n return (jsxs(\"div\", { className: `week-calendar calendar-${theme}`, children: [jsxs(\"div\", { className: \"week-calendar-header\", ref: headerRef, children: [jsx(\"div\", { className: \"week-calendar-time-column\" }), weekDays.map((day) => {\n const isPast = isPastDate(day);\n const isTodayDate = isToday(day);\n return (jsxs(\"div\", { className: `week-calendar-day-header ${isPast ? `week-calendar-day-header-past${!allowPastInteraction ? ' week-calendar-day-header-past-non-interactive' : ''}` : ''}`, onClick: () => {\n // Prevent interaction with past day headers when allowPastInteraction is false\n if (isPast && !allowPastInteraction) {\n return;\n }\n onDayClick === null || onDayClick === void 0 ? void 0 : onDayClick(day);\n }, children: [jsx(\"div\", { className: `week-calendar-day-name ${isPast ? 'week-calendar-day-name-past' : ''}`, children: formatDate(day, 'ddd') }), jsx(\"div\", { className: `week-calendar-day-number ${isTodayDate ? 'week-calendar-day-number-today' : ''} ${isPast ? 'week-calendar-day-number-past' : ''}`, children: formatDate(day, 'D') })] }, formatDate(day, 'YYYY-MM-DD')));\n })] }), jsx(\"div\", { className: \"week-calendar-body\", ref: bodyRef, children: timeSlots.map((hour) => (jsxs(\"div\", { className: \"week-calendar-time-row\", children: [jsx(\"div\", { className: \"week-calendar-time-label\", children: formatHour(hour) }), weekDays.map((day) => {\n const dayStr = formatDate(day, 'YYYY-MM-DD');\n const hourEvents = getEventsForDayAndHour(dayStr, hour);\n const isPast = isPastDate(day) && !isToday(day);\n return (jsx(\"div\", { className: `week-calendar-time-cell ${isPast ? `week-calendar-time-cell-past${!allowPastInteraction ? ' week-calendar-time-cell-non-interactive' : ''}` : ''}`, onClick: (e) => {\n // Prevent interaction with past time slots when allowPastInteraction is false\n if (isPast && !allowPastInteraction) {\n return;\n }\n // Only trigger if clicking on empty space, not on an event\n if (onSelectSlot &&\n (e.target === e.currentTarget ||\n e.target.classList.contains('week-calendar-time-cell'))) {\n // Create start and end dates for the time slot\n const start = new Date(day);\n start.setHours(hour, 0, 0, 0);\n const end = new Date(day);\n end.setHours(hour + 1, 0, 0, 0);\n onSelectSlot({ start, end });\n }\n }, children: hourEvents.map((event, idx) => {\n const eventClasses = ['week-calendar-event'];\n if (event.strikethrough) {\n eventClasses.push('week-calendar-event-cancelled');\n }\n return (jsxs(\"div\", { className: eventClasses.join(' '), style: event.style, title: event.title, onClick: (e) => {\n e.stopPropagation();\n onEventClick === null || onEventClick === void 0 ? void 0 : onEventClick(event);\n }, children: [jsx(\"div\", { className: \"week-calendar-event-dot\", style: { backgroundColor: event.color || '#bfbfbf' } }), jsx(\"div\", { className: \"week-calendar-event-title\", children: event.title })] }, idx));\n }) }, `${dayStr}-${hour}`));\n })] }, hour))) })] }));\n};\n\nexport { MonthCalendar, WeekCalendar, en, fr };\n//# sourceMappingURL=index.esm.js.map\n"],"names":["isToday","date","isEqual","a","b","acopy","bcopy","isFutureDate","today","checkDate","isPastDate","getEventsForDate","events","event","getDaysInMonth","year","month","getFirstDayOfMonth","daysShort$1","monthsLong$1","moreText$1","formatTime$1","options","en","daysShort","monthsLong","moreText","formatTime","fr","generateCalendarGrid","daysInMonth","firstDayOfMonth","prevMonthDays","prevMonth","prevMonthYear","daysInPrevMonth","i","day","currentMonthDays","nextMonthDays","daysToAdd","nextMonth","nextMonthYear","MonthCalendar","maxEventsPerDay","onEventClick","onDayClick","onMoreEventsClick","header","daySelector","locale","ellipsis","theme","allowPastInteraction","selectedDate","setSelectedDate","useState","jsxs","jsx","index","dateObj","dateEvents","eventIndex","e","getWeekStart","d","diff","addDays","days","result","formatDate","format","dayName","WeekCalendar","onSelectSlot","bodyRef","React","headerRef","adjustScrollbar","bodyElement","headerElement","scrollbarWidth","weekStart","weekDays","_","eventsByDay","useMemo","grouped","eventDate","timeSlots","formatHour","hour","getEventsForDayAndHour","dayStr","isPast","isTodayDate","hourEvents","start","end","idx","eventClasses"],"mappings":"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","x_google_ignoreList":[0]}