@innosolutions/inno-calendar 1.0.47 → 1.0.49

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 (54) hide show
  1. package/dist/agenda-widget-B-AVTnqM.cjs +2 -0
  2. package/dist/agenda-widget-B-AVTnqM.cjs.map +1 -0
  3. package/dist/{agenda-widget-BiuoHkpP.js → agenda-widget-DhCPt2vI.js} +941 -929
  4. package/dist/agenda-widget-DhCPt2vI.js.map +1 -0
  5. package/dist/components/event/event-card.d.ts.map +1 -1
  6. package/dist/components/index.cjs +1 -1
  7. package/dist/components/index.mjs +2 -2
  8. package/dist/components/inno-calendar.d.ts +11 -0
  9. package/dist/components/inno-calendar.d.ts.map +1 -1
  10. package/dist/core/context/inno-calendar-provider.d.ts +15 -1
  11. package/dist/core/context/inno-calendar-provider.d.ts.map +1 -1
  12. package/dist/core/index.cjs +1 -1
  13. package/dist/core/index.mjs +43 -43
  14. package/dist/core/types.d.ts +12 -0
  15. package/dist/core/types.d.ts.map +1 -1
  16. package/dist/index.cjs +1 -1
  17. package/dist/index.mjs +62 -62
  18. package/dist/presets/index.cjs +1 -1
  19. package/dist/presets/index.mjs +1 -1
  20. package/dist/slot-selection-context-BCsC7WT7.cjs +2 -0
  21. package/dist/slot-selection-context-BCsC7WT7.cjs.map +1 -0
  22. package/dist/slot-selection-context-D1495hEJ.js +595 -0
  23. package/dist/slot-selection-context-D1495hEJ.js.map +1 -0
  24. package/dist/{tailwind-calendar-7wDEMPEi.js → tailwind-calendar-BmJa4HhQ.js} +2 -2
  25. package/dist/{tailwind-calendar-7wDEMPEi.js.map → tailwind-calendar-BmJa4HhQ.js.map} +1 -1
  26. package/dist/{tailwind-calendar-QMXCp1an.cjs → tailwind-calendar-CJmOutn1.cjs} +2 -2
  27. package/dist/{tailwind-calendar-QMXCp1an.cjs.map → tailwind-calendar-CJmOutn1.cjs.map} +1 -1
  28. package/dist/use-calendar-BEuelmSu.cjs +2 -0
  29. package/dist/use-calendar-BEuelmSu.cjs.map +1 -0
  30. package/dist/use-calendar-Clo9DFK4.js +175 -0
  31. package/dist/use-calendar-Clo9DFK4.js.map +1 -0
  32. package/dist/{use-slot-selection-BJHlyfxL.js → use-slot-selection-BCZKnZSM.js} +2 -2
  33. package/dist/{use-slot-selection-BJHlyfxL.js.map → use-slot-selection-BCZKnZSM.js.map} +1 -1
  34. package/dist/{use-slot-selection-CTFC2-xS.cjs → use-slot-selection-Bwqwjiaq.cjs} +2 -2
  35. package/dist/{use-slot-selection-CTFC2-xS.cjs.map → use-slot-selection-Bwqwjiaq.cjs.map} +1 -1
  36. package/dist/week-view-D19YRBQC.cjs +11 -0
  37. package/dist/week-view-D19YRBQC.cjs.map +1 -0
  38. package/dist/{week-view-C4YFlrPS.js → week-view-aRPB2cjn.js} +922 -904
  39. package/dist/week-view-aRPB2cjn.js.map +1 -0
  40. package/package.json +1 -1
  41. package/dist/agenda-widget-BREvI5ia.cjs +0 -2
  42. package/dist/agenda-widget-BREvI5ia.cjs.map +0 -1
  43. package/dist/agenda-widget-BiuoHkpP.js.map +0 -1
  44. package/dist/slot-selection-context-Bx3FKJfR.cjs +0 -2
  45. package/dist/slot-selection-context-Bx3FKJfR.cjs.map +0 -1
  46. package/dist/slot-selection-context-D2eu2o-7.js +0 -203
  47. package/dist/slot-selection-context-D2eu2o-7.js.map +0 -1
  48. package/dist/use-calendar-DR2emWYC.js +0 -555
  49. package/dist/use-calendar-DR2emWYC.js.map +0 -1
  50. package/dist/use-calendar-DR89bZu5.cjs +0 -2
  51. package/dist/use-calendar-DR89bZu5.cjs.map +0 -1
  52. package/dist/week-view-C4YFlrPS.js.map +0 -1
  53. package/dist/week-view-DWLMtGVt.cjs +0 -11
  54. package/dist/week-view-DWLMtGVt.cjs.map +0 -1
