vuetify
Version:
Vue Material Component Framework
1 lines • 9.56 kB
Source Map (JSON)
{"version":3,"file":"common.mjs","names":["getTimestampIdentifier","MILLIS_IN_DAY","getVisuals","events","minStart","arguments","length","undefined","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","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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"}