UNPKG

vue-timeline-chart

Version:
3 lines (2 loc) 27.8 kB
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("vue")):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`vue-timeline-chart`]={},e.Vue))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var n=e=>{let n=(0,t.shallowRef)(0),r=(0,t.shallowRef)(0),i;function a(e){i=new ResizeObserver(([e])=>{let t=e?.contentRect;t&&([n.value,r.value]=[t.width,t.height])}),i.observe(e)}return(0,t.watch)(e,e=>{if(e){a(e);return}i?.disconnect()}),{width:n,height:r}},r=function(e){return`${e}`.trim().padStart(2,`0`)},i=365.2425,a=6048e5,o=6e4,s=3600*24;s*7,s*i/12*3;var c=Symbol.for(`constructDateFrom`);function l(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&c in e?e[c](t):e instanceof Date?new e.constructor(t):new Date(t)}function u(e,t){return l(t||e,e)}function d(e,t,n){let r=u(e,n?.in);return isNaN(t)?l(n?.in||e,NaN):(t&&r.setDate(r.getDate()+t),r)}var f={};function p(){return f}function m(e,t){let n=p(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=u(e,t?.in),a=i.getDay(),o=(a<r?7:0)+a-r;return i.setDate(i.getDate()-o),i.setHours(0,0,0,0),i}function h(e,...t){let n=l.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function g(e,t){let n=u(e,t?.in);return n.setHours(0,0,0,0),n}function _(e,t,n){let r=u(e,n?.in);return r.setTime(r.getTime()+t*o),r}function v(e,t,n){return d(e,t*7,n)}function y(e,t){let[n,r]=h(e,t.start,t.end);return{start:n,end:r}}function b(e,t){let{start:n,end:r}=y(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(l(n,o)),o.setDate(o.getDate()+s),o.setHours(0,0,0,0);return i?c.reverse():c}function x(e,t){let{start:n,end:r}=y(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setMinutes(0,0,0);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(l(n,o)),o.setHours(o.getHours()+s);return i?c.reverse():c}function S(e,t){let{start:n,end:r}=y(t?.in,e);n.setSeconds(0,0);let i=+n>+r,a=i?+n:+r,o=i?r:n,s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(l(n,o)),o=_(o,s);return i?c.reverse():c}function ee(e,t){let{start:n,end:r}=y(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0),o.setDate(1);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(l(n,o)),o.setMonth(o.getMonth()+s);return i?c.reverse():c}function te(e,t){let{start:n,end:r}=y(t?.in,e),i=+n>+r,a=m(i?r:n,t),o=m(i?n:r,t);a.setHours(15),o.setHours(15);let s=+o.getTime(),c=a,u=t?.step??1;if(!u)return[];u<0&&(u=-u,i=!i);let d=[];for(;+c<=s;)c.setHours(0),d.push(l(n,c)),c=v(c,u),c.setHours(15);return i?d.reverse():d}function C(e,t){let n=u(e,t?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function w(e,t){let n=u(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function T(e,t){let{start:n,end:r}=y(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0),o.setMonth(0,1);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(l(n,o)),o.setFullYear(o.getFullYear()+s);return i?c.reverse():c}function ne(e,t){let n=u(e,t?.in),r=n.getFullYear(),i=p(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=l(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=m(o,t),c=l(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let d=m(c,t);return+n>=+s?r+1:+n>=+d?r:r-1}function E(e,t){let n=p(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=ne(e,t),a=l(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),m(a,t)}function D(e,t){let n=u(e,t?.in),r=m(n,t)-+E(n,t);return Math.round(r/a)+1}var O={ms:1,seconds:1e3,minutes:1e3*60,hours:1e3*60*60,days:1e3*60*60*24,weeks:1e3*60*60*24*7,months:1e3*60*60*24*7*4,years:1e3*60*60*24*7*4*12},k=e=>Object.keys(O).indexOf(e),re=(e,n,r,i,a,o)=>{let s=(0,t.shallowRef)(r.value),c=(0,t.shallowRef)(i.value),l=[{unit:`seconds`,steps:[.1,1,2,5,10]},{unit:`minutes`,steps:[.25,.5,1,2,5,10]},{unit:`hours`,steps:[.25,.5,1,2,4,6,12]},{unit:`days`,steps:[1]},{unit:`weeks`,steps:[1]},{unit:`months`,steps:[1,2]},{unit:`years`,steps:[1,5,10,25,50,100,250,500,1e3]}],u=(0,t.computed)(()=>(a.value?.length?a.value:l).toSorted((e,t)=>k(e.unit)-k(t.unit)).flatMap(e=>e.steps.toSorted((e,t)=>e-t).map(t=>({unit:e.unit,step:t}))));(0,t.watch)(r,()=>{s.value=r.value}),(0,t.watch)(i,()=>{c.value=i.value});let d=(0,t.computed)(()=>{let[e]=u.value;for(let[t,n]of u.value.entries()){let r=s.value/(O[n.unit]*(n.step??1));if(r>=1&&r<=c.value){e=n;break}if(r<1){e=u.value[t-1]??n;break}r>=1&&t===u.value.length-1&&(e=n)}return{unit:e.unit,step:e.step??1}});function f(e){switch(d.value.unit){case`years`:return e.getFullYear()%d.value.step===0;case`months`:return e.getMonth()%d.value.step===0;case`weeks`:return D(e,{weekStartsOn:o.value})%d.value.step===0;case`days`:return e.getDate()%d.value.step===0;case`hours`:return e.getHours()%d.value.step===0;case`minutes`:return e.getMinutes()%d.value.step===0;case`seconds`:return e.getSeconds()%d.value.step===0;case`ms`:return e.getMilliseconds()%d.value.step===0}}return{scale:d,baseDividers:O,visibleTimestamps:(0,t.computed)(()=>{let t=[],r=e.value,i=n.value,{unit:a,step:s}=d.value;if(a===`ms`){let e=Math.max(1,s),n=Math.ceil(r/e)*e;for(let r=n;r<i;r+=e)t.push(r);return t}let c=[];switch(a){case`seconds`:c=S({start:r,end:i}).flatMap(e=>{let t=[];for(let n=0;n<60;n++)t.push(new Date(e.valueOf()+n*O.seconds));return t});break;case`minutes`:c=S({start:r,end:i});break;case`hours`:c=x({start:r,end:i});break;case`days`:c=b({start:r,end:i});break;case`weeks`:c=te({start:r,end:i},{weekStartsOn:o.value});break;case`months`:c=ee({start:r,end:i});break;case`years`:c=T({start:r,end:i});break}for(let e of c)if(!(s>1&&!f(e))&&(t.push(e.valueOf()),s<1))for(let n=1;n<1/s;n++)t.push(e.valueOf()+n*s*O[a]);return t})}};function A(e,n){return(0,t.getCurrentScope)()?((0,t.onScopeDispose)(e,n),!0):!1}var j=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var M=e=>e!=null,N=Object.prototype.toString,ie=e=>N.call(e)===`[object Object]`;function P(e){return Array.isArray(e)?e:[e]}function F(e){return e||(0,t.getCurrentInstance)()}function I(e,n=!0,r){F(r)?(0,t.onMounted)(e,r):n?e():(0,t.nextTick)(e)}function L(e,n,r){return(0,t.watch)(e,n,{...r,immediate:!0})}var R=j?window:void 0;j&&window.document,j&&window.navigator,j&&window.location;function z(e){let n=(0,t.toValue)(e);return n?.$el??n}function B(...e){let n=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),r=(0,t.computed)(()=>{let n=P((0,t.toValue)(e[0])).filter(e=>e!=null);return n.every(e=>typeof e!=`string`)?n:void 0});return L(()=>[r.value?.map(e=>z(e))??[R].filter(e=>e!=null),P((0,t.toValue)(r.value?e[1]:e[0])),P((0,t.unref)(r.value?e[2]:e[1])),(0,t.toValue)(r.value?e[3]:e[2])],([e,t,r,i],a,o)=>{if(!e?.length||!t?.length||!r?.length)return;let s=ie(i)?{...i}:i,c=e.flatMap(e=>t.flatMap(t=>r.map(r=>n(e,t,r,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}function V(){let e=(0,t.shallowRef)(!1),n=(0,t.getCurrentInstance)();return n&&(0,t.onMounted)(()=>{e.value=!0},n),e}function H(e){let n=V();return(0,t.computed)(()=>(n.value,!!e()))}function U(e,n,r={}){let{window:i=R,...a}=r,o,s=H(()=>i&&`MutationObserver`in i),c=()=>{o&&=(o.disconnect(),void 0)},l=(0,t.watch)((0,t.computed)(()=>{let n=P((0,t.toValue)(e)).map(z).filter(M);return new Set(n)}),e=>{c(),s.value&&e.size&&(o=new MutationObserver(n),e.forEach(e=>o.observe(e,a)))},{immediate:!0,flush:`post`}),u=()=>o?.takeRecords(),d=()=>{l(),c()};return A(d),{isSupported:s,stop:d,takeRecords:u}}function W(e,n,r={}){let{window:i=R,...a}=r,o,s=H(()=>i&&`ResizeObserver`in i),c=()=>{o&&=(o.disconnect(),void 0)},l=(0,t.watch)((0,t.computed)(()=>{let n=(0,t.toValue)(e);return Array.isArray(n)?n.map(e=>z(e)):[z(n)]}),e=>{if(c(),s.value&&i){o=new ResizeObserver(n);for(let t of e)t&&o.observe(t,a)}},{immediate:!0,flush:`post`}),u=()=>{c(),l()};return A(u),{isSupported:s,stop:u}}function ae(e,n={}){let{reset:r=!0,windowResize:i=!0,windowScroll:a=!0,immediate:o=!0,updateTiming:s=`sync`}=n,c=(0,t.shallowRef)(0),l=(0,t.shallowRef)(0),u=(0,t.shallowRef)(0),d=(0,t.shallowRef)(0),f=(0,t.shallowRef)(0),p=(0,t.shallowRef)(0),m=(0,t.shallowRef)(0),h=(0,t.shallowRef)(0);function g(){let t=z(e);if(!t){r&&(c.value=0,l.value=0,u.value=0,d.value=0,f.value=0,p.value=0,m.value=0,h.value=0);return}let n=t.getBoundingClientRect();c.value=n.height,l.value=n.bottom,u.value=n.left,d.value=n.right,f.value=n.top,p.value=n.width,m.value=n.x,h.value=n.y}function _(){s===`sync`?g():s===`next-frame`&&requestAnimationFrame(()=>g())}return W(e,_),(0,t.watch)(()=>z(e),e=>!e&&_()),U(e,_,{attributeFilter:[`style`,`class`]}),a&&B(`scroll`,_,{capture:!0,passive:!0}),i&&B(`resize`,_,{passive:!0}),I(()=>{o&&_()}),{height:c,bottom:l,left:u,right:d,top:f,width:p,x:m,y:h,update:_}}function G(e,t){return Math.hypot(t.clientX-e.clientX,t.clientY-e.clientY)}function oe({viewportStart:e,viewportEnd:t}){let n=null,r=null,i=null,a=null,o=null;function s(e){if(e.touches.length<2){let[t]=Array.from(e.touches);n=t?.clientX||null}}function c(n){l.initialTouchList=n.touches;let[r,i]=Array.from(n.touches);l.initialTouchViewportStart=e.value,l.initialTouchViewportEnd=t.value,l.initialPinchDistance=r&&i?G(r,i):null}let l={get lastTouchX(){return n},set lastTouchX(e){n=e},get initialTouchList(){return r},set initialTouchList(e){r=e},get initialTouchViewportStart(){return i},set initialTouchViewportStart(e){i=e},get initialTouchViewportEnd(){return a},set initialTouchViewportEnd(e){a=e},get initialPinchDistance(){return o},set initialPinchDistance(e){o=e}};return{setLastTouchX:s,setInitialTouchList:c,state:l}}var K=200,se=.05,ce=.02,q=8,J=100,Y=50;function le({onFling:e,config:n}){let r=[],i=null,a=0,o=K,s=0,c=0,l=0;function u(){i!==null&&(cancelAnimationFrame(i),i=null),r=[]}function d(e,t){c=i===null?0:a,l=t,u(),r=[{x:e,t}]}function f(e,t){for(r.push({x:e,t});r[0].t<t-J;)r.shift()}function p(e){let t=r.filter(t=>e-t.t<=J);r=[];let{enabled:u=!0,timeConstant:d=K}=n();if(!u)return;o=Number.isFinite(d)?Math.max(1,d):K;let[f]=t,p=t[t.length-1];if(!f||f===p||e-p.t>Y)return;let g=p.t-f.t;if(g<=0)return;let _=-(p.x-f.x)/g;if(Math.abs(_)<se)return;let v=Math.sign(c)===Math.sign(_)?c*Math.exp(-(e-l)/o):0;c=0,a=h(_+v),s=e,i=requestAnimationFrame(m)}function m(t){let n=t-s;if(s=t,a*=Math.exp(-n/o),Math.abs(a)<ce){u();return}if(e(a*n)===!1){u();return}i=requestAnimationFrame(m)}function h(e){return Math.max(-8,Math.min(q,e))}return(0,t.onScopeDispose)(u),{track:f,reset:d,release:p,stop:u}}var X={enabled:!1,strategy:`dataset`,compare:void 0,collisionWidth:0,maxLanes:5};function Z(e,t){return{...X,...e,...t}}function Q(e){return e.type===`range`||e.type===`point`}function $(e,t){if(e.type===`point`)return{start:e.start-t/2,end:e.start+t/2};let n=e.end??e.start;return{start:e.start,end:Math.max(n,e.start+t)}}function ue(e,t={}){let n=t.minSpanMs??0,r=Math.max(1,Math.floor(t.maxLanes??1/0)),i=e.map(e=>({item:e,...$(e,n),lane:0}));i.sort((e,n)=>t.compare?t.compare(e.item,n.item):e.start-n.start);let a=[];for(let e of i){let t=!1;for(let n=0;n<a.length;n++)if(a[n]<=e.start){a[n]=e.end,e.lane=n,t=!0;break}if(t)continue;let n=a.length;if(n<r)e.lane=n,a.push(e.end);else{let t=0;for(let e=1;e<a.length;e++)a[e]<a[t]&&(t=e);e.lane=t,a[t]=Math.max(a[t],e.end)}}let o=i.toSorted((e,t)=>e.start-t.start),s=new Map,c=[],l=-1/0,u=0,d=()=>{let e=u+1;for(let t of c)s.set(t.item.id,{lane:t.lane,stackSize:e,isStacked:e>1});c=[],l=-1/0,u=0};for(let e of o)c.length&&e.start>=l&&d(),c.push(e),l=Math.max(l,e.end),u=Math.max(u,e.lane);return c.length&&d(),{laneAssignmentsByItem:s,laneCount:a.length}}function de(e,t){let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>e[n]?.laneCount===t[n]?.laneCount)}function fe(e){let n=(0,t.computed)(()=>{let n=new Map,r=(0,t.toValue)(e.stacking);for(let i of(0,t.toValue)(e.groups)){let a=Z(r,i.stacking);if(!a.enabled)continue;let o=(0,t.toValue)(a.strategy===`viewport`?e.visibleItems:e.items).filter(e=>e.group===i.id&&Q(e)),s=0;if(a.collisionWidth>0){let n=(0,t.toValue)(e.pxPerMs);n>0&&(s=a.collisionWidth/n)}n.set(i.id,ue(o,{compare:a.compare,minSpanMs:s,maxLanes:a.maxLanes}))}return n}),r=(0,t.shallowRef)({});return(0,t.watch)(n,e=>{let t={};for(let[n,{laneCount:r}]of e)t[n]={laneCount:r};de(r.value,t)||(r.value=t)},{immediate:!0}),{stackingByGroup:n,laneCountsByGroup:r,groupStyles:(0,t.computed)(()=>{let r=new Map;for(let i of(0,t.toValue)(e.groups)){let e=n.value.get(i.id)?.laneCount??0;r.set(i.id,{...i.cssVariables,...e>0?{"--_lane-count":e}:{}})}return r})}}var pe={class:`timeline-wrapper`},me={class:`timestamps`},he={class:`groups`},ge=[`onClick`,`onPointermove`,`onPointerdown`,`onPointerup`,`onContextmenu`],_e=[`onClick`,`onPointermove`,`onPointerdown`,`onPointerup`,`onContextmenu`],ve={key:0,class:`backgrounds`},ye=[`onClick`,`onPointermove`,`onPointerdown`,`onPointerup`,`onContextmenu`],be={key:1,class:`markers`};e.Timeline=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})((0,t.defineComponent)({__name:`Timeline`,props:{groups:{default:()=>[]},items:{default:()=>[]},markers:{default:()=>[]},viewportMin:{default:void 0},viewportMax:{default:void 0},minViewportDuration:{default:1e3},maxViewportDuration:{default:void 0},initialViewportStart:{default:void 0},initialViewportEnd:{default:void 0},renderTimestampLabel:{type:Function,default:(e,t)=>{let n=new Date(e),i=``;return(![`hours`,`minutes`,`seconds`,`ms`].includes(t.unit)||g(n).valueOf()===e)&&(i+=`${n.toLocaleString(`default`,{month:t.unit!==`years`&&(C(n).valueOf()===e||t.unit===`days`||g(n).valueOf()===e&&!(t.unit===`months`&&t.step===.25))?`short`:void 0,year:w(n).valueOf()===e?`numeric`:void 0,era:w(n).valueOf()===e&&w(n).getFullYear()<=0?`short`:void 0,day:t.unit!==`years`&&!(t.unit===`months`&&t.step>=1)&&g(n).valueOf()===e?`numeric`:void 0})} `),[`hours`,`minutes`,`seconds`,`ms`].includes(t.unit)&&(i+=`${r(n.getHours())}:${r(n.getMinutes())}${n.getSeconds()>0?`:${r(n.getSeconds())}`:``}${n.getMilliseconds()>0?`.${r(n.getMilliseconds())}`:``}`),i}},fixedLabels:{type:Boolean,default:!1},minTimestampWidth:{default:100},maxZoomSpeed:{default:60},momentum:{default:()=>({})},activeItems:{default:()=>[]},maxOffsetOutsideViewport:{default:50},scales:{default:()=>[]},weekStartsOn:{default:0},stacking:{default:void 0}},emits:[`pointermove`,`pointerdown`,`pointerup`,`wheel`,`click`,`contextmenu`,`touchmove`,`touchstart`,`touchend`,`mousemoveTimeline`,`mouseleaveTimeline`,`changeViewport`,`changeScale`,`changeStacking`],setup(e,{expose:r,emit:i}){let a=e,o=i;r({setViewport:I,onWheel:L,clearCache:T});let s=(0,t.useTemplateRef)(`timelineEl`),{width:c}=n(s),l=(0,t.shallowRef)(0),u=(0,t.shallowRef)(1e4),d=(0,t.computed)(()=>u.value-l.value),f=(0,t.computed)(()=>c.value/d.value);(0,t.watch)([l,u],([e,t])=>{o(`changeViewport`,{start:e,end:t})}),(0,t.watch)(()=>a.items,e=>{e.some(e=>e.id===void 0)&&console.error("[vue-timeline-chart] Some items are missing an `id` property. Please provide a unique ID for each item.")},{immediate:!0}),(0,t.watch)(()=>a.markers,e=>{e.some(e=>e.id===void 0)&&console.error("[vue-timeline-chart] Some markers are missing an `id` property. Please provide a unique ID for each marker.")},{immediate:!0}),(0,t.watchEffect)(()=>{try{F()}catch(e){console.error(e)}});let{left:p}=ae(s);function m(){return a.items?.reduce((e,t)=>t.start<e?t.start:e,1/0)}function h(){return a.items?.reduce((e,t)=>t.end!==void 0&&t.end>e||t.start>e?t.end??t.start:e,-1/0)}function g(){I(a.initialViewportStart??a.viewportMin??m()??0,a.initialViewportEnd??a.viewportMax??h()??1e4)}(0,t.watch)([()=>a.viewportMin,()=>a.viewportMax],()=>{I(l.value,u.value)}),(0,t.watch)([()=>a.initialViewportStart,()=>a.initialViewportEnd],()=>{I(a.initialViewportStart,a.initialViewportEnd)});let _=(0,t.computed)(()=>a.items.filter(e=>e.start<u.value&&(e.end??e.start)>l.value).sort((e,t)=>e.start-t.start)||[]),v=(0,t.computed)(()=>a.markers.filter(e=>e.start<u.value&&e.start>l.value).sort((e,t)=>e.start-t.start)||[]),y=(0,t.computed)(()=>v.value.filter(e=>!e.group)),b=(0,t.computed)(()=>_.value.filter(e=>e.type===`background`&&!e.group)),{groupStyles:x,stackingByGroup:S,laneCountsByGroup:ee}=fe({groups:()=>a.groups,items:()=>a.items,visibleItems:_,stacking:()=>a.stacking,pxPerMs:f});(0,t.watch)(ee,e=>o(`changeStacking`,e),{immediate:!0});let te=(0,t.computed)(()=>{let e=new Map;for(let t of a.groups){let n=S.value.get(t.id),r=_.value.filter(e=>e.group===t.id&&e.type!==`background`);e.set(t.id,r.map(e=>({item:e,laneAssignment:n?.laneAssignmentsByItem.get(e.id)})))}return e}),C=new Map,w=new Map;function T(){C.clear(),w.clear()}(0,t.watch)([l,u,c,()=>a.stacking,()=>a.groups],()=>{T()},{deep:!0}),(0,t.watch)(_,()=>{C.clear()}),(0,t.watch)(v,()=>{w.clear()}),(0,t.onMounted)(()=>{g(),(0,t.nextTick)(()=>{T()})});function ne(e){let t=e.group?S.value.get(e.group)?.laneAssignmentsByItem.get(e.id):void 0;return{"--_left":`${N(e.start,e.end)}px`,"--_width":e.end===void 0?void 0:`${ie(e.start,e.end)}px`,...t?{"--_lane":t.lane,"--_stack-count":t.stackSize}:{},...e.cssVariables}}function E(e,t=!1){let n=t?w:C,r=n.get(e.id);if(r)return r;let i=ne(e);return n.set(e.id,i),i}let{visibleTimestamps:D,scale:O}=re(l,u,d,(0,t.computed)(()=>c.value/a.minTimestampWidth),(0,t.computed)(()=>a.scales),(0,t.computed)(()=>a.weekStartsOn)),k=(0,t.computed)(()=>D.value.map(e=>N(e)));(0,t.watch)(O,(e,t)=>{e.step===t?.step&&e.unit===t?.unit||o(`changeScale`,e)},{immediate:!0});function A(e){let t=new Date(e),n=t.getMilliseconds()===0,r=n&&t.getSeconds()===0,i=r&&t.getMinutes()===0,o=i&&t.getHours()===0,s=o&&t.getDay()===a.weekStartsOn,c=o&&t.getDate()===1;return{"is-second":n,"is-minute":r,"is-hour":i,"is-day":o,"is-week":s,"is-month":c,"is-year":c&&t.getMonth()===0}}let j=(0,t.computed)(()=>a.maxOffsetOutsideViewport/c.value*d.value),M=(0,t.computed)(()=>c.value+2*(j.value/d.value)*c.value);function N(e,t){if(t!==void 0&&e<l.value-j.value&&(t-e)/d.value*c.value>M.value){let e=-j.value/d.value*c.value,n=u.value+j.value;return t>n?e:e-(n-t)/d.value*c.value}return(e-l.value)/d.value*c.value}function ie(e,t){let n=(t-e)/d.value*c.value;return Math.min(n,M.value)}function P(e,t){let n=e/c.value*d.value;if(e>0&&a.viewportMax!==void 0&&u.value>=a.viewportMax||e<0&&a.viewportMin!==void 0&&l.value<=a.viewportMin)return!1;let r=l.value+n,i=u.value+n;if(a.viewportMax!==void 0&&i>a.viewportMax){let e=i-a.viewportMax;r-=e,i=a.viewportMax}if(a.viewportMin!==void 0&&r<a.viewportMin){let e=a.viewportMin-r;i+=e,r=a.viewportMin}return I(r,i),t?.type===`wheel`&&$(t),!0}function F(){if(a.initialViewportStart!==void 0&&a.initialViewportEnd!==void 0&&a.initialViewportStart>=a.initialViewportEnd)throw Error(`[vue-timeline-chart] Invalid props: initialViewportStart must be smaller than initialViewportEnd`);if(a.viewportMin!==void 0&&a.viewportMax!==void 0&&a.viewportMin>=a.viewportMax)throw Error(`[vue-timeline-chart] Invalid props: viewportMin must be smaller than viewportMax`)}function I(e,t){if(e===void 0&&t===void 0){console.warn(`[vue-timeline-chart] setViewport: both start and end are undefined. No viewport will be set.`);return}let n=e===void 0?l.value:a.viewportMin===void 0?e:Math.max(e,a.viewportMin),r=t===void 0?u.value:a.viewportMax===void 0?t:Math.min(t,a.viewportMax),i=r-n;if(a.minViewportDuration!==void 0&&i<a.minViewportDuration){let e=a.minViewportDuration-i;n-=e*.5,r+=e*.5}else if(a.maxViewportDuration!==void 0&&i>a.maxViewportDuration){let e=a.maxViewportDuration-i;n-=e*.5,r+=e*.5}l.value=Math.round(n),u.value=Math.round(r)}function L(e){if(F(),U.stop(),o(`wheel`,e),e.deltaY===0&&e.preventDefault(),e.shiftKey){e.preventDefault(),P((e.deltaY===0&&e.deltaX!==0?e.deltaX:e.deltaY)*(e.deltaMode===0?1:18),e);return}if(e.deltaX!==0){P(e.deltaX*(e.deltaMode===0?1:18),e);return}if(!(e.metaKey||e.ctrlKey))return;e.preventDefault();let t=(e.clientX-p.value)/c.value,n=a.maxZoomSpeed?Math.max(-a.maxZoomSpeed,Math.min(a.maxZoomSpeed,e.deltaY*(e.deltaMode===0?1:10))):e.deltaY*(e.deltaMode===0?1:10);R(Math.round(-d.value*.01*n),t,e)}function R(e,t=.5,n){e>0?e=d.value-e<a.minViewportDuration?d.value-a.minViewportDuration:e:a.maxViewportDuration&&(e=d.value-e>a.maxViewportDuration?-(a.maxViewportDuration-d.value):e);let r=e*t,i=e-r,o=l.value+r,s=u.value-i;if(o>=s){console.error(`Rounding issue probably occured while zooming. Setting different values for minViewportDuration and maxViewportDuration might help.`);return}I(o,s),$(n)}function z(e){let t;t=`touches`in e?Array.from(e.touches).reduce((e,t)=>e+t.clientX,0)/e.touches.length:e.clientX;let n=(t-p.value)/c.value;return l.value+d.value*n}let{state:B,setLastTouchX:V,setInitialTouchList:H}=oe({viewportStart:l,viewportEnd:u}),U=le({onFling:P,config:()=>a.momentum});function W(e){if(e.touches.length===2&&B.initialPinchDistance!==null&&B.initialTouchViewportStart!==null&&B.initialTouchViewportEnd!==null){let[t,n]=[...e.touches].sort((e,t)=>e.clientX-t.clientX),[r,i]=[t,n].map(e=>[...B.initialTouchList].find(t=>t.identifier===e.identifier)),a=G(t,n)/B.initialPinchDistance,o=(r.screenX+i.screenX)/2,s=-((t.screenX+n.screenX)/2-o)/f.value,l=(o-p.value)/c.value,u=B.initialTouchViewportEnd-B.initialTouchViewportStart,d=u/a,m=d-u,h=B.initialTouchViewportStart-m*l+s;I(h,h+d)}else if(e.touches.length===1){let[t]=e.touches;B.lastTouchX===null?B.lastTouchX=t.clientX:(P(B.lastTouchX-t.clientX,e),V(e)),U.track(t.clientX,e.timeStamp)}o(`touchmove`,{time:z(e),event:e})}function K(e){e.touches.length===1?U.reset(e.touches[0].clientX,e.timeStamp):U.stop(),H(e),V(e),o(`touchstart`,{time:z(e),event:e})}function se(e){e.touches.length===0&&U.release(e.timeStamp),q(e),o(`touchend`,{event:e})}function ce(e){U.stop(),q(e)}function q(e){e.touches.length===1&&U.reset(e.touches[0].clientX,e.timeStamp),V(e),H(e)}function J(e,t=null){o(`pointerdown`,{time:z(e),event:e,item:t})}function Y(e,t=null){o(`pointermove`,{time:z(e),event:e,item:t})}function X(e,t=null){o(`pointerup`,{time:z(e),event:e,item:t})}function Z(e,t=null){o(`click`,{time:z(e),event:e,item:t})}function Q(e,t=null){o(`contextmenu`,{time:z(e),event:e,item:t})}function $(e){o(`mousemoveTimeline`,{time:z(e),event:e})}function ue(e){o(`mouseleaveTimeline`,{event:e})}return(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,pe,[(0,t.createElementVNode)(`div`,{ref_key:`timelineEl`,ref:s,class:`timeline`,onWheel:L,onClick:Z,onTouchmove:W,onTouchstart:K,onTouchend:se,onTouchcancel:ce,onPointermove:Y,onPointerdown:J,onPointerup:X,onContextmenu:(0,t.withModifiers)(Q,[`prevent`]),onMousemove:$,onMouseleave:ue},[(0,t.createElementVNode)(`div`,me,[(0,t.renderSlot)(n.$slots,`timestamps-before`,{scale:(0,t.unref)(O)},void 0,!0),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(D),(r,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:r,class:(0,t.normalizeClass)([`timestamp`,A(r)]),style:(0,t.normalizeStyle)({"--_left":`${k.value[i]}px`})},[(0,t.renderSlot)(n.$slots,`timestamp`,{timestamp:r,scale:(0,t.unref)(O)},()=>[(0,t.createTextVNode)((0,t.toDisplayString)(e.renderTimestampLabel(r,(0,t.unref)(O))),1)],!0)],6))),128)),(0,t.renderSlot)(n.$slots,`timestamps-after`,{scale:(0,t.unref)(O)},void 0,!0),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(v.value.filter(e=>e.group===`_timestamps`),e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.id,style:(0,t.normalizeStyle)(E(e)),class:(0,t.normalizeClass)([e.type,e.className])},[(0,t.renderSlot)(n.$slots,`marker`,{item:e},void 0,!0)],6))),128)),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(_.value.filter(e=>e.group===`_timestamps`&&e.type===`marker`),e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.id,style:(0,t.normalizeStyle)(E(e)),class:(0,t.normalizeClass)([e.type,e.className])},[(0,t.renderSlot)(n.$slots,`marker`,{item:e},void 0,!0)],6))),128))]),(0,t.createElementVNode)(`div`,he,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.groups,r=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:r.id,class:(0,t.normalizeClass)([`group`,r.className]),style:(0,t.normalizeStyle)((0,t.unref)(x).get(r.id))},[(0,t.createElementVNode)(`div`,{class:(0,t.normalizeClass)([`group-label`,{fixed:e.fixedLabels}])},[(0,t.renderSlot)(n.$slots,`group-label`,{group:r},()=>[(0,t.createTextVNode)((0,t.toDisplayString)(r.label),1)],!0)],2),(0,t.createElementVNode)(`div`,{class:(0,t.normalizeClass)([`group-items`,{stacked:((0,t.unref)(S).get(r.id)?.laneCount??0)>0}])},[(0,t.renderSlot)(n.$slots,`items-${r.id}`,{group:r,itemsInViewport:_.value.filter(e=>e.group===r.id),viewportStart:l.value,viewportEnd:u.value,stacking:(0,t.unref)(S).get(r.id)},()=>[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(te.value.get(r.id)??[],({item:r,laneAssignment:i})=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:r.id,style:(0,t.normalizeStyle)(E(r)),class:(0,t.normalizeClass)([`item`,r.type,r.className,{active:e.activeItems.includes(r.id),stacked:!!i,overlapping:!!i?.isStacked}]),onClick:(0,t.withModifiers)(e=>Z(e,r),[`stop`]),onPointermove:(0,t.withModifiers)(e=>Y(e,r),[`stop`]),onPointerdown:(0,t.withModifiers)(e=>J(e,r),[`stop`]),onPointerup:(0,t.withModifiers)(e=>X(e,r),[`stop`]),onContextmenu:(0,t.withModifiers)(e=>Q(e,r),[`prevent`,`stop`])},[(0,t.renderSlot)(n.$slots,`item`,{item:r,lane:i?.lane??0,stackSize:i?.stackSize??1,isStacked:!!i?.isStacked},void 0,!0)],46,ge))),128))],!0)],2),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(_.value.filter(e=>e.group===r.id&&e.type===`background`),e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.id,style:(0,t.normalizeStyle)(E(e)),class:(0,t.normalizeClass)([e.type,e.className]),onClick:(0,t.withModifiers)(t=>Z(t,e),[`stop`]),onPointermove:(0,t.withModifiers)(t=>Y(t,e),[`stop`]),onPointerdown:(0,t.withModifiers)(t=>J(t,e),[`stop`]),onPointerup:(0,t.withModifiers)(t=>X(t,e),[`stop`]),onContextmenu:(0,t.withModifiers)(t=>Q(t,e),[`prevent`,`stop`])},null,46,_e))),128)),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(v.value.filter(e=>e.group===r.id),e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.id,style:(0,t.normalizeStyle)(E(e,!0)),class:(0,t.normalizeClass)([e.type,e.className])},[(0,t.renderSlot)(n.$slots,`marker`,{item:e},void 0,!0)],6))),128))],6))),128)),b.value.length>0?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,ve,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(b.value,e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.id,style:(0,t.normalizeStyle)(E(e)),class:(0,t.normalizeClass)([e.type,e.className]),onClick:(0,t.withModifiers)(t=>Z(t,e),[`stop`]),onPointermove:(0,t.withModifiers)(t=>Y(t,e),[`stop`]),onPointerdown:(0,t.withModifiers)(t=>J(t,e),[`stop`]),onPointerup:(0,t.withModifiers)(t=>X(t,e),[`stop`]),onContextmenu:(0,t.withModifiers)(t=>Q(t,e),[`prevent`,`stop`])},null,46,ye))),128))])):(0,t.createCommentVNode)(``,!0),y.value.length>0?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,be,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(y.value,e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.id,style:(0,t.normalizeStyle)(E(e,!0)),class:(0,t.normalizeClass)([e.type,e.className])},[(0,t.renderSlot)(n.$slots,`marker`,{item:e},void 0,!0)],6))),128))])):(0,t.createCommentVNode)(``,!0)])],544)]))}}),[[`__scopeId`,`data-v-3045a059`]])});