@innosolutions/inno-calendar 1.0.72 → 2.0.1

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 (200) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/LICENSE +48 -48
  3. package/README.md +333 -305
  4. package/dist/components/event/event-card.d.ts +4 -28
  5. package/dist/components/event/event-card.d.ts.map +1 -1
  6. package/dist/components/header/calendar-header.d.ts +14 -3
  7. package/dist/components/header/calendar-header.d.ts.map +1 -1
  8. package/dist/components/index.cjs +1 -1
  9. package/dist/components/index.d.ts +7 -6
  10. package/dist/components/index.d.ts.map +1 -1
  11. package/dist/components/index.mjs +48 -57
  12. package/dist/components/index.mjs.map +1 -1
  13. package/dist/components/inno-calendar.d.ts +139 -72
  14. package/dist/components/inno-calendar.d.ts.map +1 -1
  15. package/dist/components/primitives/field-layer.d.ts +22 -0
  16. package/dist/components/primitives/field-layer.d.ts.map +1 -0
  17. package/dist/components/primitives/index.d.ts +3 -0
  18. package/dist/components/primitives/index.d.ts.map +1 -1
  19. package/dist/components/primitives/multi-day-banner.d.ts.map +1 -1
  20. package/dist/components/primitives/quick-create.d.ts +44 -0
  21. package/dist/components/primitives/quick-create.d.ts.map +1 -0
  22. package/dist/components/primitives/recurrence-field.d.ts +102 -0
  23. package/dist/components/primitives/recurrence-field.d.ts.map +1 -0
  24. package/dist/components/primitives/week-all-day-row.d.ts.map +1 -1
  25. package/dist/components/primitives/when-row.d.ts +41 -0
  26. package/dist/components/primitives/when-row.d.ts.map +1 -0
  27. package/dist/components/shell/calendar-settings.d.ts +28 -0
  28. package/dist/components/shell/calendar-settings.d.ts.map +1 -0
  29. package/dist/components/shell/calendar-sidebar.d.ts +27 -0
  30. package/dist/components/shell/calendar-sidebar.d.ts.map +1 -0
  31. package/dist/components/shell/filter-panel.d.ts +10 -0
  32. package/dist/components/shell/filter-panel.d.ts.map +1 -0
  33. package/dist/components/shell/index.d.ts +5 -0
  34. package/dist/components/shell/index.d.ts.map +1 -0
  35. package/dist/components/shell/mini-month.d.ts +16 -0
  36. package/dist/components/shell/mini-month.d.ts.map +1 -0
  37. package/dist/components/ui/index.d.ts +0 -2
  38. package/dist/components/ui/index.d.ts.map +1 -1
  39. package/dist/components/views/agenda-view.d.ts +14 -15
  40. package/dist/components/views/agenda-view.d.ts.map +1 -1
  41. package/dist/components/views/day-events-expansion.d.ts +1 -1
  42. package/dist/components/views/day-events-expansion.d.ts.map +1 -1
  43. package/dist/components/views/day-view.d.ts +2 -6
  44. package/dist/components/views/day-view.d.ts.map +1 -1
  45. package/dist/components/views/index.d.ts +2 -1
  46. package/dist/components/views/index.d.ts.map +1 -1
  47. package/dist/components/views/month-view.d.ts +2 -12
  48. package/dist/components/views/month-view.d.ts.map +1 -1
  49. package/dist/components/views/resource-columns-view.d.ts +23 -0
  50. package/dist/components/views/resource-columns-view.d.ts.map +1 -0
  51. package/dist/components/views/timeline-view.d.ts +2 -6
  52. package/dist/components/views/timeline-view.d.ts.map +1 -1
  53. package/dist/components/views/week-view.d.ts +10 -6
  54. package/dist/components/views/week-view.d.ts.map +1 -1
  55. package/dist/components/views/year-view.d.ts +2 -6
  56. package/dist/components/views/year-view.d.ts.map +1 -1
  57. package/dist/core/constants.d.ts +39 -1
  58. package/dist/core/constants.d.ts.map +1 -1
  59. package/dist/core/context/drag-drop-context.d.ts +15 -1
  60. package/dist/core/context/drag-drop-context.d.ts.map +1 -1
  61. package/dist/core/context/event-card-context.d.ts +16 -0
  62. package/dist/core/context/event-card-context.d.ts.map +1 -0
  63. package/dist/core/context/inno-calendar-provider.d.ts +10 -1
  64. package/dist/core/context/inno-calendar-provider.d.ts.map +1 -1
  65. package/dist/core/context/slot-selection-context.d.ts +16 -0
  66. package/dist/core/context/slot-selection-context.d.ts.map +1 -1
  67. package/dist/core/index.cjs +1 -1
  68. package/dist/core/index.d.ts +3 -1
  69. package/dist/core/index.d.ts.map +1 -1
  70. package/dist/core/index.mjs +155 -149
  71. package/dist/core/index.mjs.map +1 -1
  72. package/dist/core/types.d.ts +44 -514
  73. package/dist/core/types.d.ts.map +1 -1
  74. package/dist/core/utils/date-input.d.ts +8 -0
  75. package/dist/core/utils/date-input.d.ts.map +1 -0
  76. package/dist/core/utils/grid-utils.d.ts.map +1 -1
  77. package/dist/core/utils/index.d.ts +1 -0
  78. package/dist/core/utils/index.d.ts.map +1 -1
  79. package/dist/core/utils/time-format.d.ts +33 -0
  80. package/dist/core/utils/time-format.d.ts.map +1 -0
  81. package/dist/core/utils/view-storage.d.ts +2 -2
  82. package/dist/core/utils/view-storage.d.ts.map +1 -1
  83. package/dist/core/z-layers.d.ts +21 -0
  84. package/dist/core/z-layers.d.ts.map +1 -0
  85. package/dist/index.cjs +1 -1
  86. package/dist/index.d.ts +0 -1
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.mjs +228 -234
  89. package/dist/index.mjs.map +1 -1
  90. package/dist/inno-calendar-DFEaWcSi.cjs +11 -0
  91. package/dist/inno-calendar-DFEaWcSi.cjs.map +1 -0
  92. package/dist/inno-calendar-R7LPGSJU.js +7454 -0
  93. package/dist/inno-calendar-R7LPGSJU.js.map +1 -0
  94. package/dist/lib/index.cjs +1 -1
  95. package/dist/lib/index.mjs +1 -1
  96. package/dist/position-utils-BH6T1FL5.js +1125 -0
  97. package/dist/position-utils-BH6T1FL5.js.map +1 -0
  98. package/dist/position-utils-BVt-Bp93.cjs +2 -0
  99. package/dist/position-utils-BVt-Bp93.cjs.map +1 -0
  100. package/dist/styles/index.css +1 -1
  101. package/dist/use-slot-selection-CSsSyfAi.cjs +2 -0
  102. package/dist/use-slot-selection-CSsSyfAi.cjs.map +1 -0
  103. package/dist/use-slot-selection-CT1z9v9X.js +357 -0
  104. package/dist/use-slot-selection-CT1z9v9X.js.map +1 -0
  105. package/dist/utils-B6yFEsav.js +9 -0
  106. package/dist/utils-B6yFEsav.js.map +1 -0
  107. package/dist/utils-IjLH3w2e.cjs +2 -0
  108. package/dist/utils-IjLH3w2e.cjs.map +1 -0
  109. package/dist/utils.cjs +1 -1
  110. package/dist/utils.d.ts +1 -1
  111. package/dist/utils.d.ts.map +1 -1
  112. package/dist/utils.mjs +108 -104
  113. package/dist/z-layers-CpHPAMdp.js +637 -0
  114. package/dist/z-layers-CpHPAMdp.js.map +1 -0
  115. package/dist/z-layers-D1DivrJg.cjs +2 -0
  116. package/dist/z-layers-D1DivrJg.cjs.map +1 -0
  117. package/package.json +117 -138
  118. package/AGENT.md +0 -1783
  119. package/dist/agenda-widget-B0t3TCcV.js +0 -4141
  120. package/dist/agenda-widget-B0t3TCcV.js.map +0 -1
  121. package/dist/agenda-widget-i2tjGr5U.cjs +0 -2
  122. package/dist/agenda-widget-i2tjGr5U.cjs.map +0 -1
  123. package/dist/components/calendar.d.ts +0 -45
  124. package/dist/components/calendar.d.ts.map +0 -1
  125. package/dist/components/event/event-page-transition.d.ts +0 -32
  126. package/dist/components/event/event-page-transition.d.ts.map +0 -1
  127. package/dist/components/filters/calendar-filter-sidebar.d.ts +0 -54
  128. package/dist/components/filters/calendar-filter-sidebar.d.ts.map +0 -1
  129. package/dist/components/filters/index.d.ts +0 -9
  130. package/dist/components/filters/index.d.ts.map +0 -1
  131. package/dist/components/filters/schedule-type-filter.d.ts +0 -31
  132. package/dist/components/filters/schedule-type-filter.d.ts.map +0 -1
  133. package/dist/components/filters/user-filter.d.ts +0 -31
  134. package/dist/components/filters/user-filter.d.ts.map +0 -1
  135. package/dist/components/header/components/index.d.ts +0 -8
  136. package/dist/components/header/components/index.d.ts.map +0 -1
  137. package/dist/components/integrated-calendar.d.ts +0 -37
  138. package/dist/components/integrated-calendar.d.ts.map +0 -1
  139. package/dist/components/settings/badge-variant-setting.d.ts +0 -25
  140. package/dist/components/settings/badge-variant-setting.d.ts.map +0 -1
  141. package/dist/components/settings/index.d.ts +0 -10
  142. package/dist/components/settings/index.d.ts.map +0 -1
  143. package/dist/components/settings/slot-duration-setting.d.ts +0 -20
  144. package/dist/components/settings/slot-duration-setting.d.ts.map +0 -1
  145. package/dist/components/settings/visible-hours-setting.d.ts +0 -23
  146. package/dist/components/settings/visible-hours-setting.d.ts.map +0 -1
  147. package/dist/components/settings/working-hours-setting.d.ts +0 -41
  148. package/dist/components/settings/working-hours-setting.d.ts.map +0 -1
  149. package/dist/components/ui/dialog.d.ts +0 -35
  150. package/dist/components/ui/dialog.d.ts.map +0 -1
  151. package/dist/components/ui/select.d.ts +0 -12
  152. package/dist/components/ui/select.d.ts.map +0 -1
  153. package/dist/components/widget/agenda-dropdown.d.ts +0 -20
  154. package/dist/components/widget/agenda-dropdown.d.ts.map +0 -1
  155. package/dist/components/widget/agenda-widget.d.ts +0 -27
  156. package/dist/components/widget/agenda-widget.d.ts.map +0 -1
  157. package/dist/components/widget/index.d.ts +0 -6
  158. package/dist/components/widget/index.d.ts.map +0 -1
  159. package/dist/index-D2U2F80P.cjs +0 -2
  160. package/dist/index-D2U2F80P.cjs.map +0 -1
  161. package/dist/index-DtaLkIY8.js +0 -2777
  162. package/dist/index-DtaLkIY8.js.map +0 -1
  163. package/dist/position-utils-D_KpwRus.js +0 -1053
  164. package/dist/position-utils-D_KpwRus.js.map +0 -1
  165. package/dist/position-utils-ksZ_IjXC.cjs +0 -2
  166. package/dist/position-utils-ksZ_IjXC.cjs.map +0 -1
  167. package/dist/presets/default/default-calendar.d.ts +0 -44
  168. package/dist/presets/default/default-calendar.d.ts.map +0 -1
  169. package/dist/presets/default/index.d.ts +0 -2
  170. package/dist/presets/default/index.d.ts.map +0 -1
  171. package/dist/presets/index.cjs +0 -2
  172. package/dist/presets/index.cjs.map +0 -1
  173. package/dist/presets/index.d.ts +0 -3
  174. package/dist/presets/index.d.ts.map +0 -1
  175. package/dist/presets/index.mjs +0 -6
  176. package/dist/presets/index.mjs.map +0 -1
  177. package/dist/presets/tailwind/index.d.ts +0 -2
  178. package/dist/presets/tailwind/index.d.ts.map +0 -1
  179. package/dist/presets/tailwind/tailwind-calendar.d.ts +0 -122
  180. package/dist/presets/tailwind/tailwind-calendar.d.ts.map +0 -1
  181. package/dist/slot-selection-context-CLYZU6ul.cjs +0 -2
  182. package/dist/slot-selection-context-CLYZU6ul.cjs.map +0 -1
  183. package/dist/slot-selection-context-Ct5cVcKW.js +0 -611
  184. package/dist/slot-selection-context-Ct5cVcKW.js.map +0 -1
  185. package/dist/tailwind-calendar-BbUb61uY.cjs +0 -2
  186. package/dist/tailwind-calendar-BbUb61uY.cjs.map +0 -1
  187. package/dist/tailwind-calendar-DrwGVSF-.js +0 -400
  188. package/dist/tailwind-calendar-DrwGVSF-.js.map +0 -1
  189. package/dist/use-calendar-BK0nQYJq.cjs +0 -2
  190. package/dist/use-calendar-BK0nQYJq.cjs.map +0 -1
  191. package/dist/use-calendar-DJI35SSd.js +0 -175
  192. package/dist/use-calendar-DJI35SSd.js.map +0 -1
  193. package/dist/use-slot-selection-CCE11R4j.cjs +0 -2
  194. package/dist/use-slot-selection-CCE11R4j.cjs.map +0 -1
  195. package/dist/use-slot-selection-CX1w8EdM.js +0 -188
  196. package/dist/use-slot-selection-CX1w8EdM.js.map +0 -1
  197. package/dist/week-view-BXmaRChB.cjs +0 -11
  198. package/dist/week-view-BXmaRChB.cjs.map +0 -1
  199. package/dist/week-view-BeasFcyR.js +0 -3520
  200. package/dist/week-view-BeasFcyR.js.map +0 -1
