@innosolutions/inno-calendar 1.0.70 → 1.0.71

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