@@ -1,555 +0,0 @@
1
- import { jsx as oe } from "react/jsx-runtime";
2
- import { createContext as re, useContext as M, useMemo as P, useState as h, useEffect as ae, useCallback as l } from "react";
3
- import { DEFAULT_PREFERENCES as ue, getViewDateRange as de, getViewTitle as fe, filterEventsByDateRange as ge, filterEventsByScheduleType as we, filterEventsByResource as ye, filterEventsBySearch as ve, filterOutCanceled as Se, sortEventsByStart as be, navigateNext as pe, navigatePrev as ke, navigateToday as he } from "./utils.mjs";
4
- const X = re(void 0);
5
- function Le({ children: n, value: s }) {
6
- return /* @__PURE__ */ oe(X.Provider, { value: s, children: n });
7
- }
8
- function R() {
9
- const n = M(X);
10
- if (!n)
11
- throw new Error("useCalendarContext must be used within a CalendarProvider");
12
- return n;
13
- }
14
- function Ue() {
15
- return M(X);
16
- }
17
- function xe() {
18
- const { view: n, setView: s } = R();
19
- return { view: n, setView: s };
20
- }
21
- function _e() {
22
- const { currentDate: n, setCurrentDate: s, goToNext: t, goToPrev: a, goToToday: y, goToDate: v } = R();
23
- return { currentDate: n, setCurrentDate: s, goToNext: t, goToPrev: a, goToToday: y, goToDate: v };
24
- }
25
- function Re() {
26
- const { events: n, filteredEvents: s } = R();
27
- return { events: n, filteredEvents: s };
28
- }
29
- function Ne() {
30
- const { filters: n, setFilters: s, updateFilters: t, clearFilters: a } = R();
31
- return { filters: n, setFilters: s, updateFilters: t, clearFilters: a };
32
- }
33
- function Ae() {
34
- const { preferences: n, setPreferences: s } = R();
35
- return { preferences: n, setPreferences: s };
36
- }
37
- const Ce = "inno-calendar-preferences", me = {
38
- from: 0,
39
- to: 24
40
- }, De = {
41
- 0: { enabled: !1, from: 8, to: 18 },
42
- // Sunday - disabled
43
- 1: { enabled: !0, from: 8, to: 18 },
44
- // Monday
45
- 2: { enabled: !0, from: 8, to: 18 },
46
- // Tuesday
47
- 3: { enabled: !0, from: 8, to: 18 },
48
- // Wednesday
49
- 4: { enabled: !0, from: 8, to: 18 },
50
- // Thursday
51
- 5: { enabled: !0, from: 8, to: 18 },
52
- // Friday
53
- 6: { enabled: !1, from: 8, to: 18 }
54
- // Saturday - disabled
55
- }, Ie = 30, He = {
56
- view: "month",
57
- badgeVariant: "colored",
58
- slotDuration: Ie,
59
- visibleHours: me,
60
- workingHours: De,
61
- showWorkingHoursOnly: !1,
62
- showWeekends: !0,
63
- firstDayOfWeek: 1
64
- };
65
- function Ee(n) {
66
- if (typeof window > "u") return {};
67
- try {
68
- const s = localStorage.getItem(n);
69
- if (!s) return {};
70
- const t = JSON.parse(s), a = {};
71
- return t.view && typeof t.view == "string" && (a.view = t.view), t.badgeVariant && typeof t.badgeVariant == "string" && (a.badgeVariant = t.badgeVariant), t.slotDuration && typeof t.slotDuration == "number" && (a.slotDuration = t.slotDuration), t.visibleHours && typeof t.visibleHours == "object" && (a.visibleHours = t.visibleHours), t.workingHours && typeof t.workingHours == "object" && (a.workingHours = t.workingHours), typeof t.showWorkingHoursOnly == "boolean" && (a.showWorkingHoursOnly = t.showWorkingHoursOnly), typeof t.showWeekends == "boolean" && (a.showWeekends = t.showWeekends), typeof t.firstDayOfWeek == "number" && (a.firstDayOfWeek = t.firstDayOfWeek), a;
72
- } catch {
73
- return console.warn("[InnoCalendar] Failed to load preferences from localStorage"), {};
74
- }
75
- }
76
- function Oe(n, s) {
77
- if (!(typeof window > "u"))
78
- try {
79
- localStorage.setItem(n, JSON.stringify(s));
80
- } catch {
81
- console.warn("[InnoCalendar] Failed to save preferences to localStorage");
82
- }
83
- }
84
- function Te(n = {}) {
85
- const {
86
- modes: s = {},
87
- locked: t = {},
88
- defaults: a = {},
89
- storageKey: y = Ce,
90
- disableStorage: v = !1
91
- } = n, F = P(
92
- () => ({
93
- ...He,
94
- ...a
95
- }),
96
- [a]
97
- ), [I, C] = h(() => v ? {} : Ee(y)), [H, E] = h({});
98
- ae(() => {
99
- v || Oe(y, I);
100
- }, [I, y, v]);
101
- const g = l(
102
- (o) => s[o] ?? "user",
103
- [s]
104
- ), W = l(
105
- (o) => g(o) === "locked",
106
- [g]
107
- ), V = l(
108
- (o) => g(o) === "user" && !v,
109
- [g, v]
110
- ), S = P(() => {
111
- const o = { ...F };
112
- for (const i of Object.keys(o)) {
113
- const c = g(i);
114
- c === "locked" && i in t ? o[i] = t[i] : c === "session" && i in H ? o[i] = H[i] : c === "user" && i in I && (o[i] = I[i]);
115
- }
116
- return o;
117
- }, [F, I, H, t, g]), u = l(
118
- (o, i) => {
119
- const c = g(o);
120
- if (c === "locked") {
121
- console.warn(`[InnoCalendar] Preference "${o}" is locked and cannot be modified`);
122
- return;
123
- }
124
- c === "session" ? E((d) => ({ ...d, [o]: i })) : C((d) => ({ ...d, [o]: i }));
125
- },
126
- [g]
127
- ), w = l(
128
- (o) => {
129
- const i = {}, c = {};
130
- for (const d of Object.keys(o)) {
131
- const k = g(d), T = o[d];
132
- if (T !== void 0) {
133
- if (k === "locked") {
134
- console.warn(`[InnoCalendar] Preference "${d}" is locked and cannot be modified`);
135
- continue;
136
- }
137
- k === "session" ? i[d] = T : c[d] = T;
138
- }
139
- }
140
- Object.keys(i).length > 0 && E((d) => ({ ...d, ...i })), Object.keys(c).length > 0 && C((d) => ({ ...d, ...c }));
141
- },
142
- [g]
143
- ), b = l(() => {
144
- C({}), E({}), v || localStorage.removeItem(y);
145
- }, [y, v]), x = l(
146
- (o) => {
147
- const i = g(o);
148
- if (i === "locked") {
149
- console.warn(`[InnoCalendar] Preference "${o}" is locked and cannot be reset`);
150
- return;
151
- }
152
- i === "session" ? E((c) => {
153
- const { [o]: d, ...k } = c;
154
- return k;
155
- }) : C((c) => {
156
- const { [o]: d, ...k } = c;
157
- return k;
158
- });
159
- },
160
- [g]
161
- );
162
- return {
163
- preferences: S,
164
- setPreference: u,
165
- setPreferences: w,
166
- resetPreferences: b,
167
- resetPreference: x,
168
- isLocked: W,
169
- isPersisted: V,
170
- getMode: g
171
- };
172
- }
173
- const Z = re(void 0), se = {
174
- 0: { enabled: !1, from: 8, to: 17 },
175
- // Sunday
176
- 1: { enabled: !0, from: 8, to: 17 },
177
- // Monday
178
- 2: { enabled: !0, from: 8, to: 17 },
179
- // Tuesday
180
- 3: { enabled: !0, from: 8, to: 17 },
181
- // Wednesday
182
- 4: { enabled: !0, from: 8, to: 17 },
183
- // Thursday
184
- 5: { enabled: !0, from: 8, to: 17 },
185
- // Friday
186
- 6: { enabled: !0, from: 8, to: 12 }
187
- // Saturday
188
- }, Pe = { start: 0, end: 24 };
189
- function je({
190
- children: n,
191
- initialEvents: s = [],
192
- initialUsers: t = [],
193
- initialScheduleTypes: a = [],
194
- initialView: y,
195
- initialDate: v,
196
- initialSelectedUserId: F = "all",
197
- initialScheduleTypeIds: I = [],
198
- initialParticipantIds: C = [],
199
- initialWorkingHoursView: H = "default",
200
- initialSearchQuery: E = "",
201
- preferencesConfig: g,
202
- onDateChange: W,
203
- onViewChange: V
204
- }) {
205
- const { preferences: S, setPreference: u, isLocked: w } = Te(g), [b, x] = h(
206
- y ?? S.view ?? "week"
207
- ), [o, i] = h(
208
- v ?? /* @__PURE__ */ new Date()
209
- ), [c, d] = h(
210
- F
211
- ), k = S.badgeVariant ?? "colored", T = l(
212
- (r) => {
213
- w("badgeVariant") || u("badgeVariant", r);
214
- },
215
- [u, w]
216
- ), N = S.workingHours ?? se, A = l(
217
- (r) => {
218
- if (!w("workingHours")) {
219
- const f = S.workingHours ?? se, D = typeof r == "function" ? r(f) : r;
220
- u("workingHours", D);
221
- }
222
- },
223
- [u, w, S.workingHours]
224
- ), p = S.visibleHours, L = P(() => p ? {
225
- start: p.start ?? p.from ?? 0,
226
- end: p.end ?? p.to ?? 24
227
- } : Pe, [p]), j = l(
228
- (r) => {
229
- if (!w("visibleHours")) {
230
- const f = typeof r == "function" ? r(L) : r;
231
- u("visibleHours", {
232
- from: f.start,
233
- to: f.end
234
- });
235
- }
236
- },
237
- [u, w, L]
238
- ), [Y, q] = h(
239
- H === "enabled" ? !0 : H === "disabled" ? !1 : S.showWorkingHoursOnly ?? !1
240
- ), B = Y, $ = l(
241
- (r) => {
242
- q(r), w("showWorkingHoursOnly") || u("showWorkingHoursOnly", r);
243
- },
244
- [u, w]
245
- ), K = S.slotDuration ?? 30, Q = l(
246
- (r) => {
247
- w("slotDuration") || u("slotDuration", r);
248
- },
249
- [u, w]
250
- ), [U, G] = h(s);
251
- ae(() => {
252
- G(s);
253
- }, [s]);
254
- const [e, O] = h(I), [m, z] = h(C), [_, ie] = h(E), ee = l(
255
- (r) => {
256
- x(r), w("view") || u("view", r), V?.(r);
257
- },
258
- [V, u, w]
259
- ), te = l(
260
- (r, f) => {
261
- i(r), W?.(r, f ?? b);
262
- },
263
- [W, b]
264
- ), ne = P(() => {
265
- let r = U;
266
- if (e.length > 0 && (r = r.filter(
267
- (f) => f.scheduleTypeId !== void 0 && e.includes(f.scheduleTypeId)
268
- )), m.length > 0 && (r = r.filter((f) => f.participants?.length ? f.participants.some(
269
- (D) => m.includes(D.id)
270
- ) : !1)), c !== "all" && (r = r.filter(
271
- (f) => f.participants?.some((D) => D.id === c)
272
- )), _.trim()) {
273
- const f = _.toLowerCase();
274
- r = r.filter(
275
- (D) => D.title.toLowerCase().includes(f) || D.description?.toLowerCase().includes(f) || D.scheduleTypeName?.toLowerCase().includes(f) || D.participants?.some((le) => le.name.toLowerCase().includes(f))
276
- );
277
- }
278
- return r;
279
- }, [
280
- U,
281
- e,
282
- m,
283
- c,
284
- _
285
- ]), ce = P(
286
- () => ({
287
- // View & Navigation
288
- view: b,
289
- setView: ee,
290
- selectedDate: o,
291
- setSelectedDate: te,
292
- // User Filtering
293
- selectedUserId: c,
294
- setSelectedUserId: d,
295
- // Visual Customization
296
- badgeVariant: k,
297
- setBadgeVariant: T,
298
- // Time Configuration
299
- workingHours: N,
300
- setWorkingHours: A,
301
- visibleHours: L,
302
- setVisibleHours: j,
303
- showWorkingHoursOnly: B,
304
- setShowWorkingHoursOnly: $,
305
- slotDuration: K,
306
- setSlotDuration: Q,
307
- // Preferences
308
- isPreferenceLocked: w,
309
- // Data
310
- events: U,
311
- setEvents: G,
312
- users: t,
313
- scheduleTypes: a,
314
- // Filters
315
- selectedScheduleTypeIds: e,
316
- setSelectedScheduleTypeIds: O,
317
- // Search
318
- searchQuery: _,
319
- setSearchQuery: ie,
320
- // Computed
321
- filteredEvents: ne
322
- }),
323
- [
324
- b,
325
- ee,
326
- o,
327
- te,
328
- c,
329
- k,
330
- T,
331
- N,
332
- A,
333
- L,
334
- j,
335
- B,
336
- $,
337
- K,
338
- Q,
339
- w,
340
- U,
341
- t,
342
- a,
343
- e,
344
- _,
345
- ne
346
- ]
347
- );
348
- return /* @__PURE__ */ oe(Z.Provider, { value: ce, children: n });
349
- }
350
- function J() {
351
- const n = M(Z);
352
- if (!n)
353
- throw new Error(
354
- "useInnoCalendar must be used within an InnoCalendarProvider"
355
- );
356
- return n;
357
- }
358
- function Be() {
359
- return M(Z);
360
- }
361
- function $e() {
362
- const { view: n, setView: s, selectedDate: t, setSelectedDate: a, slotDuration: y } = J();
363
- return { view: n, setView: s, selectedDate: t, setSelectedDate: a, slotDuration: y };
364
- }
365
- function Ke() {
366
- const { events: n, setEvents: s, filteredEvents: t } = J();
367
- return { events: n, setEvents: s, filteredEvents: t };
368
- }
369
- function Qe() {
370
- const {
371
- selectedScheduleTypeIds: n,
372
- setSelectedScheduleTypeIds: s,
373
- selectedUserId: t,
374
- setSelectedUserId: a,
375
- searchQuery: y,
376
- setSearchQuery: v
377
- } = J();
378
- return {
379
- selectedScheduleTypeIds: n,
380
- setSelectedScheduleTypeIds: s,
381
- selectedUserId: t,
382
- setSelectedUserId: a,
383
- searchQuery: y,
384
- setSearchQuery: v
385
- };
386
- }
387
- function Ge() {
388
- const {
389
- workingHours: n,
390
- setWorkingHours: s,
391
- visibleHours: t,
392
- setVisibleHours: a,
393
- showWorkingHoursOnly: y,
394
- setShowWorkingHoursOnly: v
395
- } = J();
396
- return {
397
- workingHours: n,
398
- setWorkingHours: s,
399
- visibleHours: t,
400
- setVisibleHours: a,
401
- showWorkingHoursOnly: y,
402
- setShowWorkingHoursOnly: v
403
- };
404
- }
405
- function Me(n) {
406
- const {
407
- events: s,
408
- resources: t = [],
409
- scheduleTypes: a = [],
410
- initialView: y = "week",
411
- initialDate: v,
412
- initialFilters: F = {},
413
- preferences: I = {},
414
- lockedPreferences: C = {},
415
- locale: H = "en-US",
416
- onViewChange: E,
417
- onDateChange: g,
418
- onEventClick: W,
419
- onSlotSelect: V,
420
- onFiltersChange: S
421
- } = n, [u, w] = h(y), [b, x] = h(() => v ?? /* @__PURE__ */ new Date()), [o, i] = h(F), [c, d] = h(() => ({
422
- ...ue,
423
- ...I,
424
- ...C
425
- })), k = P(
426
- () => de(b, u, c.firstDayOfWeek),
427
- [b, u, c.firstDayOfWeek]
428
- ), T = P(
429
- () => fe(b, u, H),
430
- [b, u, H]
431
- ), N = P(() => {
432
- let e = [...s];
433
- e = ge(e, k.startDate, k.endDate);
434
- const O = o.scheduleTypeIds;
435
- O && O.length > 0 && (e = we(e, O));
436
- const m = o.resourceIds;
437
- m && m.length > 0 && (e = ye(e, m));
438
- const z = o.search;
439
- return z && (e = ve(e, z)), c.showCanceledEvents || (e = Se(e)), be(e);
440
- }, [s, k, o, c.showCanceledEvents]), A = l(
441
- (e) => {
442
- w(e), E?.(e);
443
- },
444
- [E]
445
- ), p = l(
446
- (e) => {
447
- x(e), g?.(e);
448
- },
449
- [g]
450
- ), L = l(() => {
451
- const e = pe(b, u);
452
- p(e);
453
- }, [b, u, p]), j = l(() => {
454
- const e = ke(b, u);
455
- p(e);
456
- }, [b, u, p]), Y = l(() => {
457
- p(he());
458
- }, [p]), q = l(
459
- (e) => {
460
- p(e);
461
- },
462
- [p]
463
- ), B = l(
464
- (e) => {
465
- i(e), S?.(e);
466
- },
467
- [S]
468
- ), $ = l(
469
- (e) => {
470
- i((O) => {
471
- const m = { ...O, ...e };
472
- return S?.(m), m;
473
- });
474
- },
475
- [S]
476
- ), K = l(() => {
477
- const e = {};
478
- i(e), S?.(e);
479
- }, [S]), Q = l(
480
- (e) => {
481
- d((O) => ({
482
- ...O,
483
- ...e,
484
- ...C
485
- // Locked prefs always override
486
- }));
487
- },
488
- [C]
489
- ), U = l(
490
- (e) => {
491
- W?.(e);
492
- },
493
- [W]
494
- ), G = l(
495
- (e) => {
496
- V?.(e);
497
- },
498
- [V]
499
- );
500
- return {
501
- // State
502
- view: u,
503
- currentDate: b,
504
- dateRange: k,
505
- filters: o,
506
- preferences: c,
507
- // Computed
508
- filteredEvents: N,
509
- viewTitle: T,
510
- // Data
511
- events: s,
512
- resources: t,
513
- scheduleTypes: a,
514
- // Actions
515
- setView: A,
516
- setCurrentDate: p,
517
- goToNext: L,
518
- goToPrev: j,
519
- goToToday: Y,
520
- goToDate: q,
521
- // Filters
522
- setFilters: B,
523
- updateFilters: $,
524
- clearFilters: K,
525
- // Preferences
526
- setPreferences: Q,
527
- // Event handlers
528
- handleEventClick: U,
529
- handleSlotSelect: G
530
- };
531
- }
532
- export {
533
- Le as C,
534
- Ie as D,
535
- je as I,
536
- Ce as P,
537
- me as a,
538
- De as b,
539
- Me as c,
540
- R as d,
541
- _e as e,
542
- Re as f,
543
- Ne as g,
544
- Ae as h,
545
- xe as i,
546
- J as j,
547
- Ke as k,
548
- Qe as l,
549
- Ge as m,
550
- $e as n,
551
- Ue as o,
552
- Be as p,
553
- Te as u
554
- };
555
- //# sourceMappingURL=use-calendar-DR2emWYC.js.map