UNPKG

comic-plus

Version:

<p align="center"> <img width="200px" src="./logo.png"/> </p>

74 lines (73 loc) 2.63 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); require("../../../utils/config.js"); const tools = require("../../../utils/tools.js"); require("@vueuse/core"); let temp = 1; function getUid() { return Date.now() + temp++; } function parseDate(date) { return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0); } const useSchedules = (props, { year, month, dates }) => { const scl = vue.computed(() => { return (props == null ? void 0 : props.schedules) || []; }); const getSchedules = () => { var _a; let schedules = scl.value.map((v) => { let start = parseDate(v.startDate); let end = parseDate(v.endDate ?? v.startDate); if (end.getTime() < start.getTime()) { vue.warn("The schedules include options where endDate is less than startDate"); } return { ...v, _uid: getUid(), startDate: start, endDate: end, color: v.color ?? tools.randomColor() }; }).sort((a, b) => a.startDate.getTime() - b.startDate.getTime()); let result = dates.value.map((week) => { return week.map((day) => { let T = day.isPrevMonth ? -1 : day.isNextMonth ? 1 : 0; let timeTemp = new Date(year.value, month.value + T, day.value).getTime(); let copy = structuredClone(schedules); let events = copy.filter((v) => { return v.startDate.getTime() <= timeTemp && v.endDate.getTime() >= timeTemp; }); return { ...day, events }; }); }).flat(); a: for (let i = 0; i < result.length; i++) { const item = result[i]; if (item.events.length === 0 || ((_a = result[i - 1]) == null ? void 0 : _a.events.length) === 0) continue a; b: for (let j = 0; j < item.events.length; j++) { let event = item.events[j]; let PrevEvent = result[i - 1]; if (!PrevEvent) continue b; let idx = PrevEvent == null ? void 0 : PrevEvent.events.findIndex((v) => v._uid === event._uid); if (idx < 0) continue b; let sum = item.events.slice(0, j).reduce((acc, cur) => acc += cur["top"] ?? 0, 0); let sum2 = PrevEvent.events.slice(0, idx + 1).reduce((acc, cur) => acc += cur["top"] ?? 0, 0); let diff = idx - j; event["top"] = diff * 24 - sum + sum2; } } return result; }; const filterSchedules = vue.computed(() => { return props.openSchedule ? getSchedules() : []; }); return { filterSchedules }; }; exports.getUid = getUid; exports.useSchedules = useSchedules;