UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 9.33 kB
{"version":3,"file":"common.mjs","names":["getTimestampIdentifier","MILLIS_IN_DAY","getVisuals","events","minStart","visuals","map","event","columnCount","column","left","width","sort","a","b","Math","max","startTimestampIdentifier","endTimestampIdentifier","hasOverlap","s0","e0","s1","e1","exclude","setColumnCount","groups","forEach","group","groupVisual","length","getRange","getDayRange","startIdentifier","endIdentifier","getNormalizedRange","dayStart","min","getOpenGroup","start","end","timed","i","intersected","k","groupStart","groupEnd","getOverlapGroupHandler","firstWeekday","handler","reset","day","dayEvents","weekday","visual","targetGroup","push","target"],"sources":["../../../../src/components/VCalendar/modes/common.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\nimport { CalendarEventParsed, CalendarEventVisual, CalendarTimestamp } from 'vuetify/types'\nimport { getTimestampIdentifier } from '../util/timestamp'\n\nconst MILLIS_IN_DAY = 86400000\n\nexport type GetRange = (event: CalendarEventParsed) => [number, number]\n\nexport function getVisuals (events: CalendarEventParsed[], minStart = 0): CalendarEventVisual[] {\n const visuals = events.map(event => ({\n event,\n columnCount: 0,\n column: 0,\n left: 0,\n width: 100,\n }))\n\n visuals.sort((a, b) => {\n return (Math.max(minStart, a.event.startTimestampIdentifier) - Math.max(minStart, b.event.startTimestampIdentifier)) ||\n (b.event.endTimestampIdentifier - a.event.endTimestampIdentifier)\n })\n\n return visuals\n}\n\nexport interface ColumnGroup {\n start: number\n end: number\n visuals: CalendarEventVisual[]\n}\n\nexport function hasOverlap (s0: number, e0: number, s1: number, e1: number, exclude = true): boolean {\n return exclude ? !(s0 >= e1 || e0 <= s1) : !(s0 > e1 || e0 < s1)\n}\n\nexport function setColumnCount (groups: ColumnGroup[]) {\n groups.forEach(group => {\n group.visuals.forEach(groupVisual => {\n groupVisual.columnCount = groups.length\n })\n })\n}\n\nexport function getRange (event: CalendarEventParsed): [number, number] {\n return [event.startTimestampIdentifier, event.endTimestampIdentifier]\n}\n\nexport function getDayRange (event: CalendarEventParsed): [number, number] {\n return [event.startIdentifier, event.endIdentifier]\n}\n\nexport function getNormalizedRange (event: CalendarEventParsed, dayStart: number): [number, number] {\n return [Math.max(dayStart, event.startTimestampIdentifier), Math.min(dayStart + MILLIS_IN_DAY, event.endTimestampIdentifier)]\n}\n\nexport function getOpenGroup (groups: ColumnGroup[], start: number, end: number, timed: boolean) {\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i]\n let intersected = false\n\n if (hasOverlap(start, end, group.start, group.end, timed)) {\n for (let k = 0; k < group.visuals.length; k++) {\n const groupVisual = group.visuals[k]\n const [groupStart, groupEnd] = timed ? getRange(groupVisual.event) : getDayRange(groupVisual.event)\n\n if (hasOverlap(start, end, groupStart, groupEnd, timed)) {\n intersected = true\n break\n }\n }\n }\n\n if (!intersected) {\n return i\n }\n }\n\n return -1\n}\n\nexport function getOverlapGroupHandler (firstWeekday: number) {\n const handler = {\n groups: [] as ColumnGroup[],\n min: -1,\n max: -1,\n reset: () => {\n handler.groups = []\n handler.min = handler.max = -1\n },\n getVisuals: (day: CalendarTimestamp, dayEvents: CalendarEventParsed[], timed: boolean, reset = false) => {\n if (day.weekday === firstWeekday || reset) {\n handler.reset()\n }\n\n const dayStart = getTimestampIdentifier(day)\n const visuals = getVisuals(dayEvents, dayStart)\n\n visuals.forEach(visual => {\n const [start, end] = timed ? getRange(visual.event) : getDayRange(visual.event)\n\n if (handler.groups.length > 0 && !hasOverlap(start, end, handler.min, handler.max, timed)) {\n setColumnCount(handler.groups)\n handler.reset()\n }\n\n let targetGroup = getOpenGroup(handler.groups, start, end, timed)\n\n if (targetGroup === -1) {\n targetGroup = handler.groups.length\n\n handler.groups.push({ start, end, visuals: [] })\n }\n\n const target = handler.groups[targetGroup]\n target.visuals.push(visual)\n target.start = Math.min(target.start, start)\n target.end = Math.max(target.end, end)\n\n visual.column = targetGroup\n\n if (handler.min === -1) {\n handler.min = start\n handler.max = end\n } else {\n handler.min = Math.min(handler.min, start)\n handler.max = Math.max(handler.max, end)\n }\n })\n\n setColumnCount(handler.groups)\n\n if (timed) {\n handler.reset()\n }\n\n return visuals\n },\n }\n\n return handler\n}\n"],"mappings":"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"}