@@ -0,0 +1,637 @@
1
+ import { jsx as Y } from "react/jsx-runtime";
2
+ import { useState as h, useCallback as g, useContext as W, createContext as $, useMemo as _, useEffect as N, useRef as A } from "react";
3
+ import { P as be, aV as ye, a$ as Ie, aT as j } from "./position-utils-BH6T1FL5.js";
4
+ const z = $(void 0);
5
+ function Me({
6
+ children: n,
7
+ onEventDrop: t,
8
+ onEventResize: r
9
+ }) {
10
+ const [s, l] = h(null), u = g((a) => {
11
+ const c = typeof a.startDate == "string" ? new Date(a.startDate) : a.startDate, I = typeof a.endDate == "string" ? new Date(a.endDate) : a.endDate;
12
+ l({
13
+ event: a,
14
+ originalStartDate: c,
15
+ originalEndDate: I
16
+ });
17
+ }, []), S = g((a, c, I, p) => {
18
+ l((k) => k ? {
19
+ ...k,
20
+ previewDate: a,
21
+ previewHour: c,
22
+ previewMinute: I,
23
+ ...p !== void 0 && { targetResourceId: p }
24
+ } : null);
25
+ }, []), d = g(() => {
26
+ if (!s) return null;
27
+ const { event: a, originalStartDate: c, originalEndDate: I, previewDate: p, previewHour: k, previewMinute: O, targetResourceId: T } = s, H = I.getTime() - c.getTime();
28
+ let D;
29
+ p ? (D = new Date(p), typeof k == "number" ? D.setHours(k, O ?? 0, 0, 0) : D.setHours(
30
+ c.getHours(),
31
+ c.getMinutes(),
32
+ c.getSeconds(),
33
+ 0
34
+ )) : D = c;
35
+ const e = new Date(D.getTime() + H), o = {
36
+ event: a,
37
+ newStartDate: D,
38
+ newEndDate: e,
39
+ ...T !== void 0 && { newResourceId: T }
40
+ };
41
+ return l(null), t?.(o), o;
42
+ }, [s, t]), f = g(() => {
43
+ l(null);
44
+ }, []), m = g(
45
+ // biome-ignore lint/suspicious/noExplicitAny: accepts any event type
46
+ (a, c) => {
47
+ const I = typeof a.startDate == "string" ? new Date(a.startDate) : a.startDate, p = {
48
+ event: a,
49
+ newStartDate: I,
50
+ newEndDate: c,
51
+ ...a.resourceId !== void 0 && { newResourceId: a.resourceId }
52
+ };
53
+ return (r ?? t)?.(p), p;
54
+ },
55
+ [t, r]
56
+ );
57
+ return /* @__PURE__ */ Y(
58
+ z.Provider,
59
+ {
60
+ value: {
61
+ dragState: s,
62
+ isDragging: s !== null,
63
+ startDrag: u,
64
+ updateDragPreview: S,
65
+ endDrag: d,
66
+ cancelDrag: f,
67
+ resizeEvent: m
68
+ },
69
+ children: n
70
+ }
71
+ );
72
+ }
73
+ function Ae() {
74
+ const n = W(z);
75
+ if (!n)
76
+ throw new Error("useDragDrop must be used within a DragDropProvider");
77
+ return n;
78
+ }
79
+ function je() {
80
+ return W(z) ?? null;
81
+ }
82
+ const He = {
83
+ from: 0,
84
+ to: 24
85
+ }, ke = {
86
+ 0: { enabled: !1, from: 8, to: 18 },
87
+ // Sunday - disabled
88
+ 1: { enabled: !0, from: 8, to: 18 },
89
+ // Monday
90
+ 2: { enabled: !0, from: 8, to: 18 },
91
+ // Tuesday
92
+ 3: { enabled: !0, from: 8, to: 18 },
93
+ // Wednesday
94
+ 4: { enabled: !0, from: 8, to: 18 },
95
+ // Thursday
96
+ 5: { enabled: !0, from: 8, to: 18 },
97
+ // Friday
98
+ 6: { enabled: !1, from: 8, to: 18 }
99
+ // Saturday - disabled
100
+ }, he = 30, Te = {
101
+ view: "month",
102
+ badgeVariant: "colored",
103
+ slotDuration: he,
104
+ visibleHours: He,
105
+ workingHours: ke,
106
+ showWorkingHoursOnly: !1,
107
+ showWeekends: !0,
108
+ firstDayOfWeek: 1
109
+ };
110
+ function Oe(n) {
111
+ if (typeof window > "u") return {};
112
+ try {
113
+ const t = localStorage.getItem(n);
114
+ if (!t) return {};
115
+ const r = JSON.parse(t), s = {};
116
+ return r.view && typeof r.view == "string" && (s.view = r.view), r.badgeVariant && typeof r.badgeVariant == "string" && (s.badgeVariant = r.badgeVariant), r.slotDuration && typeof r.slotDuration == "number" && (s.slotDuration = r.slotDuration), r.visibleHours && typeof r.visibleHours == "object" && (s.visibleHours = r.visibleHours), r.workingHours && typeof r.workingHours == "object" && (s.workingHours = r.workingHours), typeof r.showWorkingHoursOnly == "boolean" && (s.showWorkingHoursOnly = r.showWorkingHoursOnly), typeof r.showWeekends == "boolean" && (s.showWeekends = r.showWeekends), typeof r.firstDayOfWeek == "number" && (s.firstDayOfWeek = r.firstDayOfWeek), s;
117
+ } catch {
118
+ return console.warn("[InnoCalendar] Failed to load preferences from localStorage"), {};
119
+ }
120
+ }
121
+ function ve(n, t) {
122
+ if (!(typeof window > "u"))
123
+ try {
124
+ localStorage.setItem(n, JSON.stringify(t));
125
+ } catch {
126
+ console.warn("[InnoCalendar] Failed to save preferences to localStorage");
127
+ }
128
+ }
129
+ function Ce(n = {}) {
130
+ const {
131
+ modes: t = {},
132
+ locked: r = {},
133
+ defaults: s = {},
134
+ storageKey: l = be,
135
+ disableStorage: u = !1
136
+ } = n, S = _(
137
+ () => ({
138
+ ...Te,
139
+ ...s
140
+ }),
141
+ [s]
142
+ ), [d, f] = h(() => u ? {} : Oe(l)), [m, a] = h({});
143
+ N(() => {
144
+ u || ve(l, d);
145
+ }, [d, l, u]);
146
+ const c = g(
147
+ (e) => t[e] ?? "user",
148
+ [t]
149
+ ), I = g(
150
+ (e) => c(e) === "locked",
151
+ [c]
152
+ ), p = g(
153
+ (e) => c(e) === "user" && !u,
154
+ [c, u]
155
+ ), k = _(() => {
156
+ const e = { ...S };
157
+ for (const o of Object.keys(e)) {
158
+ const y = c(o);
159
+ y === "locked" && o in r ? e[o] = r[o] : y === "session" && o in m ? e[o] = m[o] : y === "user" && o in d && (e[o] = d[o]);
160
+ }
161
+ return e;
162
+ }, [S, d, m, r, c]), O = g(
163
+ (e, o) => {
164
+ const y = c(e);
165
+ if (y === "locked") {
166
+ console.warn(`[InnoCalendar] Preference "${e}" is locked and cannot be modified`);
167
+ return;
168
+ }
169
+ y === "session" ? a((b) => ({ ...b, [e]: o })) : f((b) => ({ ...b, [e]: o }));
170
+ },
171
+ [c]
172
+ ), T = g(
173
+ (e) => {
174
+ const o = {}, y = {};
175
+ for (const b of Object.keys(e)) {
176
+ const E = c(b), C = e[b];
177
+ if (C !== void 0) {
178
+ if (E === "locked") {
179
+ console.warn(`[InnoCalendar] Preference "${b}" is locked and cannot be modified`);
180
+ continue;
181
+ }
182
+ E === "session" ? o[b] = C : y[b] = C;
183
+ }
184
+ }
185
+ Object.keys(o).length > 0 && a((b) => ({ ...b, ...o })), Object.keys(y).length > 0 && f((b) => ({ ...b, ...y }));
186
+ },
187
+ [c]
188
+ ), H = g(() => {
189
+ f({}), a({}), u || localStorage.removeItem(l);
190
+ }, [l, u]), D = g(
191
+ (e) => {
192
+ const o = c(e);
193
+ if (o === "locked") {
194
+ console.warn(`[InnoCalendar] Preference "${e}" is locked and cannot be reset`);
195
+ return;
196
+ }
197
+ o === "session" ? a((y) => {
198
+ const { [e]: b, ...E } = y;
199
+ return E;
200
+ }) : f((y) => {
201
+ const { [e]: b, ...E } = y;
202
+ return E;
203
+ });
204
+ },
205
+ [c]
206
+ );
207
+ return {
208
+ preferences: k,
209
+ setPreference: O,
210
+ setPreferences: T,
211
+ resetPreferences: H,
212
+ resetPreference: D,
213
+ isLocked: I,
214
+ isPersisted: p,
215
+ getMode: c
216
+ };
217
+ }
218
+ const B = $(void 0), le = {
219
+ 0: { enabled: !1, from: 8, to: 17 },
220
+ // Sunday
221
+ 1: { enabled: !0, from: 8, to: 17 },
222
+ // Monday
223
+ 2: { enabled: !0, from: 8, to: 17 },
224
+ // Tuesday
225
+ 3: { enabled: !0, from: 8, to: 17 },
226
+ // Wednesday
227
+ 4: { enabled: !0, from: 8, to: 17 },
228
+ // Thursday
229
+ 5: { enabled: !0, from: 8, to: 17 },
230
+ // Friday
231
+ 6: { enabled: !0, from: 8, to: 12 }
232
+ // Saturday
233
+ }, Ee = { start: 0, end: 24 }, Pe = [], _e = [], We = [];
234
+ function Ye({
235
+ children: n,
236
+ initialEvents: t = Pe,
237
+ initialUsers: r = _e,
238
+ initialScheduleTypes: s = We,
239
+ allowedViews: l,
240
+ initialView: u,
241
+ initialDate: S,
242
+ initialSelectedUserId: d = "all",
243
+ initialScheduleTypeIds: f = [],
244
+ initialParticipantIds: m = [],
245
+ initialWorkingHoursView: a = "default",
246
+ initialSearchQuery: c = "",
247
+ preferencesConfig: I,
248
+ initialFocusEventId: p = null,
249
+ onDateChange: k,
250
+ onViewChange: O,
251
+ viewPersistence: T
252
+ }) {
253
+ const { preferences: H, setPreference: D, isLocked: e } = Ce(I), [o, y] = h(() => {
254
+ const i = ye(T);
255
+ return (i && (!l || l.includes(i)) ? i : void 0) ?? u ?? "week";
256
+ }), [b, E] = h(
257
+ S ?? /* @__PURE__ */ new Date()
258
+ );
259
+ N(() => {
260
+ if (u !== void 0 && o !== u) {
261
+ const i = setTimeout(() => O?.(o), 0);
262
+ return () => clearTimeout(i);
263
+ }
264
+ }, []);
265
+ const [C, fe] = h(
266
+ d
267
+ ), Q = H.badgeVariant ?? "colored", G = g(
268
+ (i) => {
269
+ e("badgeVariant") || D("badgeVariant", i);
270
+ },
271
+ [D, e]
272
+ ), Z = H.workingHours ?? le, J = g(
273
+ (i) => {
274
+ if (!e("workingHours")) {
275
+ const w = H.workingHours ?? le, v = typeof i == "function" ? i(w) : i;
276
+ D("workingHours", v);
277
+ }
278
+ },
279
+ [D, e, H.workingHours]
280
+ ), P = H.visibleHours, V = _(() => P ? {
281
+ start: P.start ?? P.from ?? 0,
282
+ end: P.end ?? P.to ?? 24
283
+ } : Ee, [P]), q = g(
284
+ (i) => {
285
+ if (!e("visibleHours")) {
286
+ const w = typeof i == "function" ? i(V) : i;
287
+ D("visibleHours", {
288
+ from: w.start,
289
+ to: w.end
290
+ });
291
+ }
292
+ },
293
+ [D, e, V]
294
+ ), [ge, Se] = h(
295
+ a === "enabled" ? !0 : a === "disabled" ? !1 : H.showWorkingHoursOnly ?? !1
296
+ ), X = ge, ee = g(
297
+ (i) => {
298
+ Se(i), e("showWorkingHoursOnly") || D("showWorkingHoursOnly", i);
299
+ },
300
+ [D, e]
301
+ ), te = H.slotDuration ?? 30, re = g(
302
+ (i) => {
303
+ e("slotDuration") || D("slotDuration", i);
304
+ },
305
+ [D, e]
306
+ ), [x, ne] = h(t);
307
+ N(() => {
308
+ ne(t);
309
+ }, [t]);
310
+ const [R, De] = h(f), [M, Ve] = h(m), [L, we] = h(c), [se, oe] = h(
311
+ p ?? null
312
+ );
313
+ N(() => {
314
+ p && oe(p);
315
+ }, [p]);
316
+ const ae = g(() => oe(null), []), ie = g(
317
+ (i) => {
318
+ y(i), e("view") || D("view", i), Ie(i, T), O?.(i);
319
+ },
320
+ [O, D, e, T]
321
+ ), ce = g(
322
+ (i, w) => {
323
+ E(i), k?.(i, w ?? o);
324
+ },
325
+ [k, o]
326
+ ), ue = _(() => {
327
+ let i = x;
328
+ if (R.length > 0 && (i = i.filter(
329
+ (w) => w.scheduleTypeId !== void 0 && R.includes(w.scheduleTypeId)
330
+ )), M.length > 0 && (i = i.filter((w) => w.participants?.length ? w.participants.some(
331
+ (v) => M.includes(v.id)
332
+ ) : !1)), C !== "all" && (i = i.filter(
333
+ (w) => w.participants?.some((v) => v.id === C)
334
+ )), L.trim()) {
335
+ const w = L.toLowerCase();
336
+ i = i.filter(
337
+ (v) => j(v.title).toLowerCase().includes(w) || j(v.description).toLowerCase().includes(w) || j(v.scheduleTypeName).toLowerCase().includes(w) || v.participants?.some((pe) => pe.name.toLowerCase().includes(w))
338
+ );
339
+ }
340
+ return i;
341
+ }, [
342
+ x,
343
+ R,
344
+ M,
345
+ C,
346
+ L
347
+ ]), me = _(
348
+ () => ({
349
+ // View & Navigation
350
+ view: o,
351
+ setView: ie,
352
+ selectedDate: b,
353
+ setSelectedDate: ce,
354
+ // User Filtering
355
+ selectedUserId: C,
356
+ setSelectedUserId: fe,
357
+ // Visual Customization
358
+ badgeVariant: Q,
359
+ setBadgeVariant: G,
360
+ // Time Configuration
361
+ workingHours: Z,
362
+ setWorkingHours: J,
363
+ visibleHours: V,
364
+ setVisibleHours: q,
365
+ showWorkingHoursOnly: X,
366
+ setShowWorkingHoursOnly: ee,
367
+ slotDuration: te,
368
+ setSlotDuration: re,
369
+ // Preferences
370
+ isPreferenceLocked: e,
371
+ // Data
372
+ events: x,
373
+ setEvents: ne,
374
+ users: r,
375
+ scheduleTypes: s,
376
+ // Filters
377
+ selectedScheduleTypeIds: R,
378
+ setSelectedScheduleTypeIds: De,
379
+ // Search
380
+ searchQuery: L,
381
+ setSearchQuery: we,
382
+ // Computed
383
+ filteredEvents: ue,
384
+ // Focus Event
385
+ focusEventId: se,
386
+ clearFocusEventId: ae
387
+ }),
388
+ [
389
+ o,
390
+ ie,
391
+ b,
392
+ ce,
393
+ C,
394
+ Q,
395
+ G,
396
+ Z,
397
+ J,
398
+ V,
399
+ q,
400
+ X,
401
+ ee,
402
+ te,
403
+ re,
404
+ e,
405
+ x,
406
+ r,
407
+ s,
408
+ R,
409
+ L,
410
+ ue,
411
+ se,
412
+ ae
413
+ ]
414
+ );
415
+ return /* @__PURE__ */ Y(B.Provider, { value: me, children: n });
416
+ }
417
+ function F() {
418
+ const n = W(B);
419
+ if (!n)
420
+ throw new Error(
421
+ "useInnoCalendar must be used within an InnoCalendarProvider"
422
+ );
423
+ return n;
424
+ }
425
+ function $e() {
426
+ return W(B);
427
+ }
428
+ function ze() {
429
+ const { view: n, setView: t, selectedDate: r, setSelectedDate: s, slotDuration: l } = F();
430
+ return { view: n, setView: t, selectedDate: r, setSelectedDate: s, slotDuration: l };
431
+ }
432
+ function Be() {
433
+ const { events: n, setEvents: t, filteredEvents: r } = F();
434
+ return { events: n, setEvents: t, filteredEvents: r };
435
+ }
436
+ function Ke() {
437
+ const {
438
+ selectedScheduleTypeIds: n,
439
+ setSelectedScheduleTypeIds: t,
440
+ selectedUserId: r,
441
+ setSelectedUserId: s,
442
+ searchQuery: l,
443
+ setSearchQuery: u
444
+ } = F();
445
+ return {
446
+ selectedScheduleTypeIds: n,
447
+ setSelectedScheduleTypeIds: t,
448
+ selectedUserId: r,
449
+ setSelectedUserId: s,
450
+ searchQuery: l,
451
+ setSearchQuery: u
452
+ };
453
+ }
454
+ function Qe() {
455
+ const {
456
+ workingHours: n,
457
+ setWorkingHours: t,
458
+ visibleHours: r,
459
+ setVisibleHours: s,
460
+ showWorkingHoursOnly: l,
461
+ setShowWorkingHoursOnly: u
462
+ } = F();
463
+ return {
464
+ workingHours: n,
465
+ setWorkingHours: t,
466
+ visibleHours: r,
467
+ setVisibleHours: s,
468
+ showWorkingHoursOnly: l,
469
+ setShowWorkingHoursOnly: u
470
+ };
471
+ }
472
+ const K = $(void 0);
473
+ function U(n) {
474
+ const t = new Date(n.date);
475
+ return typeof n.hour == "number" && t.setHours(n.hour, n.minute ?? 0, 0, 0), t;
476
+ }
477
+ function Re(n) {
478
+ const t = new Date(n), r = t.getMinutes(), s = Math.floor(r / 30) * 30;
479
+ return t.setMinutes(s, 0, 0), t;
480
+ }
481
+ function Le(n, t) {
482
+ return n.getFullYear() === t.getFullYear() && n.getMonth() === t.getMonth() && n.getDate() === t.getDate();
483
+ }
484
+ function de(n, t, r, s, l = 30) {
485
+ const u = U(n), S = U(t);
486
+ let d = u, f = S;
487
+ if (S < u && (d = S, f = u), r === "day")
488
+ if (Le(d, f)) {
489
+ const a = Re(/* @__PURE__ */ new Date());
490
+ d = new Date(d), d.setHours(a.getHours(), a.getMinutes(), 0, 0), f = new Date(d.getTime() + s * 60 * 1e3);
491
+ } else
492
+ d.setHours(0, 0, 0, 0), f.setHours(23, 59, 59, 999);
493
+ else {
494
+ const m = l * 60 * 1e3;
495
+ f = new Date(f.getTime() + m);
496
+ const a = f.getTime() - d.getTime(), c = s * 60 * 1e3;
497
+ a < c && (f = new Date(d.getTime() + c));
498
+ }
499
+ return {
500
+ startDate: d,
501
+ endDate: f,
502
+ // Which column the drag began in. Without this a resource grid cannot
503
+ // tell the consumer whose day was selected, and every event created by
504
+ // dragging lands on the current user instead.
505
+ ...n.resourceId !== void 0 && { resourceId: n.resourceId }
506
+ };
507
+ }
508
+ function Ue(n, t, r, s) {
509
+ if (t.resourceId !== void 0 && n.resourceId !== t.resourceId)
510
+ return !1;
511
+ const l = U(n), u = U(t), S = U(r), d = u <= S ? u : S, f = u <= S ? S : u;
512
+ if (s === "day") {
513
+ const m = new Date(l);
514
+ m.setHours(0, 0, 0, 0);
515
+ const a = new Date(d);
516
+ a.setHours(0, 0, 0, 0);
517
+ const c = new Date(f);
518
+ return c.setHours(0, 0, 0, 0), m >= a && m <= c;
519
+ }
520
+ return l >= d && l <= f;
521
+ }
522
+ function Ge({
523
+ children: n,
524
+ mode: t = "time",
525
+ onSelect: r,
526
+ minDurationMinutes: s = 30,
527
+ slotDurationMinutes: l = 30,
528
+ enabled: u = !0
529
+ }) {
530
+ const [S, d] = h(null), f = A(!1), m = A(!1), a = A(null), c = g(() => {
531
+ m.current = !0, a.current && clearTimeout(a.current), a.current = setTimeout(() => {
532
+ m.current = !1;
533
+ }, 300);
534
+ }, []), I = g(
535
+ (e) => {
536
+ !u || m.current || (f.current = !0, d({
537
+ start: e,
538
+ end: e,
539
+ isSelecting: !0
540
+ }));
541
+ },
542
+ [u]
543
+ ), p = g(
544
+ (e) => {
545
+ u && f.current && d((o) => o ? o.start.resourceId !== void 0 && e.resourceId !== o.start.resourceId ? o : {
546
+ ...o,
547
+ end: e
548
+ } : null);
549
+ },
550
+ [u]
551
+ ), k = g(() => {
552
+ f.current && (f.current = !1, d((e) => {
553
+ if (!e) return null;
554
+ const o = de(
555
+ e.start,
556
+ e.end,
557
+ t,
558
+ s,
559
+ l
560
+ );
561
+ return r?.(o), {
562
+ ...e,
563
+ isSelecting: !1
564
+ };
565
+ }), setTimeout(() => {
566
+ d(null);
567
+ }, 100));
568
+ }, [t, s, l, r]), O = g(() => {
569
+ f.current = !1, d(null);
570
+ }, []), T = g(
571
+ (e) => S ? Ue(e, S.start, S.end, t) : !1,
572
+ [S, t]
573
+ ), H = g(() => S ? de(
574
+ S.start,
575
+ S.end,
576
+ t,
577
+ s,
578
+ l
579
+ ) : null, [S, t, s, l]), D = _(
580
+ () => ({
581
+ isSelecting: S?.isSelecting ?? !1,
582
+ startSelection: I,
583
+ updateSelection: p,
584
+ endSelection: k,
585
+ cancelSelection: O,
586
+ isSlotSelected: T,
587
+ getSelectionResult: H,
588
+ mode: t,
589
+ suppressSelection: c
590
+ }),
591
+ [
592
+ S?.isSelecting,
593
+ I,
594
+ p,
595
+ k,
596
+ O,
597
+ T,
598
+ H,
599
+ t,
600
+ c
601
+ ]
602
+ );
603
+ return /* @__PURE__ */ Y(K.Provider, { value: D, children: n });
604
+ }
605
+ function Ze() {
606
+ const n = W(K);
607
+ if (!n)
608
+ throw new Error("useSlotSelectionContext must be used within a SlotSelectionProvider");
609
+ return n;
610
+ }
611
+ function Je() {
612
+ return W(K);
613
+ }
614
+ const qe = 1e3, Xe = 1100, et = 1200;
615
+ export {
616
+ Me as D,
617
+ qe as I,
618
+ Ge as S,
619
+ Xe as a,
620
+ et as b,
621
+ Ye as c,
622
+ he as d,
623
+ He as e,
624
+ ke as f,
625
+ Ae as g,
626
+ F as h,
627
+ Be as i,
628
+ Ke as j,
629
+ Qe as k,
630
+ ze as l,
631
+ je as m,
632
+ $e as n,
633
+ Je as o,
634
+ Ze as p,
635
+ Ce as u
636
+ };
637
+ //# sourceMappingURL=z-layers-CpHPAMdp.js.map