@calends/vue 0.0.0-stage → 0.1.0

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 (41) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +138 -2
  3. package/dist/CalendarHeading.vue.d.ts +18 -0
  4. package/dist/CalendarNav.vue.d.ts +19 -0
  5. package/dist/CalendarRoot.vue.d.ts +63 -0
  6. package/dist/EventBar.vue.d.ts +34 -0
  7. package/dist/EventResizeHandle.vue.d.ts +23 -0
  8. package/dist/Gantt.vue.d.ts +21 -0
  9. package/dist/GanttBar.vue.d.ts +24 -0
  10. package/dist/GanttLinks.vue.d.ts +37 -0
  11. package/dist/GanttRow.vue.d.ts +23 -0
  12. package/dist/GanttToday.vue.d.ts +16 -0
  13. package/dist/GanttTrack.vue.d.ts +16 -0
  14. package/dist/MonthDay.vue.d.ts +25 -0
  15. package/dist/MonthDayMore.vue.d.ts +24 -0
  16. package/dist/MonthGrid.vue.d.ts +20 -0
  17. package/dist/MonthWeek.vue.d.ts +23 -0
  18. package/dist/MonthWeekday.vue.d.ts +22 -0
  19. package/dist/NowIndicator.vue.d.ts +21 -0
  20. package/dist/ResourceCell.vue.d.ts +29 -0
  21. package/dist/ResourceDayHeader.vue.d.ts +23 -0
  22. package/dist/ResourceGrid.vue.d.ts +20 -0
  23. package/dist/ResourceLabel.vue.d.ts +25 -0
  24. package/dist/ResourceRow.vue.d.ts +24 -0
  25. package/dist/TimeColumn.vue.d.ts +23 -0
  26. package/dist/TimeEvent.vue.d.ts +27 -0
  27. package/dist/TimeGrid.vue.d.ts +24 -0
  28. package/dist/TimeSelection.vue.d.ts +24 -0
  29. package/dist/Timeline.vue.d.ts +20 -0
  30. package/dist/TimelineEvent.vue.d.ts +27 -0
  31. package/dist/TimelineNow.vue.d.ts +16 -0
  32. package/dist/TimelineRow.vue.d.ts +24 -0
  33. package/dist/TimelineSelection.vue.d.ts +24 -0
  34. package/dist/TimelineTrack.vue.d.ts +21 -0
  35. package/dist/index.d.ts +35 -0
  36. package/dist/index.js +1757 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/useCalendar.d.ts +111 -0
  39. package/dist/useEventState.d.ts +26 -0
  40. package/dist/useInteractions.d.ts +112 -0
  41. package/package.json +51 -3
