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.
- package/dist/components/Calendar.d.ts +23 -0
- package/dist/components/Checkbox.d.ts +10 -0
- package/dist/components/Dock.d.ts +38 -0
- package/dist/components/Mask.d.ts +14 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.js +203 -194
- package/dist/index.js.map +1 -1
- package/dist/index10.js +85 -59
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +45 -7
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +11 -11
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +12 -28
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +7 -17
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +12 -10792
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +31 -5
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +16 -40
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +174 -2
- package/dist/index107.js.map +1 -1
- package/dist/index109.js +10788 -147
- package/dist/index109.js.map +1 -1
- package/dist/index110.js +5 -30
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +39 -27
- package/dist/index111.js.map +1 -1
- package/dist/index113.js +6 -71
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +147 -34
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +28 -24
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +28 -19
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +2 -24
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +71 -19
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +33 -94
- package/dist/index119.js.map +1 -1
- package/dist/index120.js +24 -358
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +19 -23
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +22 -71
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +18 -14
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +92 -58
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +357 -141
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +25 -2
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +70 -53
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +16 -2
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +66 -2
- package/dist/index129.js.map +1 -1
- package/dist/index13.js +35 -95
- package/dist/index13.js.map +1 -1
- package/dist/index130.js +144 -2
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +2 -2
- package/dist/index132.js +56 -2
- package/dist/index132.js.map +1 -1
- package/dist/index133.js +2 -2
- package/dist/index134.js +2 -2
- package/dist/index136.js +2 -32
- package/dist/index136.js.map +1 -1
- package/dist/index137.js +2 -2
- package/dist/index138.js +2 -8
- package/dist/index138.js.map +1 -1
- package/dist/index139.js +2 -2
- package/dist/index14.js +90 -153
- package/dist/index14.js.map +1 -1
- package/dist/index140.js +2 -2
- package/dist/index141.js +31 -20
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +2 -2
- package/dist/index143.js +7 -23
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +2 -71
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +2 -21
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +20 -33
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +2 -70
- package/dist/index147.js.map +1 -1
- package/dist/index148.js +24 -2
- package/dist/index148.js.map +1 -1
- package/dist/index149.js +70 -21
- package/dist/index149.js.map +1 -1
- package/dist/index15.js +154 -146
- package/dist/index15.js.map +1 -1
- package/dist/index150.js +21 -2
- package/dist/index150.js.map +1 -1
- package/dist/index151.js +34 -2
- package/dist/index151.js.map +1 -1
- package/dist/index152.js +70 -2
- package/dist/index152.js.map +1 -1
- package/dist/index153.js +2 -2
- package/dist/index154.js +21 -3
- package/dist/index154.js.map +1 -1
- package/dist/index155.js +5 -0
- package/dist/index155.js.map +1 -0
- package/dist/index156.js +5 -0
- package/dist/index156.js.map +1 -0
- package/dist/index157.js +5 -0
- package/dist/index157.js.map +1 -0
- package/dist/index158.js +5 -0
- package/dist/index158.js.map +1 -0
- package/dist/index159.js +7 -0
- package/dist/index159.js.map +1 -0
- package/dist/index16.js +150 -5
- package/dist/index16.js.map +1 -1
- package/dist/index17.js +5 -71
- package/dist/index17.js.map +1 -1
- package/dist/index18.js +71 -17
- package/dist/index18.js.map +1 -1
- package/dist/index19.js +15 -96
- package/dist/index19.js.map +1 -1
- package/dist/index20.js +89 -105
- package/dist/index20.js.map +1 -1
- package/dist/index21.js +107 -177
- package/dist/index21.js.map +1 -1
- package/dist/index22.js +181 -107
- package/dist/index22.js.map +1 -1
- package/dist/index23.js +110 -19
- package/dist/index23.js.map +1 -1
- package/dist/index24.js +19 -32
- package/dist/index24.js.map +1 -1
- package/dist/index25.js +42 -40
- package/dist/index25.js.map +1 -1
- package/dist/index26.js +31 -11
- package/dist/index26.js.map +1 -1
- package/dist/index27.js +41 -33
- package/dist/index27.js.map +1 -1
- package/dist/index28.js +12 -63
- package/dist/index28.js.map +1 -1
- package/dist/index29.js +33 -80
- package/dist/index29.js.map +1 -1
- package/dist/index30.js +63 -18
- package/dist/index30.js.map +1 -1
- package/dist/index31.js +79 -219
- package/dist/index31.js.map +1 -1
- package/dist/index32.js +16 -1080
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +218 -16
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +1081 -121
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +17 -39
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +121 -190
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +37 -94
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +186 -157
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +89 -138
- package/dist/index39.js.map +1 -1
- package/dist/index40.js +161 -14
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +146 -18
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +14 -20
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +15 -116
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +18 -10
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +119 -35
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +12 -115
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +33 -174
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +10 -147
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +116 -12
- package/dist/index49.js.map +1 -1
- package/dist/index50.js +176 -22
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +147 -14
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +10 -5
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +21 -265
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +10 -13
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +7 -122
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +262 -106
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +14 -167
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +121 -31
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +107 -119
- package/dist/index59.js.map +1 -1
- package/dist/index60.js +161 -77
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +31 -19
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +117 -69
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +82 -53
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +19 -44
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +70 -48
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +55 -60
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +39 -101
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +52 -41
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +58 -64
- package/dist/index69.js.map +1 -1
- package/dist/index70.js +105 -19
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +41 -46
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +63 -129
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +19 -50
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +46 -22
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +132 -29
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +52 -22
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +19 -326
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +31 -56
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +22 -40
- package/dist/index79.js.map +1 -1
- package/dist/index80.js +328 -22
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +55 -94
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +38 -128
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +20 -158
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +93 -63
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +128 -33
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +152 -225
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +63 -32
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +35 -210
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +229 -208
- package/dist/index89.js.map +1 -1
- package/dist/index90.js +34 -295
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +200 -168
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +198 -243
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +293 -12
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +174 -29
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +258 -6
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +13 -13
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +32 -45
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +5 -12
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +13 -14
- package/dist/index99.js.map +1 -1
- package/package.json +2 -1
- package/dist/index108.js +0 -10
- package/dist/index108.js.map +0 -1
package/dist/index105.js
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
31
|
+
c as useKeyPress,
|
|
32
|
+
y as useKeyPressCallback
|
|
7
33
|
};
|
|
8
34
|
//# sourceMappingURL=index105.js.map
|
package/dist/index105.js.map
CHANGED
|
@@ -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 {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
32
|
-
|
|
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
|
-
|
|
19
|
+
r as useWindowSize
|
|
44
20
|
};
|
|
45
21
|
//# sourceMappingURL=index106.js.map
|
package/dist/index106.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index106.js","sources":["
|
|
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
|
-
|
|
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
|
-
|
|
172
|
+
O as MonthCalendar,
|
|
173
|
+
ee as WeekCalendar,
|
|
174
|
+
C as en,
|
|
175
|
+
j as fr
|
|
4
176
|
};
|
|
5
177
|
//# sourceMappingURL=index107.js.map
|
package/dist/index107.js.map
CHANGED
|
@@ -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]}
|