UNPKG

@progress/kendo-react-scheduler

Version:

React Scheduler brings the functionality of Outlook's Calendar to a single UI component. KendoReact Scheduler package

57 lines (56 loc) 2.21 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ import * as f from "react"; import { intersects as h } from "../utils/index.mjs"; import { orderBy as v } from "@progress/kendo-data-query"; import { ZonedDate as m } from "@progress/kendo-date-math"; const S = (i, { timezone: t }, { groups: l, ranges: a }) => { const s = []; return v(i, [ { field: "start", dir: "asc" }, { field: "end", dir: "desc" }, { field: "isAllDay", dir: "desc" }, { field: "title", dir: "asc" }, { field: "uid", dir: "asc" } ]).forEach((d) => { l.forEach((o) => { const n = l.length === 1 ? A(d, o) : o; E(d, n) && a.forEach((e) => { if (F(d, e)) { const r = f.createRef(), p = f.createRef(), D = e.end < d.end, R = d.start < e.start, u = m.fromLocalDate(d.start, t), y = m.fromLocalDate(d.end, t), I = { ...d, _ref: p, itemRef: r, head: D, tail: R, order: null, zonedStart: u, zonedEnd: y, group: n, range: e, slots: [], isRecurring: !!d.recurrenceRule, isException: !d.recurrenceRule && d.recurrenceId !== null && d.recurrenceId !== void 0, isAllDay: !!d.isAllDay }; s.push(I); } }); }); }), s; }, A = (i, t) => ({ index: 0, resources: t.resources.filter((l) => B(i, l)) }), B = (i, t) => t.multiple ? (i.dataItem[t.field] || []).some((l) => t[t.valueField] === l) : i.dataItem[t.field] === t[t.valueField], E = (i, t) => !t.resources.some( (l) => l.multiple ? !i.dataItem[l.field].some((a) => l[l.valueField] === a) : i.dataItem[l.field] !== l[l.valueField] ), F = (i, t) => h(t.start, t.end, i.start, i.end) && (t.isAllDay === void 0 || !!i.isAllDay == !!t.isAllDay); export { E as inGroup, F as inRange, S as toItems };