package/dist/index.js ADDED
@@ -0,0 +1,1757 @@
1
+ import { computed as e, createBlock as t, createCommentVNode as n, createElementBlock as r, createTextVNode as i, defineComponent as a, inject as o, mergeModels as s, nextTick as c, normalizeStyle as l, onBeforeUnmount as u, onMounted as d, onScopeDispose as f, openBlock as p, provide as m, ref as h, renderSlot as g, shallowRef as _, toDisplayString as v, toValue as y, unref as b, useModel as x, watch as S, withCtx as C, withModifiers as w } from "vue";
2
+ import { Primitive as T } from "reka-ui";
3
+ import { createGantt as E, createMonthGrid as D, createResourceGrid as O, createTimeGrid as k, createTimeline as A, daysBetween as j, ganttLinkArrow as M, isSamePeriod as N, localTimeZone as P, moveEvent as F, navigate as I, normalizeEvents as L, orderedRange as R, periodRange as z, periodTitle as ee, resizeEvent as B, roundedPath as te, routeGanttLink as ne, snapMinutes as re, startOfWeek as V, wallMinutes as H, withTimes as U } from "@calends/core";
4
+ // src/useInteractions.ts
5
+ var ie = 4, W = "a[href], button, [tabindex]:not([tabindex=\"-1\"])";
6
+ function G(t) {
7
+ let n = _(null), r = _(null), i = h(""), a = e(() => y(t.editable) ?? !1), o = e(() => y(t.selectable) ?? !1), s = e(() => y(t.snapMinutes) ?? 15), l = e(() => y(t.slotMinMinutes) ?? 0), u = e(() => y(t.slotMaxMinutes) ?? 1440);
8
+ function d(e) {
9
+ return a.value && (t.canEdit?.(e.source) ?? !0);
10
+ }
11
+ function p(e) {
12
+ if (e === void 0) return;
13
+ if (e === "") return null;
14
+ let n = (y(t.resources) ?? []).find((t) => String(t.id) === e);
15
+ return n ? n.id : e;
16
+ }
17
+ function m(e, n) {
18
+ for (let r of document.elementsFromPoint(e, n)) {
19
+ if (r.closest("[data-event-id]")) continue;
20
+ let i = r.closest("[data-drop]");
21
+ if (!i) continue;
22
+ let a = i.dataset.drop, o = p(i.dataset.resourceId), s = i.getBoundingClientRect(), c = u.value - l.value;
23
+ if (a === "dayaxis") {
24
+ let t = Number(i.dataset.axisDays), n = Math.min(Math.max((e - s.left) / s.width, 0), .9999);
25
+ return {
26
+ kind: a,
27
+ date: Temporal.PlainDate.from(i.dataset.axisStart).add({ days: Math.floor(n * t) }),
28
+ minutes: null,
29
+ resourceId: o
30
+ };
31
+ }
32
+ if (a === "axis") {
33
+ let n = Number(i.dataset.axisMinutes), r = Math.min(Math.max((e - s.left) / s.width, 0), .9999) * n, u = Math.floor(r / c);
34
+ return {
35
+ kind: a,
36
+ date: t.rangeStart.value.add({ days: u }),
37
+ minutes: l.value + (r - u * c),
38
+ resourceId: o
39
+ };
40
+ }
41
+ let d = Temporal.PlainDate.from(i.dataset.date);
42
+ if (a === "time") {
43
+ let e = Math.min(Math.max((n - s.top) / s.height, 0), 1);
44
+ return {
45
+ kind: a,
46
+ date: d,
47
+ minutes: l.value + e * c,
48
+ resourceId: o
49
+ };
50
+ }
51
+ return {
52
+ kind: a,
53
+ date: d,
54
+ minutes: null,
55
+ resourceId: o
56
+ };
57
+ }
58
+ return null;
59
+ }
60
+ function g(e, t) {
61
+ return {
62
+ days: j(e.date, t.date),
63
+ minutes: e.minutes !== null && t.minutes !== null ? re(t.minutes - e.minutes, s.value) : 0
64
+ };
65
+ }
66
+ function v(e, t) {
67
+ let r = g(e.origin, t), i = e.kind === "move" ? F(e.event, r) : B(e.event, e.kind === "resize-start" ? "start" : "end", r, s.value), a = e.kind === "move" && t.resourceId !== void 0 && e.origin.resourceId !== void 0 ? t.resourceId : e.origin.resourceId;
68
+ n.value = {
69
+ ...e,
70
+ started: !0,
71
+ preview: i,
72
+ resourceId: a
73
+ };
74
+ }
75
+ let b = e(() => {
76
+ let e = n.value;
77
+ return e?.started ? t.events.value.map((t) => t.id === e.event.id ? U(t, e.preview) : t) : t.events.value;
78
+ });
79
+ function x(e) {
80
+ let r = t.getResourceIds?.(e), i = n.value;
81
+ if (!i?.started || i.event.source !== e || i.resourceId === i.origin.resourceId) return r;
82
+ let a = (r ?? []).filter((e) => e !== i.origin.resourceId);
83
+ return i.resourceId === null || i.resourceId === void 0 ? a : [.../* @__PURE__ */ new Set([...a, i.resourceId])];
84
+ }
85
+ function S(e) {
86
+ return !!(n.value?.started && n.value.event.id === e.id);
87
+ }
88
+ function C(e) {
89
+ return !e.preview.start.equals(e.event.start) || !e.preview.end.equals(e.event.end) || e.resourceId !== e.origin.resourceId;
90
+ }
91
+ function w(e) {
92
+ if (!C(e)) return;
93
+ let n = {
94
+ event: e.event.source,
95
+ start: e.preview.start,
96
+ end: e.preview.end,
97
+ previousStart: e.event.start,
98
+ previousEnd: e.event.end,
99
+ allDay: e.event.allDay
100
+ };
101
+ e.resourceId !== e.origin.resourceId && (n.resourceId = e.resourceId, n.previousResourceId = e.origin.resourceId), e.kind === "move" ? t.onEventDrop?.(n) : t.onEventResize?.(n);
102
+ }
103
+ function T() {
104
+ let e = (e) => {
105
+ e.preventDefault(), e.stopPropagation();
106
+ };
107
+ window.addEventListener("click", e, {
108
+ capture: !0,
109
+ once: !0
110
+ }), setTimeout(() => window.removeEventListener("click", e, { capture: !0 }), 0);
111
+ }
112
+ function E(e, t, r) {
113
+ if (e.button !== 0 || e.pointerType === "touch" || !d(t)) return;
114
+ let i = m(e.clientX, e.clientY);
115
+ if (!i) return;
116
+ e.preventDefault(), r !== "move" && e.stopPropagation(), n.value = {
117
+ kind: r,
118
+ event: t,
119
+ origin: i,
120
+ started: !1,
121
+ keyboard: !1,
122
+ pointer: {
123
+ x: e.clientX,
124
+ y: e.clientY
125
+ },
126
+ preview: {
127
+ start: t.start,
128
+ end: t.end
129
+ },
130
+ resourceId: i.resourceId,
131
+ moveDelta: {},
132
+ endDelta: {}
133
+ };
134
+ let a = (e) => {
135
+ let t = n.value;
136
+ if (!t) return;
137
+ let r = Math.hypot(e.clientX - t.pointer.x, e.clientY - t.pointer.y);
138
+ if (!t.started && r < ie) return;
139
+ let i = m(e.clientX, e.clientY);
140
+ i && v(t, i);
141
+ }, o = (e) => {
142
+ window.removeEventListener("pointermove", a), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", c), window.removeEventListener("keydown", l);
143
+ let t = n.value;
144
+ n.value = null, t?.started && (T(), e || w(t));
145
+ }, s = () => o(!1), c = () => o(!0), l = (e) => e.key === "Escape" && o(!0);
146
+ window.addEventListener("pointermove", a), window.addEventListener("pointerup", s), window.addEventListener("pointercancel", c), window.addEventListener("keydown", l);
147
+ }
148
+ function D(e) {
149
+ let n = e.target;
150
+ if (!o.value || e.button !== 0 || e.pointerType === "touch" || n?.closest("[data-event-id], [data-calendar-control]")) return;
151
+ let i = m(e.clientX, e.clientY);
152
+ if (!i) return;
153
+ e.preventDefault(), n?.closest("[role=\"gridcell\"]")?.focus(), r.value = {
154
+ anchor: i,
155
+ current: i
156
+ };
157
+ let a = (e) => {
158
+ let t = m(e.clientX, e.clientY);
159
+ t && t.kind === i.kind && (r.value = {
160
+ anchor: i,
161
+ current: t
162
+ });
163
+ }, s = (e) => {
164
+ window.removeEventListener("pointermove", a), window.removeEventListener("pointerup", c), window.removeEventListener("pointercancel", l), window.removeEventListener("keydown", u);
165
+ let n = k.value;
166
+ r.value = null, !e && n && t.onRangeSelect?.(n.detail);
167
+ }, c = () => s(!1), l = () => s(!0), u = (e) => e.key === "Escape" && s(!0);
168
+ window.addEventListener("pointermove", a), window.addEventListener("pointerup", c), window.addEventListener("pointercancel", l), window.addEventListener("keydown", u);
169
+ }
170
+ let O = (e, n) => e.toPlainDateTime({ hour: 0 }).add({ minutes: n }).toZonedDateTime(t.timeZone.value), k = e(() => {
171
+ let e = r.value;
172
+ if (!e) return null;
173
+ let { anchor: n } = e;
174
+ if (n.kind === "day" || n.kind === "dayaxis") {
175
+ let [t, r] = R(n.date, e.current.date);
176
+ return {
177
+ kind: n.kind,
178
+ resourceId: n.resourceId,
179
+ startDate: t,
180
+ endDate: r,
181
+ detail: {
182
+ start: t,
183
+ end: r,
184
+ allDay: !0,
185
+ resourceId: n.resourceId
186
+ }
187
+ };
188
+ }
189
+ let i = s.value, a = (e) => j(t.rangeStart.value, e.date) * 24 * 60 + e.minutes, o = n.kind === "time", [c, l] = R(o ? n.minutes : a(n), o ? e.current.minutes : a(e.current)), u = Math.floor(c / i) * i, d = Math.max(Math.ceil(l / i) * i, u + i), f = o ? n.date : t.rangeStart.value.add({ days: Math.floor(u / 1440) }), p = o ? u : u % 1440, m = o ? n.date : t.rangeStart.value.add({ days: Math.floor(d / 1440) }), h = o ? d : d % 1440;
190
+ return {
191
+ kind: n.kind,
192
+ resourceId: n.resourceId,
193
+ startDate: f,
194
+ endDate: m,
195
+ startMinutes: p,
196
+ endMinutes: h,
197
+ detail: {
198
+ start: O(f, p),
199
+ end: O(m, h),
200
+ allDay: !1,
201
+ resourceId: n.resourceId
202
+ }
203
+ };
204
+ });
205
+ function A(e) {
206
+ let n = (e) => e instanceof Temporal.PlainDate ? e.toLocaleString(t.locale.value, {
207
+ weekday: "short",
208
+ month: "short",
209
+ day: "numeric"
210
+ }) : e.toLocaleString(t.locale.value, {
211
+ weekday: "short",
212
+ month: "short",
213
+ day: "numeric",
214
+ hour: "numeric",
215
+ minute: "2-digit"
216
+ });
217
+ return `${n(e.start)} to ${n(e.end)}`;
218
+ }
219
+ async function M(e) {
220
+ await c();
221
+ let t = document.querySelector(`[data-event-id="${CSS.escape(String(e.id))}"]`);
222
+ (t?.matches(W) ? t : t?.querySelector(W))?.focus();
223
+ }
224
+ function N(e) {
225
+ let t = F(e.event, e.moveDelta), n = e.endDelta.days || e.endDelta.minutes ? B(U(e.event, t), "end", e.endDelta, s.value) : t;
226
+ return {
227
+ ...e,
228
+ preview: n
229
+ };
230
+ }
231
+ let P = null;
232
+ function I() {
233
+ P?.(), P = null;
234
+ }
235
+ f(I);
236
+ function L(e) {
237
+ let t = n.value;
238
+ if (!t?.keyboard) {
239
+ I();
240
+ return;
241
+ }
242
+ let r = t.event, a = t.axes;
243
+ if (e.key === "Escape") {
244
+ e.preventDefault(), e.stopPropagation(), n.value = null, I(), i.value = "Move cancelled.", M(r);
245
+ return;
246
+ }
247
+ if (e.key === " " || e.key === "Enter") {
248
+ e.preventDefault(), e.stopPropagation(), n.value = null, I(), w({
249
+ ...t,
250
+ kind: t.endDelta.days || t.endDelta.minutes ? "resize-end" : "move"
251
+ }), i.value = `Dropped. ${A(t.preview)}.`, M(r);
252
+ return;
253
+ }
254
+ let o = {
255
+ ArrowLeft: [-1, "horizontal"],
256
+ ArrowRight: [1, "horizontal"],
257
+ ArrowUp: [-1, "vertical"],
258
+ ArrowDown: [1, "vertical"]
259
+ }[e.key];
260
+ if (!o) return;
261
+ e.preventDefault(), e.stopPropagation();
262
+ let [c, l] = o, u = l === "horizontal" ? a.horizontal : a.vertical, d = e.shiftKey, f = { ...d ? t.endDelta : t.moveDelta }, p = r.allDay ? 0 : s.value, m = t;
263
+ if (u === "day") f.days = (f.days ?? 0) + c;
264
+ else if (u === "week") f.days = (f.days ?? 0) + c * 7;
265
+ else if (u === "minutes" && p) f.minutes = (f.minutes ?? 0) + c * p;
266
+ else if (u === "resource" && a.resourceOrder && !d) {
267
+ let e = a.resourceOrder, n = e.indexOf(t.resourceId ?? null);
268
+ m = {
269
+ ...t,
270
+ resourceId: e[Math.min(Math.max(n + c, 0), e.length - 1)]
271
+ };
272
+ } else return;
273
+ u !== "resource" && (m = d ? {
274
+ ...m,
275
+ endDelta: f
276
+ } : {
277
+ ...m,
278
+ moveDelta: f
279
+ }), m = N(m), n.value = m, i.value = A(m.preview), M(r);
280
+ }
281
+ function z(e, t, r, a) {
282
+ e.key === " " && !n.value && d(t) && (e.preventDefault(), n.value = {
283
+ kind: "move",
284
+ event: t,
285
+ origin: {
286
+ kind: "day",
287
+ date: t.startDate,
288
+ minutes: null,
289
+ resourceId: a
290
+ },
291
+ started: !0,
292
+ keyboard: !0,
293
+ pointer: {
294
+ x: 0,
295
+ y: 0
296
+ },
297
+ preview: {
298
+ start: t.start,
299
+ end: t.end
300
+ },
301
+ resourceId: a,
302
+ moveDelta: {
303
+ days: 0,
304
+ minutes: 0
305
+ },
306
+ endDelta: {
307
+ days: 0,
308
+ minutes: 0
309
+ },
310
+ axes: r
311
+ }, i.value = "Picked up. Arrow keys move it, Shift with arrows changes its end, Space drops it, Escape cancels.", window.addEventListener("keydown", L, { capture: !0 }), P = () => window.removeEventListener("keydown", L, { capture: !0 }));
312
+ }
313
+ return {
314
+ editable: a,
315
+ selectable: o,
316
+ drag: n,
317
+ selectedRange: k,
318
+ announcement: i,
319
+ displayEvents: b,
320
+ displayResourceIds: x,
321
+ canEdit: d,
322
+ isDragging: S,
323
+ startPointerDrag: E,
324
+ startSelection: D,
325
+ handleEventKeydown: z
326
+ };
327
+ }
328
+ // src/useCalendar.ts
329
+ function K(t) {
330
+ let { date: n } = t, r = e(() => y(t.view) ?? "month"), i = e(() => y(t.weekStartsOn) ?? 7), a = e(() => y(t.timeZone) ?? P()), o = e(() => y(t.locale)), s = h(Temporal.Now.zonedDateTimeISO(a.value));
331
+ if (typeof window < "u") {
332
+ let e = setInterval(() => s.value = Temporal.Now.zonedDateTimeISO(a.value), 6e4);
333
+ f(() => clearInterval(e));
334
+ }
335
+ let c = e(() => y(t.today) ?? s.value.withTimeZone(a.value).toPlainDate()), l = h(n.value), u = h(null), d = e(() => L(y(t.events) ?? [], { timeZone: a.value })), p = e(() => z(n.value, r.value, i.value)), m = G({
336
+ events: d,
337
+ resources: t.resources,
338
+ getResourceIds: t.getResourceIds,
339
+ timeZone: a,
340
+ locale: o,
341
+ rangeStart: e(() => p.value.start),
342
+ slotMinMinutes: t.slotMinMinutes,
343
+ slotMaxMinutes: t.slotMaxMinutes,
344
+ editable: t.editable,
345
+ selectable: t.selectable,
346
+ snapMinutes: t.snapMinutes,
347
+ canEdit: t.canEdit,
348
+ onEventDrop: t.onEventDrop,
349
+ onEventResize: t.onEventResize,
350
+ onRangeSelect: t.onRangeSelect
351
+ }), g = e(() => y(t.resources)), _ = m.displayEvents, v = (e) => m.displayResourceIds(e), b = e(() => D({
352
+ date: n.value,
353
+ events: _.value,
354
+ weekStartsOn: i.value,
355
+ fixedWeeks: y(t.fixedWeeks) ?? !1,
356
+ maxLanes: y(t.maxLanes),
357
+ today: c.value
358
+ })), x = e(() => O({
359
+ ...p.value,
360
+ resources: y(t.resources) ?? [],
361
+ events: _.value,
362
+ getResourceIds: v,
363
+ unassigned: y(t.unassigned) ?? !1,
364
+ today: c.value
365
+ })), S = e(() => k({
366
+ ...p.value,
367
+ events: _.value,
368
+ slotMinMinutes: y(t.slotMinMinutes) ?? 0,
369
+ slotMaxMinutes: y(t.slotMaxMinutes) ?? 1440,
370
+ today: c.value
371
+ })), C = e(() => A({
372
+ ...p.value,
373
+ events: _.value,
374
+ resources: g.value,
375
+ getResourceIds: v,
376
+ unassigned: y(t.unassigned) ?? !1,
377
+ slotMinMinutes: y(t.slotMinMinutes) ?? 0,
378
+ slotMaxMinutes: y(t.slotMaxMinutes) ?? 1440,
379
+ slotMinutes: y(t.slotMinutes) ?? 60,
380
+ today: c.value
381
+ })), w = e(() => E({
382
+ events: _.value,
383
+ rangeEvents: d.value,
384
+ scale: y(t.ganttScale) ?? "week",
385
+ weekStartsOn: i.value,
386
+ today: c.value,
387
+ links: y(t.ganttLinks) ?? []
388
+ })), T = h(0), j = e(() => ee(n.value, r.value, i.value, o.value)), M = e(() => ({
389
+ start: b.value.start,
390
+ end: b.value.end
391
+ }));
392
+ function F(e) {
393
+ n.value = e, l.value = e;
394
+ }
395
+ function R(e) {
396
+ l.value = e, N(e, n.value, r.value, i.value) || (n.value = e);
397
+ }
398
+ return {
399
+ date: n,
400
+ view: r,
401
+ weekStartsOn: i,
402
+ timeZone: a,
403
+ locale: o,
404
+ now: s,
405
+ today: c,
406
+ focusedDate: l,
407
+ focusedRow: T,
408
+ highlightedEventId: u,
409
+ events: d,
410
+ resources: g,
411
+ grid: b,
412
+ range: p,
413
+ resourceGrid: x,
414
+ timeGrid: S,
415
+ timeline: C,
416
+ gantt: w,
417
+ title: j,
418
+ visibleRange: M,
419
+ setDate: F,
420
+ focusDate: R,
421
+ prev: () => F(I(n.value, r.value, -1)),
422
+ next: () => F(I(n.value, r.value, 1)),
423
+ goToToday: () => F(c.value),
424
+ ...m
425
+ };
426
+ }
427
+ var q = Symbol("CalendarContext");
428
+ function J(e) {
429
+ m(q, e);
430
+ }
431
+ function Y(e) {
432
+ let t = o(q, null);
433
+ if (!t) throw Error(`<${e}> must be used inside <CalendarRoot>.`);
434
+ return t;
435
+ }
436
+ // src/CalendarHeading.vue
437
+ var ae = /* @__PURE__ */ a({
438
+ __name: "CalendarHeading",
439
+ props: {
440
+ asChild: { type: Boolean },
441
+ as: { default: "h2" }
442
+ },
443
+ setup(e) {
444
+ let { title: n } = Y("CalendarHeading");
445
+ return (r, a) => (p(), t(b(T), {
446
+ as: e.as,
447
+ "as-child": e.asChild,
448
+ "aria-live": "polite"
449
+ }, {
450
+ default: C(() => [g(r.$slots, "default", { title: b(n) }, () => [i(v(b(n)), 1)])]),
451
+ _: 3
452
+ }, 8, ["as", "as-child"]));
453
+ }
454
+ }), oe = /* @__PURE__ */ a({
455
+ __name: "CalendarNav",
456
+ props: {
457
+ asChild: { type: Boolean },
458
+ as: { default: "button" },
459
+ action: {}
460
+ },
461
+ setup(n) {
462
+ let r = n, i = Y("CalendarNav"), a = e(() => r.action === "today" && N(i.date.value, i.today.value, i.view.value, i.weekStartsOn.value));
463
+ function o() {
464
+ r.action === "prev" ? i.prev() : r.action === "next" ? i.next() : i.goToToday();
465
+ }
466
+ return (e, r) => (p(), t(b(T), {
467
+ as: n.as,
468
+ "as-child": n.asChild,
469
+ type: n.as === "button" ? "button" : void 0,
470
+ "data-action": n.action,
471
+ "data-current": a.value ? "" : void 0,
472
+ onClick: o
473
+ }, {
474
+ default: C(() => [g(e.$slots, "default")]),
475
+ _: 3
476
+ }, 8, [
477
+ "as",
478
+ "as-child",
479
+ "type",
480
+ "data-action",
481
+ "data-current"
482
+ ]));
483
+ }
484
+ }), se = /* @__PURE__ */ a({
485
+ __name: "CalendarRoot",
486
+ props: /*@__PURE__*/ s({
487
+ asChild: { type: Boolean },
488
+ as: { default: "div" },
489
+ events: { default: () => [] },
490
+ view: { default: "month" },
491
+ weekStartsOn: { default: 7 },
492
+ timeZone: {},
493
+ locale: {},
494
+ fixedWeeks: {
495
+ type: Boolean,
496
+ default: !1
497
+ },
498
+ maxLanes: {},
499
+ today: {},
500
+ resources: {},
501
+ getResourceIds: {},
502
+ unassigned: { type: Boolean },
503
+ slotMinMinutes: {},
504
+ slotMaxMinutes: {},
505
+ slotMinutes: {},
506
+ ganttScale: {},
507
+ ganttLinks: {},
508
+ editable: { type: Boolean },
509
+ selectable: { type: Boolean },
510
+ snapMinutes: {},
511
+ canEdit: {}
512
+ }, {
513
+ date: { default: () => Temporal.Now.plainDateISO() },
514
+ dateModifiers: {}
515
+ }),
516
+ emits: /*@__PURE__*/ s([
517
+ "event-drop",
518
+ "event-resize",
519
+ "range-select"
520
+ ], ["update:date"]),
521
+ setup(e, { emit: i }) {
522
+ let a = e, o = i, s = x(e, "date"), c = K({
523
+ date: s,
524
+ events: () => a.events,
525
+ view: () => a.view,
526
+ weekStartsOn: () => a.weekStartsOn,
527
+ timeZone: () => a.timeZone,
528
+ locale: () => a.locale,
529
+ fixedWeeks: () => a.fixedWeeks,
530
+ maxLanes: () => a.maxLanes,
531
+ today: () => a.today,
532
+ resources: () => a.resources,
533
+ getResourceIds: (e) => a.getResourceIds?.(e),
534
+ unassigned: () => a.unassigned,
535
+ slotMinMinutes: () => a.slotMinMinutes,
536
+ slotMaxMinutes: () => a.slotMaxMinutes,
537
+ slotMinutes: () => a.slotMinutes,
538
+ ganttScale: () => a.ganttScale,
539
+ ganttLinks: () => a.ganttLinks,
540
+ editable: () => a.editable,
541
+ selectable: () => a.selectable,
542
+ snapMinutes: () => a.snapMinutes,
543
+ canEdit: (e) => a.canEdit?.(e) ?? !0,
544
+ onEventDrop: (e) => o("event-drop", e),
545
+ onEventResize: (e) => o("event-resize", e),
546
+ onRangeSelect: (e) => o("range-select", e)
547
+ });
548
+ S(s, (e) => {
549
+ let { start: t, end: n } = c.range.value, r = c.focusedDate.value;
550
+ (Temporal.PlainDate.compare(r, t) < 0 || Temporal.PlainDate.compare(r, n) > 0) && (c.focusedDate.value = e);
551
+ }), J(c);
552
+ let l = {
553
+ position: "absolute",
554
+ width: "1px",
555
+ height: "1px",
556
+ overflow: "hidden",
557
+ clip: "rect(0 0 0 0)",
558
+ whiteSpace: "nowrap"
559
+ };
560
+ return (i, a) => (p(), t(b(T), {
561
+ as: e.as,
562
+ "as-child": e.asChild,
563
+ "data-view": b(c).view.value
564
+ }, {
565
+ default: C(() => [g(i.$slots, "default", {
566
+ grid: b(c).grid.value,
567
+ date: s.value,
568
+ title: b(c).title.value,
569
+ visibleRange: b(c).visibleRange.value,
570
+ prev: b(c).prev,
571
+ next: b(c).next,
572
+ goToToday: b(c).goToToday
573
+ }), e.asChild ? n("", !0) : (p(), r("div", {
574
+ key: 0,
575
+ "aria-live": "polite",
576
+ style: l
577
+ }, v(b(c).announcement.value), 1))]),
578
+ _: 3
579
+ }, 8, [
580
+ "as",
581
+ "as-child",
582
+ "data-view"
583
+ ]));
584
+ }
585
+ }), ce = /* @__PURE__ */ a({
586
+ __name: "MonthDay",
587
+ props: {
588
+ asChild: { type: Boolean },
589
+ as: { default: "div" },
590
+ day: {}
591
+ },
592
+ setup(n) {
593
+ let r = n, i = Y("MonthDay"), a = e(() => {
594
+ let e = i.selectedRange.value;
595
+ return e?.kind === "day" && Temporal.PlainDate.compare(r.day.date, e.startDate) >= 0 && Temporal.PlainDate.compare(r.day.date, e.endDate) <= 0;
596
+ }), o = e(() => r.day.date.equals(i.focusedDate.value)), s = e(() => {
597
+ let e = r.day.date.toLocaleString(i.locale.value, { dateStyle: "full" }), t = r.day.eventCount;
598
+ return t ? `${e}, ${t} ${t === 1 ? "event" : "events"}` : e;
599
+ });
600
+ return (e, r) => (p(), t(b(T), {
601
+ as: n.as,
602
+ "as-child": n.asChild,
603
+ role: "gridcell",
604
+ tabindex: o.value ? 0 : -1,
605
+ "aria-label": s.value,
606
+ "aria-current": n.day.isToday ? "date" : void 0,
607
+ "data-date": n.day.date.toString(),
608
+ "data-today": n.day.isToday ? "" : void 0,
609
+ "data-outside": n.day.isOutside ? "" : void 0,
610
+ "data-weekend": n.day.isWeekend ? "" : void 0,
611
+ "data-focused": o.value ? "" : void 0,
612
+ "data-overflow": n.day.hiddenCount ? "" : void 0,
613
+ "data-selected": a.value ? "" : void 0,
614
+ "data-drop": "day",
615
+ onFocus: r[0] ||= (e) => b(i).focusedDate.value = n.day.date
616
+ }, {
617
+ default: C(() => [g(e.$slots, "default", {
618
+ day: n.day,
619
+ segments: n.day.segments,
620
+ coveringSegments: n.day.coveringSegments,
621
+ hiddenCount: n.day.hiddenCount
622
+ })]),
623
+ _: 3
624
+ }, 8, [
625
+ "as",
626
+ "as-child",
627
+ "tabindex",
628
+ "aria-label",
629
+ "aria-current",
630
+ "data-date",
631
+ "data-today",
632
+ "data-outside",
633
+ "data-weekend",
634
+ "data-focused",
635
+ "data-overflow",
636
+ "data-selected"
637
+ ]));
638
+ }
639
+ }), le = /* @__PURE__ */ a({
640
+ __name: "MonthDayMore",
641
+ props: {
642
+ asChild: { type: Boolean },
643
+ as: { default: "button" },
644
+ day: {}
645
+ },
646
+ setup(r) {
647
+ let a = r, { locale: o } = Y("MonthDayMore"), s = e(() => {
648
+ let e = a.day.date.toLocaleString(o.value, {
649
+ month: "long",
650
+ day: "numeric"
651
+ });
652
+ return `Show all ${a.day.eventCount} events on ${e}`;
653
+ });
654
+ return (e, a) => r.day.hiddenCount ? (p(), t(b(T), {
655
+ key: 0,
656
+ as: r.as,
657
+ "as-child": r.asChild,
658
+ type: r.as === "button" ? "button" : void 0,
659
+ "aria-label": s.value
660
+ }, {
661
+ default: C(() => [g(e.$slots, "default", {
662
+ hiddenCount: r.day.hiddenCount,
663
+ eventCount: r.day.eventCount
664
+ }, () => [i("+" + v(r.day.hiddenCount) + " more", 1)])]),
665
+ _: 3
666
+ }, 8, [
667
+ "as",
668
+ "as-child",
669
+ "type",
670
+ "aria-label"
671
+ ])) : n("", !0);
672
+ }
673
+ }), X = Symbol("CalendarEventPrimitive");
674
+ function Z(t, n, r) {
675
+ let i = Y(t), { now: a, today: o, highlightedEventId: s } = i;
676
+ m(X, { event: () => y(n) });
677
+ let c = e(() => s.value === y(n).id), l = e(() => i.canEdit(y(n))), u = e(() => i.isDragging(y(n))), d = e(() => {
678
+ let { allDay: e, end: t, endDate: r } = y(n);
679
+ return e ? Temporal.PlainDate.compare(r, o.value) < 0 : Temporal.ZonedDateTime.compare(t, a.value) < 0;
680
+ });
681
+ function f() {
682
+ s.value = y(n).id;
683
+ }
684
+ function p() {
685
+ c.value && (s.value = null);
686
+ }
687
+ function h(e) {
688
+ i.startPointerDrag(e, y(n), "move");
689
+ }
690
+ function g(e) {
691
+ i.handleEventKeydown(e, y(n), y(r.axes), y(r.resourceId));
692
+ }
693
+ return {
694
+ isHighlighted: c,
695
+ isPast: d,
696
+ isEditable: l,
697
+ isDragging: u,
698
+ highlight: f,
699
+ unhighlight: p,
700
+ onPointerdown: h,
701
+ onKeydown: g
702
+ };
703
+ }
704
+ function Q(e) {
705
+ let t = o(X, null);
706
+ if (!t) throw Error(`<${e}> must be used inside an event primitive.`);
707
+ return t;
708
+ }
709
+ // src/EventBar.vue
710
+ var $ = /* @__PURE__ */ a({
711
+ __name: "EventBar",
712
+ props: {
713
+ asChild: { type: Boolean },
714
+ as: { default: "div" },
715
+ segment: {},
716
+ keyboardAxes: { default: () => ({
717
+ horizontal: "day",
718
+ vertical: "week"
719
+ }) },
720
+ resourceId: { default: void 0 }
721
+ },
722
+ setup(e) {
723
+ let n = e, { isHighlighted: r, isPast: i, isEditable: a, isDragging: o, highlight: s, unhighlight: c, onPointerdown: u, onKeydown: d } = Z("EventBar", () => n.segment.event, {
724
+ axes: () => n.keyboardAxes,
725
+ resourceId: () => n.resourceId
726
+ });
727
+ return (n, f) => (p(), t(b(T), {
728
+ as: e.as,
729
+ "as-child": e.asChild,
730
+ style: l({
731
+ "--event-column": e.segment.column,
732
+ "--event-span": e.segment.span,
733
+ "--event-lane": e.segment.lane
734
+ }),
735
+ "data-event-id": e.segment.event.id,
736
+ "data-all-day": e.segment.event.allDay ? "" : void 0,
737
+ "data-continues-before": e.segment.continuesBefore ? "" : void 0,
738
+ "data-continues-after": e.segment.continuesAfter ? "" : void 0,
739
+ "data-past": b(i) ? "" : void 0,
740
+ "data-highlighted": b(r) ? "" : void 0,
741
+ "data-editable": b(a) ? "" : void 0,
742
+ "data-dragging": b(o) ? "" : void 0,
743
+ onPointerenter: b(s),
744
+ onPointerleave: b(c),
745
+ onFocusin: b(s),
746
+ onFocusout: b(c),
747
+ onPointerdown: b(u),
748
+ onKeydown: b(d)
749
+ }, {
750
+ default: C(() => [g(n.$slots, "default", {
751
+ event: e.segment.event,
752
+ segment: e.segment
753
+ })]),
754
+ _: 3
755
+ }, 8, [
756
+ "as",
757
+ "as-child",
758
+ "style",
759
+ "data-event-id",
760
+ "data-all-day",
761
+ "data-continues-before",
762
+ "data-continues-after",
763
+ "data-past",
764
+ "data-highlighted",
765
+ "data-editable",
766
+ "data-dragging",
767
+ "onPointerenter",
768
+ "onPointerleave",
769
+ "onFocusin",
770
+ "onFocusout",
771
+ "onPointerdown",
772
+ "onKeydown"
773
+ ]));
774
+ }
775
+ }), ue = /* @__PURE__ */ a({
776
+ __name: "EventResizeHandle",
777
+ props: {
778
+ asChild: { type: Boolean },
779
+ as: { default: "span" },
780
+ edge: {}
781
+ },
782
+ setup(e) {
783
+ let r = Y("EventResizeHandle"), { event: i } = Q("EventResizeHandle");
784
+ return (a, o) => b(r).canEdit(b(i)()) ? (p(), t(b(T), {
785
+ key: 0,
786
+ as: e.as,
787
+ "as-child": e.asChild,
788
+ "aria-hidden": "true",
789
+ "data-calendar-control": "",
790
+ "data-edge": e.edge,
791
+ onPointerdown: o[0] ||= (t) => b(r).startPointerDrag(t, b(i)(), e.edge === "start" ? "resize-start" : "resize-end"),
792
+ onClick: o[1] ||= w(() => {}, ["prevent", "stop"])
793
+ }, {
794
+ default: C(() => [g(a.$slots, "default")]),
795
+ _: 3
796
+ }, 8, [
797
+ "as",
798
+ "as-child",
799
+ "data-edge"
800
+ ])) : n("", !0);
801
+ }
802
+ }), de = /* @__PURE__ */ a({
803
+ __name: "Gantt",
804
+ props: {
805
+ asChild: { type: Boolean },
806
+ as: { default: "div" }
807
+ },
808
+ setup(e) {
809
+ let n = Y("Gantt");
810
+ return (r, i) => (p(), t(b(T), {
811
+ as: e.as,
812
+ "as-child": e.asChild,
813
+ role: "group",
814
+ "data-scale": b(n).gantt.value.scale,
815
+ style: l({ "--axis-days": b(n).gantt.value.axisDays }),
816
+ onPointerdown: b(n).startSelection
817
+ }, {
818
+ default: C(() => [g(r.$slots, "default", {
819
+ gantt: b(n).gantt.value,
820
+ rows: b(n).gantt.value.rows,
821
+ columns: b(n).gantt.value.columns,
822
+ groups: b(n).gantt.value.groups
823
+ })]),
824
+ _: 3
825
+ }, 8, [
826
+ "as",
827
+ "as-child",
828
+ "data-scale",
829
+ "style",
830
+ "onPointerdown"
831
+ ]));
832
+ }
833
+ }), fe = /* @__PURE__ */ a({
834
+ __name: "GanttBar",
835
+ props: {
836
+ asChild: { type: Boolean },
837
+ as: { default: "div" },
838
+ row: {}
839
+ },
840
+ setup(e) {
841
+ let n = e, { isHighlighted: r, isPast: i, isEditable: a, isDragging: o, highlight: s, unhighlight: c, onPointerdown: u, onKeydown: d } = Z("GanttBar", () => n.row.event, { axes: {
842
+ horizontal: "day",
843
+ vertical: "none"
844
+ } });
845
+ return (n, f) => (p(), t(b(T), {
846
+ as: e.as,
847
+ "as-child": e.asChild,
848
+ style: l({
849
+ "--bar-start": e.row.startOffset,
850
+ "--bar-end": e.row.endOffset
851
+ }),
852
+ "data-event-id": e.row.event.id,
853
+ "data-continues-before": e.row.continuesBefore ? "" : void 0,
854
+ "data-continues-after": e.row.continuesAfter ? "" : void 0,
855
+ "data-past": b(i) ? "" : void 0,
856
+ "data-highlighted": b(r) ? "" : void 0,
857
+ "data-editable": b(a) ? "" : void 0,
858
+ "data-dragging": b(o) ? "" : void 0,
859
+ onPointerenter: b(s),
860
+ onPointerleave: b(c),
861
+ onFocusin: b(s),
862
+ onFocusout: b(c),
863
+ onPointerdown: b(u),
864
+ onKeydown: b(d)
865
+ }, {
866
+ default: C(() => [g(n.$slots, "default", {
867
+ event: e.row.event,
868
+ row: e.row
869
+ })]),
870
+ _: 3
871
+ }, 8, [
872
+ "as",
873
+ "as-child",
874
+ "style",
875
+ "data-event-id",
876
+ "data-continues-before",
877
+ "data-continues-after",
878
+ "data-past",
879
+ "data-highlighted",
880
+ "data-editable",
881
+ "data-dragging",
882
+ "onPointerenter",
883
+ "onPointerleave",
884
+ "onFocusin",
885
+ "onFocusout",
886
+ "onPointerdown",
887
+ "onKeydown"
888
+ ]));
889
+ }
890
+ }), pe = /* @__PURE__ */ a({
891
+ __name: "GanttLinks",
892
+ props: {
893
+ gap: { default: 12 },
894
+ radius: { default: 6 },
895
+ arrowSize: { default: 5 }
896
+ },
897
+ setup(t) {
898
+ let n = t, i = Y("GanttLinks"), a = h(null), o = _([]), s = (e, t, n) => e.querySelector(`[${t}="${CSS.escape(String(n))}"]`);
899
+ function l() {
900
+ let e = a.value?.parentElement;
901
+ if (!a.value || !e) return;
902
+ let t = a.value.getBoundingClientRect();
903
+ o.value = i.gantt.value.links.flatMap((r) => {
904
+ let i = s(e, "data-event-id", r.from.event.id), a = s(e, "data-event-id", r.to.event.id), o = s(e, "data-row-event-id", r.from.event.id);
905
+ if (!i || !a || !o) return [];
906
+ let c = i.getBoundingClientRect(), l = a.getBoundingClientRect(), u = o.getBoundingClientRect(), d = {
907
+ x: c.right - t.left,
908
+ y: c.top + c.height / 2 - t.top
909
+ }, f = {
910
+ x: l.left - t.left,
911
+ y: l.top + l.height / 2 - t.top
912
+ }, p = (f.y > d.y ? u.bottom : u.top) - t.top;
913
+ return [{
914
+ link: r,
915
+ path: te(ne(d, f, {
916
+ gap: n.gap,
917
+ gutterY: p
918
+ }), n.radius),
919
+ arrow: M(f, n.arrowSize)
920
+ }];
921
+ });
922
+ }
923
+ let f = 0, m = () => {
924
+ cancelAnimationFrame(f), f = requestAnimationFrame(l);
925
+ }, v;
926
+ d(() => {
927
+ v = new ResizeObserver(m), a.value?.parentElement && v.observe(a.value.parentElement), c(m);
928
+ }), u(() => {
929
+ cancelAnimationFrame(f), v?.disconnect();
930
+ }), S(i.gantt, () => c(m));
931
+ let y = e(() => {
932
+ let e = i.highlightedEventId.value;
933
+ return o.value.map((t) => {
934
+ let n = e !== null && (t.link.from.event.id === e || t.link.to.event.id === e);
935
+ return {
936
+ ...t,
937
+ highlighted: n,
938
+ dimmed: e !== null && !n
939
+ };
940
+ });
941
+ });
942
+ return (e, t) => (p(), r("svg", {
943
+ ref_key: "svg",
944
+ ref: a,
945
+ "aria-hidden": "true"
946
+ }, [g(e.$slots, "default", { links: y.value })], 512));
947
+ }
948
+ }), me = /* @__PURE__ */ a({
949
+ __name: "GanttRow",
950
+ props: {
951
+ asChild: { type: Boolean },
952
+ as: { default: "div" },
953
+ row: {}
954
+ },
955
+ setup(e) {
956
+ return (n, r) => (p(), t(b(T), {
957
+ as: e.as,
958
+ "as-child": e.asChild,
959
+ role: "group",
960
+ "data-row-event-id": e.row.event.id
961
+ }, {
962
+ default: C(() => [g(n.$slots, "default", {
963
+ row: e.row,
964
+ event: e.row.event
965
+ })]),
966
+ _: 3
967
+ }, 8, [
968
+ "as",
969
+ "as-child",
970
+ "data-row-event-id"
971
+ ]));
972
+ }
973
+ }), he = /* @__PURE__ */ a({
974
+ __name: "GanttToday",
975
+ props: {
976
+ asChild: { type: Boolean },
977
+ as: { default: "div" }
978
+ },
979
+ setup(e) {
980
+ let { gantt: r } = Y("GanttToday");
981
+ return (i, a) => b(r).todayOffset === null ? n("", !0) : (p(), t(b(T), {
982
+ key: 0,
983
+ as: e.as,
984
+ "as-child": e.asChild,
985
+ "aria-hidden": "true",
986
+ style: l({ "--today": b(r).todayOffset })
987
+ }, {
988
+ default: C(() => [g(i.$slots, "default")]),
989
+ _: 3
990
+ }, 8, [
991
+ "as",
992
+ "as-child",
993
+ "style"
994
+ ]));
995
+ }
996
+ }), ge = /* @__PURE__ */ a({
997
+ __name: "GanttTrack",
998
+ props: {
999
+ asChild: { type: Boolean },
1000
+ as: { default: "div" }
1001
+ },
1002
+ setup(e) {
1003
+ let { gantt: n } = Y("GanttTrack");
1004
+ return (r, i) => (p(), t(b(T), {
1005
+ as: e.as,
1006
+ "as-child": e.asChild,
1007
+ "data-drop": "dayaxis",
1008
+ "data-axis-start": b(n).start.toString(),
1009
+ "data-axis-days": b(n).axisDays
1010
+ }, {
1011
+ default: C(() => [g(r.$slots, "default")]),
1012
+ _: 3
1013
+ }, 8, [
1014
+ "as",
1015
+ "as-child",
1016
+ "data-axis-start",
1017
+ "data-axis-days"
1018
+ ]));
1019
+ }
1020
+ }), _e = /* @__PURE__ */ a({
1021
+ __name: "MonthGrid",
1022
+ props: {
1023
+ asChild: { type: Boolean },
1024
+ as: { default: "div" }
1025
+ },
1026
+ setup(e) {
1027
+ let n = Y("MonthGrid");
1028
+ function r(e, t) {
1029
+ let r = n.grid.value.weekdays[0].dayOfWeek;
1030
+ switch (e.key) {
1031
+ case "ArrowLeft": return t.subtract({ days: 1 });
1032
+ case "ArrowRight": return t.add({ days: 1 });
1033
+ case "ArrowUp": return t.subtract({ weeks: 1 });
1034
+ case "ArrowDown": return t.add({ weeks: 1 });
1035
+ case "Home": return V(t, r);
1036
+ case "End": return V(t, r).add({ days: 6 });
1037
+ case "PageUp": return t.subtract(e.shiftKey ? { years: 1 } : { months: 1 });
1038
+ case "PageDown": return t.add(e.shiftKey ? { years: 1 } : { months: 1 });
1039
+ default: return null;
1040
+ }
1041
+ }
1042
+ async function i(e) {
1043
+ let t = e.currentTarget;
1044
+ if ((e.target instanceof HTMLElement ? e.target : null)?.getAttribute("role") !== "gridcell") return;
1045
+ let i = r(e, n.focusedDate.value);
1046
+ i && (e.preventDefault(), n.focusDate(i), await c(), t.querySelector(`[data-date="${i.toString()}"]`)?.focus());
1047
+ }
1048
+ return (r, a) => (p(), t(b(T), {
1049
+ as: e.as,
1050
+ "as-child": e.asChild,
1051
+ role: "grid",
1052
+ "aria-label": b(n).title.value,
1053
+ onKeydown: i,
1054
+ onPointerdown: b(n).startSelection
1055
+ }, {
1056
+ default: C(() => [g(r.$slots, "default", {
1057
+ grid: b(n).grid.value,
1058
+ weekdays: b(n).grid.value.weekdays,
1059
+ weeks: b(n).grid.value.weeks
1060
+ })]),
1061
+ _: 3
1062
+ }, 8, [
1063
+ "as",
1064
+ "as-child",
1065
+ "aria-label",
1066
+ "onPointerdown"
1067
+ ]));
1068
+ }
1069
+ }), ve = /* @__PURE__ */ a({
1070
+ __name: "MonthWeek",
1071
+ props: {
1072
+ asChild: { type: Boolean },
1073
+ as: { default: "div" },
1074
+ week: {}
1075
+ },
1076
+ setup(e) {
1077
+ return (n, r) => (p(), t(b(T), {
1078
+ as: e.as,
1079
+ "as-child": e.asChild,
1080
+ role: "row",
1081
+ style: l({
1082
+ "--week-lanes": e.week.visibleLaneCount + +!!e.week.hasOverflow,
1083
+ "--week-visible-lanes": e.week.visibleLaneCount
1084
+ }),
1085
+ "data-overflow": e.week.hasOverflow ? "" : void 0
1086
+ }, {
1087
+ default: C(() => [g(n.$slots, "default", {
1088
+ week: e.week,
1089
+ days: e.week.days
1090
+ })]),
1091
+ _: 3
1092
+ }, 8, [
1093
+ "as",
1094
+ "as-child",
1095
+ "style",
1096
+ "data-overflow"
1097
+ ]));
1098
+ }
1099
+ }), ye = /* @__PURE__ */ a({
1100
+ __name: "MonthWeekday",
1101
+ props: {
1102
+ asChild: { type: Boolean },
1103
+ as: { default: "div" },
1104
+ date: {}
1105
+ },
1106
+ setup(n) {
1107
+ let r = n, { locale: a } = Y("MonthWeekday"), o = e(() => r.date.toLocaleString(a.value, { weekday: "short" })), s = e(() => r.date.toLocaleString(a.value, { weekday: "long" }));
1108
+ return (e, r) => (p(), t(b(T), {
1109
+ as: n.as,
1110
+ "as-child": n.asChild,
1111
+ role: "columnheader",
1112
+ "aria-label": s.value,
1113
+ "data-weekend": n.date.dayOfWeek >= 6 ? "" : void 0
1114
+ }, {
1115
+ default: C(() => [g(e.$slots, "default", {
1116
+ label: o.value,
1117
+ longLabel: s.value
1118
+ }, () => [i(v(o.value), 1)])]),
1119
+ _: 3
1120
+ }, 8, [
1121
+ "as",
1122
+ "as-child",
1123
+ "aria-label",
1124
+ "data-weekend"
1125
+ ]));
1126
+ }
1127
+ }), be = /* @__PURE__ */ a({
1128
+ __name: "NowIndicator",
1129
+ props: {
1130
+ asChild: { type: Boolean },
1131
+ as: { default: "div" },
1132
+ day: {}
1133
+ },
1134
+ setup(r) {
1135
+ let i = r, { now: a, timeZone: o, timeGrid: s } = Y("NowIndicator"), c = e(() => H(a.value.withTimeZone(o.value)) - s.value.slotMinMinutes), u = e(() => i.day.isToday && c.value >= 0 && c.value <= s.value.windowMinutes);
1136
+ return (e, i) => u.value ? (p(), t(b(T), {
1137
+ key: 0,
1138
+ as: r.as,
1139
+ "as-child": r.asChild,
1140
+ "aria-hidden": "true",
1141
+ style: l({ "--now": c.value })
1142
+ }, {
1143
+ default: C(() => [g(e.$slots, "default")]),
1144
+ _: 3
1145
+ }, 8, [
1146
+ "as",
1147
+ "as-child",
1148
+ "style"
1149
+ ])) : n("", !0);
1150
+ }
1151
+ }), xe = /* @__PURE__ */ a({
1152
+ __name: "ResourceCell",
1153
+ props: {
1154
+ asChild: { type: Boolean },
1155
+ as: { default: "div" },
1156
+ cell: {},
1157
+ rowIndex: {},
1158
+ resourceLabel: {},
1159
+ resourceId: {}
1160
+ },
1161
+ setup(n) {
1162
+ let r = n, i = Y("ResourceCell"), a = e(() => i.resourceGrid.value.days[r.cell.column]), o = e(() => r.rowIndex === i.focusedRow.value && r.cell.date.equals(i.focusedDate.value)), s = e(() => {
1163
+ let e = r.cell.date.toLocaleString(i.locale.value, { dateStyle: "full" }), t = r.cell.eventCount, n = t ? `${t} ${t === 1 ? "event" : "events"}` : "free";
1164
+ return [
1165
+ r.resourceLabel,
1166
+ e,
1167
+ n
1168
+ ].filter(Boolean).join(", ");
1169
+ }), c = e(() => {
1170
+ let e = i.selectedRange.value;
1171
+ return e?.kind === "day" && e.resourceId === r.resourceId && Temporal.PlainDate.compare(r.cell.date, e.startDate) >= 0 && Temporal.PlainDate.compare(r.cell.date, e.endDate) <= 0;
1172
+ });
1173
+ function l() {
1174
+ i.focusedRow.value = r.rowIndex, i.focusedDate.value = r.cell.date;
1175
+ }
1176
+ return (e, r) => (p(), t(b(T), {
1177
+ as: n.as,
1178
+ "as-child": n.asChild,
1179
+ role: "gridcell",
1180
+ tabindex: o.value ? 0 : -1,
1181
+ "aria-label": s.value,
1182
+ "data-date": n.cell.date.toString(),
1183
+ "data-row": n.rowIndex,
1184
+ "data-today": a.value?.isToday ? "" : void 0,
1185
+ "data-weekend": a.value?.isWeekend ? "" : void 0,
1186
+ "data-busy": n.cell.eventCount ? "" : void 0,
1187
+ "data-overlap": n.cell.eventCount > 1 ? "" : void 0,
1188
+ "data-focused": o.value ? "" : void 0,
1189
+ "data-selected": c.value ? "" : void 0,
1190
+ "data-drop": "day",
1191
+ "data-resource-id": n.resourceId === void 0 ? void 0 : String(n.resourceId ?? ""),
1192
+ onFocus: l
1193
+ }, {
1194
+ default: C(() => [g(e.$slots, "default", {
1195
+ cell: n.cell,
1196
+ segments: n.cell.segments
1197
+ })]),
1198
+ _: 3
1199
+ }, 8, [
1200
+ "as",
1201
+ "as-child",
1202
+ "tabindex",
1203
+ "aria-label",
1204
+ "data-date",
1205
+ "data-row",
1206
+ "data-today",
1207
+ "data-weekend",
1208
+ "data-busy",
1209
+ "data-overlap",
1210
+ "data-focused",
1211
+ "data-selected",
1212
+ "data-resource-id"
1213
+ ]));
1214
+ }
1215
+ }), Se = /* @__PURE__ */ a({
1216
+ __name: "ResourceDayHeader",
1217
+ props: {
1218
+ asChild: { type: Boolean },
1219
+ as: { default: "div" },
1220
+ day: {}
1221
+ },
1222
+ setup(n) {
1223
+ let r = n, { locale: a } = Y("ResourceDayHeader"), o = e(() => r.day.date.toLocaleString(a.value, { weekday: "short" })), s = e(() => r.day.date.toLocaleString(a.value, { dateStyle: "full" }));
1224
+ return (e, r) => (p(), t(b(T), {
1225
+ as: n.as,
1226
+ "as-child": n.asChild,
1227
+ role: "columnheader",
1228
+ "aria-label": s.value,
1229
+ "data-today": n.day.isToday ? "" : void 0,
1230
+ "data-weekend": n.day.isWeekend ? "" : void 0
1231
+ }, {
1232
+ default: C(() => [g(e.$slots, "default", {
1233
+ day: n.day,
1234
+ weekday: o.value
1235
+ }, () => [i(v(o.value) + " " + v(n.day.date.day), 1)])]),
1236
+ _: 3
1237
+ }, 8, [
1238
+ "as",
1239
+ "as-child",
1240
+ "aria-label",
1241
+ "data-today",
1242
+ "data-weekend"
1243
+ ]));
1244
+ }
1245
+ }), Ce = /* @__PURE__ */ a({
1246
+ __name: "ResourceGrid",
1247
+ props: {
1248
+ asChild: { type: Boolean },
1249
+ as: { default: "div" }
1250
+ },
1251
+ setup(e) {
1252
+ let n = Y("ResourceGrid");
1253
+ function r(e, t, r) {
1254
+ let i = n.resourceGrid.value.rows.length - 1, { start: a, end: o } = n.range.value;
1255
+ switch (e.key) {
1256
+ case "ArrowLeft": return {
1257
+ date: t.subtract({ days: 1 }),
1258
+ row: r
1259
+ };
1260
+ case "ArrowRight": return {
1261
+ date: t.add({ days: 1 }),
1262
+ row: r
1263
+ };
1264
+ case "ArrowUp": return {
1265
+ date: t,
1266
+ row: Math.max(r - 1, 0)
1267
+ };
1268
+ case "ArrowDown": return {
1269
+ date: t,
1270
+ row: Math.min(r + 1, i)
1271
+ };
1272
+ case "Home": return {
1273
+ date: e.ctrlKey ? t : a,
1274
+ row: e.ctrlKey ? 0 : r
1275
+ };
1276
+ case "End": return {
1277
+ date: e.ctrlKey ? t : o,
1278
+ row: e.ctrlKey ? i : r
1279
+ };
1280
+ case "PageUp": return {
1281
+ date: I(t, n.view.value, -1),
1282
+ row: r
1283
+ };
1284
+ case "PageDown": return {
1285
+ date: I(t, n.view.value, 1),
1286
+ row: r
1287
+ };
1288
+ default: return null;
1289
+ }
1290
+ }
1291
+ async function i(e) {
1292
+ let t = e.currentTarget;
1293
+ if ((e.target instanceof HTMLElement ? e.target : null)?.getAttribute("role") !== "gridcell") return;
1294
+ let i = r(e, n.focusedDate.value, n.focusedRow.value);
1295
+ i && (e.preventDefault(), n.focusedRow.value = i.row, n.focusDate(i.date), await c(), t.querySelector(`[data-row="${i.row}"][data-date="${i.date.toString()}"]`)?.focus());
1296
+ }
1297
+ return (r, a) => (p(), t(b(T), {
1298
+ as: e.as,
1299
+ "as-child": e.asChild,
1300
+ role: "grid",
1301
+ "aria-label": b(n).title.value,
1302
+ style: l({ "--day-count": b(n).resourceGrid.value.days.length }),
1303
+ onKeydown: i,
1304
+ onPointerdown: b(n).startSelection
1305
+ }, {
1306
+ default: C(() => [g(r.$slots, "default", {
1307
+ grid: b(n).resourceGrid.value,
1308
+ days: b(n).resourceGrid.value.days,
1309
+ rows: b(n).resourceGrid.value.rows
1310
+ })]),
1311
+ _: 3
1312
+ }, 8, [
1313
+ "as",
1314
+ "as-child",
1315
+ "aria-label",
1316
+ "style",
1317
+ "onPointerdown"
1318
+ ]));
1319
+ }
1320
+ }), we = /* @__PURE__ */ a({
1321
+ __name: "ResourceLabel",
1322
+ props: {
1323
+ asChild: { type: Boolean },
1324
+ as: { default: "div" },
1325
+ row: {}
1326
+ },
1327
+ setup(e) {
1328
+ return (n, r) => (p(), t(b(T), {
1329
+ as: e.as,
1330
+ "as-child": e.asChild,
1331
+ role: "rowheader"
1332
+ }, {
1333
+ default: C(() => [g(n.$slots, "default", {
1334
+ row: e.row,
1335
+ resource: e.row.resource,
1336
+ busyDays: e.row.busyDays,
1337
+ overlapDays: e.row.overlapDays
1338
+ })]),
1339
+ _: 3
1340
+ }, 8, ["as", "as-child"]));
1341
+ }
1342
+ }), Te = /* @__PURE__ */ a({
1343
+ __name: "ResourceRow",
1344
+ props: {
1345
+ asChild: { type: Boolean },
1346
+ as: { default: "div" },
1347
+ row: {}
1348
+ },
1349
+ setup(e) {
1350
+ return (n, r) => (p(), t(b(T), {
1351
+ as: e.as,
1352
+ "as-child": e.asChild,
1353
+ role: "row",
1354
+ style: l({ "--row-lanes": Math.max(e.row.laneCount, 1) }),
1355
+ "data-unassigned": e.row.resource ? void 0 : "",
1356
+ "data-idle": e.row.busyDays ? void 0 : "",
1357
+ "data-overlap": e.row.overlapDays ? "" : void 0
1358
+ }, {
1359
+ default: C(() => [g(n.$slots, "default", {
1360
+ row: e.row,
1361
+ resource: e.row.resource,
1362
+ cells: e.row.cells
1363
+ })]),
1364
+ _: 3
1365
+ }, 8, [
1366
+ "as",
1367
+ "as-child",
1368
+ "style",
1369
+ "data-unassigned",
1370
+ "data-idle",
1371
+ "data-overlap"
1372
+ ]));
1373
+ }
1374
+ }), Ee = /* @__PURE__ */ a({
1375
+ __name: "TimeColumn",
1376
+ props: {
1377
+ asChild: { type: Boolean },
1378
+ as: { default: "div" },
1379
+ day: {}
1380
+ },
1381
+ setup(n) {
1382
+ let r = n, { locale: i } = Y("TimeColumn"), a = e(() => r.day.date.toLocaleString(i.value, { dateStyle: "full" }));
1383
+ return (e, r) => (p(), t(b(T), {
1384
+ as: n.as,
1385
+ "as-child": n.asChild,
1386
+ role: "group",
1387
+ "aria-label": a.value,
1388
+ "data-date": n.day.date.toString(),
1389
+ "data-today": n.day.isToday ? "" : void 0,
1390
+ "data-weekend": n.day.isWeekend ? "" : void 0,
1391
+ "data-drop": "time"
1392
+ }, {
1393
+ default: C(() => [g(e.$slots, "default", {
1394
+ day: n.day,
1395
+ events: n.day.events
1396
+ })]),
1397
+ _: 3
1398
+ }, 8, [
1399
+ "as",
1400
+ "as-child",
1401
+ "aria-label",
1402
+ "data-date",
1403
+ "data-today",
1404
+ "data-weekend"
1405
+ ]));
1406
+ }
1407
+ }), De = /* @__PURE__ */ a({
1408
+ __name: "TimeEvent",
1409
+ props: {
1410
+ asChild: { type: Boolean },
1411
+ as: { default: "div" },
1412
+ layout: {}
1413
+ },
1414
+ setup(e) {
1415
+ let n = e, { isHighlighted: r, isPast: i, isEditable: a, isDragging: o, highlight: s, unhighlight: c, onPointerdown: u, onKeydown: d } = Z("TimeEvent", () => n.layout.event, { axes: {
1416
+ horizontal: "day",
1417
+ vertical: "minutes"
1418
+ } });
1419
+ return (n, f) => (p(), t(b(T), {
1420
+ as: e.as,
1421
+ "as-child": e.asChild,
1422
+ style: l({
1423
+ "--event-start": e.layout.startMinutes,
1424
+ "--event-end": e.layout.endMinutes,
1425
+ "--event-column": e.layout.column,
1426
+ "--event-columns": e.layout.columnCount
1427
+ }),
1428
+ "data-event-id": e.layout.event.id,
1429
+ "data-starts-before": e.layout.startsBefore ? "" : void 0,
1430
+ "data-ends-after": e.layout.endsAfter ? "" : void 0,
1431
+ "data-past": b(i) ? "" : void 0,
1432
+ "data-highlighted": b(r) ? "" : void 0,
1433
+ "data-editable": b(a) ? "" : void 0,
1434
+ "data-dragging": b(o) ? "" : void 0,
1435
+ onPointerenter: b(s),
1436
+ onPointerleave: b(c),
1437
+ onFocusin: b(s),
1438
+ onFocusout: b(c),
1439
+ onPointerdown: b(u),
1440
+ onKeydown: b(d)
1441
+ }, {
1442
+ default: C(() => [g(n.$slots, "default", {
1443
+ event: e.layout.event,
1444
+ layout: e.layout
1445
+ })]),
1446
+ _: 3
1447
+ }, 8, [
1448
+ "as",
1449
+ "as-child",
1450
+ "style",
1451
+ "data-event-id",
1452
+ "data-starts-before",
1453
+ "data-ends-after",
1454
+ "data-past",
1455
+ "data-highlighted",
1456
+ "data-editable",
1457
+ "data-dragging",
1458
+ "onPointerenter",
1459
+ "onPointerleave",
1460
+ "onFocusin",
1461
+ "onFocusout",
1462
+ "onPointerdown",
1463
+ "onKeydown"
1464
+ ]));
1465
+ }
1466
+ }), Oe = /* @__PURE__ */ a({
1467
+ __name: "TimeGrid",
1468
+ props: {
1469
+ asChild: { type: Boolean },
1470
+ as: { default: "div" }
1471
+ },
1472
+ setup(e) {
1473
+ let n = Y("TimeGrid");
1474
+ return (r, i) => (p(), t(b(T), {
1475
+ as: e.as,
1476
+ "as-child": e.asChild,
1477
+ role: "group",
1478
+ "aria-label": b(n).title.value,
1479
+ style: l({
1480
+ "--day-count": b(n).timeGrid.value.days.length,
1481
+ "--window-minutes": b(n).timeGrid.value.windowMinutes,
1482
+ "--all-day-lanes": b(n).timeGrid.value.allDay.laneCount
1483
+ }),
1484
+ onPointerdown: b(n).startSelection
1485
+ }, {
1486
+ default: C(() => [g(r.$slots, "default", {
1487
+ grid: b(n).timeGrid.value,
1488
+ days: b(n).timeGrid.value.days,
1489
+ allDay: b(n).timeGrid.value.allDay,
1490
+ hours: b(n).timeGrid.value.hours
1491
+ })]),
1492
+ _: 3
1493
+ }, 8, [
1494
+ "as",
1495
+ "as-child",
1496
+ "aria-label",
1497
+ "style",
1498
+ "onPointerdown"
1499
+ ]));
1500
+ }
1501
+ }), ke = /* @__PURE__ */ a({
1502
+ __name: "TimeSelection",
1503
+ props: {
1504
+ asChild: { type: Boolean },
1505
+ as: { default: "div" },
1506
+ day: {}
1507
+ },
1508
+ setup(r) {
1509
+ let i = r, { selectedRange: a, timeGrid: o } = Y("TimeSelection"), s = e(() => {
1510
+ let e = a.value;
1511
+ if (e?.kind !== "time" || !e.startDate.equals(i.day.date)) return null;
1512
+ let t = o.value.slotMinMinutes;
1513
+ return {
1514
+ start: e.startMinutes - t,
1515
+ end: e.endMinutes - t
1516
+ };
1517
+ });
1518
+ return (e, i) => s.value ? (p(), t(b(T), {
1519
+ key: 0,
1520
+ as: r.as,
1521
+ "as-child": r.asChild,
1522
+ "aria-hidden": "true",
1523
+ style: l({
1524
+ "--selection-start": s.value.start,
1525
+ "--selection-end": s.value.end
1526
+ })
1527
+ }, {
1528
+ default: C(() => [g(e.$slots, "default")]),
1529
+ _: 3
1530
+ }, 8, [
1531
+ "as",
1532
+ "as-child",
1533
+ "style"
1534
+ ])) : n("", !0);
1535
+ }
1536
+ }), Ae = /* @__PURE__ */ a({
1537
+ __name: "Timeline",
1538
+ props: {
1539
+ asChild: { type: Boolean },
1540
+ as: { default: "div" }
1541
+ },
1542
+ setup(e) {
1543
+ let n = Y("Timeline");
1544
+ return (r, i) => (p(), t(b(T), {
1545
+ as: e.as,
1546
+ "as-child": e.asChild,
1547
+ role: "group",
1548
+ "aria-label": b(n).title.value,
1549
+ style: l({
1550
+ "--axis-minutes": b(n).timeline.value.axisMinutes,
1551
+ "--window-minutes": b(n).timeline.value.windowMinutes,
1552
+ "--slot-minutes": b(n).timeline.value.slotMinutes,
1553
+ "--slot-count": b(n).timeline.value.axisMinutes / b(n).timeline.value.slotMinutes
1554
+ }),
1555
+ onPointerdown: b(n).startSelection
1556
+ }, {
1557
+ default: C(() => [g(r.$slots, "default", {
1558
+ timeline: b(n).timeline.value,
1559
+ days: b(n).timeline.value.days,
1560
+ rows: b(n).timeline.value.rows
1561
+ })]),
1562
+ _: 3
1563
+ }, 8, [
1564
+ "as",
1565
+ "as-child",
1566
+ "aria-label",
1567
+ "style",
1568
+ "onPointerdown"
1569
+ ]));
1570
+ }
1571
+ }), je = /* @__PURE__ */ a({
1572
+ __name: "TimelineEvent",
1573
+ props: {
1574
+ asChild: { type: Boolean },
1575
+ as: { default: "div" },
1576
+ item: {},
1577
+ resourceId: { default: void 0 }
1578
+ },
1579
+ setup(n) {
1580
+ let r = n, i = Y("TimelineEvent"), { isHighlighted: a, isPast: o, isEditable: s, isDragging: c, highlight: u, unhighlight: d, onPointerdown: f, onKeydown: m } = Z("TimelineEvent", () => r.item.event, {
1581
+ axes: e(() => ({
1582
+ horizontal: "minutes",
1583
+ vertical: "resource",
1584
+ resourceOrder: i.timeline.value.rows.map((e) => e.resource?.id ?? null)
1585
+ })),
1586
+ resourceId: () => r.resourceId
1587
+ });
1588
+ return (e, r) => (p(), t(b(T), {
1589
+ as: n.as,
1590
+ "as-child": n.asChild,
1591
+ style: l({
1592
+ "--event-start": n.item.startOffset,
1593
+ "--event-end": n.item.endOffset,
1594
+ "--event-lane": n.item.lane
1595
+ }),
1596
+ "data-event-id": n.item.event.id,
1597
+ "data-all-day": n.item.event.allDay ? "" : void 0,
1598
+ "data-starts-before": n.item.startsBefore ? "" : void 0,
1599
+ "data-ends-after": n.item.endsAfter ? "" : void 0,
1600
+ "data-past": b(o) ? "" : void 0,
1601
+ "data-highlighted": b(a) ? "" : void 0,
1602
+ "data-editable": b(s) ? "" : void 0,
1603
+ "data-dragging": b(c) ? "" : void 0,
1604
+ onPointerenter: b(u),
1605
+ onPointerleave: b(d),
1606
+ onFocusin: b(u),
1607
+ onFocusout: b(d),
1608
+ onPointerdown: b(f),
1609
+ onKeydown: b(m)
1610
+ }, {
1611
+ default: C(() => [g(e.$slots, "default", {
1612
+ event: n.item.event,
1613
+ item: n.item
1614
+ })]),
1615
+ _: 3
1616
+ }, 8, [
1617
+ "as",
1618
+ "as-child",
1619
+ "style",
1620
+ "data-event-id",
1621
+ "data-all-day",
1622
+ "data-starts-before",
1623
+ "data-ends-after",
1624
+ "data-past",
1625
+ "data-highlighted",
1626
+ "data-editable",
1627
+ "data-dragging",
1628
+ "onPointerenter",
1629
+ "onPointerleave",
1630
+ "onFocusin",
1631
+ "onFocusout",
1632
+ "onPointerdown",
1633
+ "onKeydown"
1634
+ ]));
1635
+ }
1636
+ }), Me = /* @__PURE__ */ a({
1637
+ __name: "TimelineNow",
1638
+ props: {
1639
+ asChild: { type: Boolean },
1640
+ as: { default: "div" }
1641
+ },
1642
+ setup(r) {
1643
+ let { now: i, timeZone: a, timeline: o } = Y("TimelineNow"), s = e(() => {
1644
+ let e = i.value.withTimeZone(a.value), t = o.value.days.find((t) => t.date.equals(e.toPlainDate())), n = H(e) - o.value.slotMinMinutes;
1645
+ return !t || n < 0 || n > o.value.windowMinutes ? null : t.offset + n;
1646
+ });
1647
+ return (e, i) => s.value === null ? n("", !0) : (p(), t(b(T), {
1648
+ key: 0,
1649
+ as: r.as,
1650
+ "as-child": r.asChild,
1651
+ "aria-hidden": "true",
1652
+ style: l({ "--now": s.value })
1653
+ }, {
1654
+ default: C(() => [g(e.$slots, "default")]),
1655
+ _: 3
1656
+ }, 8, [
1657
+ "as",
1658
+ "as-child",
1659
+ "style"
1660
+ ]));
1661
+ }
1662
+ }), Ne = /* @__PURE__ */ a({
1663
+ __name: "TimelineRow",
1664
+ props: {
1665
+ asChild: { type: Boolean },
1666
+ as: { default: "div" },
1667
+ row: {}
1668
+ },
1669
+ setup(e) {
1670
+ return (n, r) => (p(), t(b(T), {
1671
+ as: e.as,
1672
+ "as-child": e.asChild,
1673
+ role: "group",
1674
+ "aria-label": e.row.resource ? void 0 : "Unassigned",
1675
+ style: l({ "--row-lanes": Math.max(e.row.laneCount, 1) }),
1676
+ "data-unassigned": e.row.resource ? void 0 : "",
1677
+ "data-idle": e.row.items.length ? void 0 : ""
1678
+ }, {
1679
+ default: C(() => [g(n.$slots, "default", {
1680
+ row: e.row,
1681
+ resource: e.row.resource,
1682
+ items: e.row.items
1683
+ })]),
1684
+ _: 3
1685
+ }, 8, [
1686
+ "as",
1687
+ "as-child",
1688
+ "aria-label",
1689
+ "style",
1690
+ "data-unassigned",
1691
+ "data-idle"
1692
+ ]));
1693
+ }
1694
+ }), Pe = /* @__PURE__ */ a({
1695
+ __name: "TimelineSelection",
1696
+ props: {
1697
+ asChild: { type: Boolean },
1698
+ as: { default: "div" },
1699
+ row: {}
1700
+ },
1701
+ setup(r) {
1702
+ let i = r, { selectedRange: a, timeline: o, resources: s } = Y("TimelineSelection"), c = e(() => {
1703
+ let e = a.value, t = s.value ? i.row.resource?.id ?? null : void 0;
1704
+ if (e?.kind !== "axis" || e.resourceId !== t) return null;
1705
+ let { start: n, windowMinutes: r, slotMinMinutes: c } = o.value, l = (e, t) => j(n, e) * r + t - c;
1706
+ return {
1707
+ start: l(e.startDate, e.startMinutes),
1708
+ end: l(e.endDate, e.endMinutes)
1709
+ };
1710
+ });
1711
+ return (e, i) => c.value ? (p(), t(b(T), {
1712
+ key: 0,
1713
+ as: r.as,
1714
+ "as-child": r.asChild,
1715
+ "aria-hidden": "true",
1716
+ style: l({
1717
+ "--selection-start": c.value.start,
1718
+ "--selection-end": c.value.end
1719
+ })
1720
+ }, {
1721
+ default: C(() => [g(e.$slots, "default")]),
1722
+ _: 3
1723
+ }, 8, [
1724
+ "as",
1725
+ "as-child",
1726
+ "style"
1727
+ ])) : n("", !0);
1728
+ }
1729
+ }), Fe = /* @__PURE__ */ a({
1730
+ __name: "TimelineTrack",
1731
+ props: {
1732
+ asChild: { type: Boolean },
1733
+ as: { default: "div" },
1734
+ row: {}
1735
+ },
1736
+ setup(e) {
1737
+ let n = e, { timeline: r, resources: i } = Y("TimelineTrack");
1738
+ return (a, o) => (p(), t(b(T), {
1739
+ as: e.as,
1740
+ "as-child": e.asChild,
1741
+ "data-drop": "axis",
1742
+ "data-axis-minutes": b(r).axisMinutes,
1743
+ "data-resource-id": b(i) ? String(n.row.resource?.id ?? "") : void 0
1744
+ }, {
1745
+ default: C(() => [g(a.$slots, "default")]),
1746
+ _: 3
1747
+ }, 8, [
1748
+ "as",
1749
+ "as-child",
1750
+ "data-axis-minutes",
1751
+ "data-resource-id"
1752
+ ]));
1753
+ }
1754
+ });
1755
+ export { ae as CalendarHeading, oe as CalendarNav, se as CalendarRoot, $ as EventBar, $ as MonthEvent, ue as EventResizeHandle, de as Gantt, fe as GanttBar, pe as GanttLinks, me as GanttRow, he as GanttToday, ge as GanttTrack, ce as MonthDay, le as MonthDayMore, _e as MonthGrid, ve as MonthWeek, ye as MonthWeekday, be as NowIndicator, xe as ResourceCell, Se as ResourceDayHeader, Ce as ResourceGrid, we as ResourceLabel, Te as ResourceRow, Ee as TimeColumn, De as TimeEvent, Oe as TimeGrid, ke as TimeSelection, Ae as Timeline, je as TimelineEvent, Me as TimelineNow, Ne as TimelineRow, Pe as TimelineSelection, Fe as TimelineTrack, Y as injectCalendarContext, Q as injectEventPrimitive, J as provideCalendarContext, K as useCalendar, Z as useEventState, G as useInteractions };
1756
+
1757
+ //# sourceMappingURL=index.js.map