Socket
Socket
Sign inDemoInstall

timeline

Package Overview
Dependencies
0
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.2.1 to 3.2.2

release.sh

5

build/index.js

@@ -26,2 +26,3 @@ "use strict";

exports.RawEv3nt = event_1.RawEv3nt;
const band_2 = require("./models/band");
class Timeline extends api_1.default {

@@ -53,3 +54,3 @@ constructor(config, onChange, onSelect) {

this.views = props_1.default.bands
.map(band => (band instanceof events_2.default) ?
.map(band => band.type === band_2.BandType.EventsBand ?
new events_1.default(band, this.onSelect) :

@@ -74,3 +75,3 @@ new band_1.default(band));

props_1.default.bands
.filter(band => band instanceof events_2.default && band.config.label != null)
.filter(band => band.type === band_2.BandType.EventsBand && band.config.label != null)
.map(band => new label_1.default(band))

@@ -77,0 +78,0 @@ .forEach(this.appendToWrapper);

3

build/models/band/events.d.ts

@@ -1,2 +0,2 @@

import Band from '.';
import Band, { BandType } from '.';
import { EventsBandConfig } from '../config';

@@ -6,2 +6,3 @@ import { Pixels } from '../../constants';

export default class EventsBand extends Band<EventsBandConfig> {
type: BandType;
private height;

@@ -8,0 +9,0 @@ private lowestVisibleRow;

@@ -14,2 +14,3 @@ "use strict";

super(Object.assign({}, new config_1.EventsBandConfig(), config));
this.type = _1.BandType.EventsBand;
this.events = [];

@@ -16,0 +17,0 @@ this.rowCount = 0;

import { Granularity } from '../../utils/dates';
import { Pixels, Milliseconds, Ratio } from '../../constants';
import { BandConfig } from '../config';
export declare enum BandType {
EventsBand = 0,
MinimapBand = 1
}
export default abstract class Band<T extends BandConfig> {
config: T;
abstract type: BandType;
protected readonly defaultZoomLevel: number;

@@ -7,0 +12,0 @@ from: Milliseconds;

@@ -8,2 +8,7 @@ "use strict";

const animator_1 = require("../../animator");
var BandType;
(function (BandType) {
BandType[BandType["EventsBand"] = 0] = "EventsBand";
BandType[BandType["MinimapBand"] = 1] = "MinimapBand";
})(BandType = exports.BandType || (exports.BandType = {}));
class Band {

@@ -10,0 +15,0 @@ constructor(config) {

@@ -1,4 +0,5 @@

import Band from '.';
import Band, { BandType } from '.';
import { MinimapBandConfig } from '../config';
export default class MinimapBand extends Band<MinimapBandConfig> {
type: BandType;
private eventHeight;

@@ -5,0 +6,0 @@ private maxRowCount;

@@ -16,2 +16,3 @@ "use strict";

super(extendConfig(config));
this.type = _1.BandType.MinimapBand;
this.canvas = create_element_1.default('canvas');

@@ -18,0 +19,0 @@ this.ctx = this.canvas.getContext('2d');

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../constants");
const minimap_1 = require("./band/minimap");
const utils_1 = require("../utils");
const events_1 = require("./band/events");
const band_1 = require("./band");
function onEventsBand(band) {
return band instanceof events_1.default;
return band.type === band_1.BandType.EventsBand;
}
function onMinimapBand(band) {
return band instanceof minimap_1.default;
return band.type === band_1.BandType.MinimapBand;
}

@@ -44,8 +43,9 @@ class Props {

const [froms, tos] = config.bands.reduce((prev, curr) => {
if (curr instanceof minimap_1.default)
if (curr.type === band_1.BandType.MinimapBand)
return prev;
const events = curr.config.orderedEvents == null ? curr.config.events : curr.config.orderedEvents.events;
const band = curr;
const events = band.config.orderedEvents == null ? band.config.events : band.config.orderedEvents.events;
prev[0].push(events[0].date_min || events[0].date);
prev[1].push(events.reduce((prev, curr) => {
return Math.max(prev, curr.end_date || -Infinity, curr.end_date_max || -Infinity);
prev[1].push(events.reduce((prev2, curr2) => {
return Math.max(prev2, curr2.end_date || -Infinity, curr2.end_date_max || -Infinity);
}, -Infinity));

@@ -52,0 +52,0 @@ return prev;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const band_1 = require("../../models/band");
const props_1 = require("../../models/props");

@@ -8,3 +9,2 @@ const create_element_1 = require("../../utils/create-element");

const constants_1 = require("../../constants");
const events_1 = require("../../models/band/events");
class BandView {

@@ -25,6 +25,7 @@ constructor(band) {

const xChange = ev.clientX - this.dragOffsetX;
if (this.band instanceof events_1.default) {
if (this.band.offsetY !== 0 ||
if (this.band.type === band_1.BandType.EventsBand) {
const band = this.band;
if (band.offsetY !== 0 ||
(Math.abs(yChange) > Math.abs(xChange) && Math.abs(yChange) > 5)) {
this.band.offsetY = yChange;
band.offsetY = yChange;
}

@@ -31,0 +32,0 @@ }

@@ -7,4 +7,4 @@ "use strict";

const animator_1 = require("../../animator");
const events_1 = require("../../models/band/events");
const rulers_1 = require("./rulers");
const band_1 = require("../../models/band");
class Canvas {

@@ -16,3 +16,3 @@ constructor() {

.forEach(band => {
if (band instanceof events_1.default)
if (band.type === band_1.BandType.EventsBand)
this.drawEventsBand(band);

@@ -19,0 +19,0 @@ else

@@ -6,3 +6,3 @@ "use strict";

const props_1 = require("../models/props");
const minimap_1 = require("../models/band/minimap");
const band_1 = require("../models/band");
class Debug {

@@ -34,3 +34,3 @@ constructor() {

<table style="margin-bottom: 1em; border-collapse: collapse; border-spacing: 0;">
<tr><td style="color: gray" width=40>type</td><td>${band instanceof minimap_1.default ? 'minimap' : 'events'}</td></tr>
<tr><td style="color: gray" width=40>type</td><td>${band.type === band_1.BandType.MinimapBand ? 'minimap' : 'events'}</td></tr>
<tr><td style="color: gray">zoom</td><td>${band.zoomLevel}</td></tr>

@@ -37,0 +37,0 @@ <tr><td style="color: gray">px/ms</td><td>${band.pixelsPerMillisecond.toExponential(2)}</td></tr>

@@ -1,2 +0,2 @@

import Band from '.';
import Band, { BandType } from '.';
import { EventsBandConfig } from '../config';

@@ -6,2 +6,3 @@ import { Pixels } from '../../constants';

export default class EventsBand extends Band<EventsBandConfig> {
type: BandType;
private height;

@@ -8,0 +9,0 @@ private lowestVisibleRow;

import { Granularity } from '../../utils/dates';
import { Pixels, Milliseconds, Ratio } from '../../constants';
import { BandConfig } from '../config';
export declare enum BandType {
EventsBand = 0,
MinimapBand = 1
}
export default abstract class Band<T extends BandConfig> {
config: T;
abstract type: BandType;
protected readonly defaultZoomLevel: number;

@@ -7,0 +12,0 @@ from: Milliseconds;

@@ -1,4 +0,5 @@

import Band from '.';
import Band, { BandType } from '.';
import { MinimapBandConfig } from '../config';
export default class MinimapBand extends Band<MinimapBandConfig> {
type: BandType;
private eventHeight;

@@ -5,0 +6,0 @@ private maxRowCount;

@@ -1,1 +0,1 @@

!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Timeline=e():t.Timeline=e()}(this,function(){return function(t){var e={};function i(s){if(e[s])return e[s].exports;var n=e[s]={i:s,l:!1,exports:{}};return t[s].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.d=function(t,e,s){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:s})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var s=Object.create(null);if(i.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(s,n,function(e){return t[e]}.bind(null,n));return s},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="/dist/",i(i.s=13)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(1),n=i(8),o=i(2),r=i(6);function a(t){return t instanceof r.default}function l(t){return t instanceof n.default}class h{constructor(){this.defaultCenterRatio=.5,this.centerChangeDone=o.debounce(()=>{document.dispatchEvent(new CustomEvent(s.CENTER_CHANGE_DONE))},300)}get center(){return this._center}set center(t){this._center===this.from&&t<this.from||this._center===this.to&&t>this.to||(t<this.from?this._center=this.from:t>this.to?this._center=this.to:this._center=t,this.centerChangeDone())}set dimensions(t){const e=getComputedStyle(t);this.viewportHeight=parseInt(e.getPropertyValue("height"),10),this.viewportOffset=t.getBoundingClientRect().top,this.viewportWidth=parseInt(e.getPropertyValue("width"),10)}init(t){null==t.rootElement&&console.error("[init] No rootElement found"),this.rootElement=t.rootElement,this.dimensions=this.rootElement;const[e,i]=t.bands.reduce((t,e)=>{if(e instanceof n.default)return t;const i=null==e.config.orderedEvents?e.config.events:e.config.orderedEvents.events;return t[0].push(i[0].date_min||i[0].date),t[1].push(i.reduce((t,e)=>Math.max(t,e.end_date||-1/0,e.end_date_max||-1/0),-1/0)),t},[[],[]]);this.from=Math.min(...e),this.to=Math.max(...i),this.time=this.to-this.from,this.center=null!=t.center?t.center:this.from+this.defaultCenterRatio*this.time,this.bands=t.bands,this.eventsBands=this.bands.filter(a),this.minimapBands=this.bands.filter(l),this.controlBand=null!=t.controlBand?t.controlBand:this.eventsBands[0];for(const t of this.bands)t.init()}resize(){this.dimensions=this.rootElement}}e.Props=h,e.default=new h},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EVENT_HEIGHT=14,e.EVENT_ROW_HEIGHT=16,e.DATE_BAR_HEIGHT=e.EVENT_ROW_HEIGHT,e.RULER_LABELS_HEIGHT=60,e.CENTER_CHANGE_DONE="CENTER_CHANGE_DONE",e.ZOOM_DONE="ZOOM_DONE",e.SCROLL_DONE="SCROLL_DONE",e.PIXELS_PER_LETTER=8;e.RawSegment=class{},e.colors=["rgba(211,84,0","rgba(219,10,91","rgba(31,58,147","rgba(0,128,0"].map(t=>(e=1)=>`${t},${e})`)},function(t,e,i){"use strict";function s(t){return Math.pow(2,-1*t)}function n(t){if(null==t)return null;const e=new Date(t);return`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`}Object.defineProperty(e,"__esModule",{value:!0}),e.debounce=((t,e)=>{let i;return()=>{clearTimeout(i),i=setTimeout(t,e)}}),e.visibleRatio=s,e.createRange=function(t){return Array.apply(null,{length:t}).map(Number.call,Number)},e.selectRandom=function(t,e){const i=[];for(;i.length<e;){const s=t[Math.floor(Math.random()*t.length)];(-1===i.indexOf(s)||t.length<e)&&i.push(s)}return i},e.calcPixelsPerMillisecond=function(t,e,i){return t/s(e)/i},e.logEvent=function(t,...e){console.log(t.label,t,t.left,n(t.from),n(t.to),e)}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(0),n=i(1);var o;!function(t){t[t.Backward=-1]="Backward",t[t.Stop=0]="Stop",t[t.Forward=1]="Forward"}(o||(o={}));class r{constructor(){this.elapsedTimeThreshold=2e3,this.goToDuration=300,this.zoomToDuration=300,this.multipliers=[.25,.5,1,2,4,8,16],this.multiplier=1,this.direction=o.Stop,this.elapsedTimeTotal=0,this.models=[],this.views=[],this.animate=(t=>{const e=null==this.prevTimestamp?0:t-this.prevTimestamp;if(e>0||null==this.prevTimestamp){if(null==this.centerMarker&&null==this.zoomMarker)s.default.center+=s.default.controlBand.time/480*this.multiplier*this.direction;else if(null!=this.centerMarker){const t=this.goToDuration-this.elapsedTimeTotal,i=Math.abs(this.centerMarker-s.default.center)/(t/e);t<e?(s.default.center=this.centerMarker,this.stop()):s.default.center=s.default.center+i*this.direction}else if(null!=this.zoomMarker){const t=this.zoomToDuration-this.elapsedTimeTotal,i=(this.zoomMarker-this.activeBand.zoomLevel)/(t/e);if(t<e)this.activeBand.zoomLevel=this.zoomMarker,s.default.eventsBands.forEach(t=>{t===this.activeBand?this.activeBand.zoomLevel=this.zoomMarker:t.zoomLevel=this.zoomMarker+(t.config.zoomLevel-this.activeBand.config.zoomLevel)}),this.adjustMinimapBands(),document.dispatchEvent(new CustomEvent(n.ZOOM_DONE)),this.stop();else{for(const t of s.default.eventsBands)t.zoomLevel=t.zoomLevel+i;this.adjustMinimapBands()}}this.models.forEach(t=>t.update()),this.views.forEach(t=>t.update())}this.elapsedTimeTotal+=e,this.elapsedTimeTotal>this.elapsedTimeThreshold&&this.resetElapsedTimeTotal(),(this.isPlaying()||null!=this.zoomMarker)&&(s.default.center>=s.default.from&&s.default.center<=s.default.to||null!=this.centerMarker||null!=this.zoomMarker?(this.prevTimestamp=t,requestAnimationFrame(this.animate)):this.stop())})}registerModel(t){this.models.push(t)}registerView(t){this.views.push(t)}adjustMinimapBands(){s.default.minimapBands.forEach(t=>{this.activeBand.zoomLevel<t.config.zoomLevel&&(t.zoomLevel=this.activeBand.zoomLevel)})}resetElapsedTimeTotal(){this.elapsedTimeTotal=0,document.dispatchEvent(new CustomEvent(n.CENTER_CHANGE_DONE))}accelerate(){const t=this.multipliers.indexOf(this.multiplier);return t===this.multipliers.length-1?this.multipliers[this.multipliers.length-1]:(this.multiplier=this.multipliers[t+1],this.multiplier)}decelerate(){const t=this.multipliers.indexOf(this.multiplier);return 0===t?this.multipliers[0]:(this.multiplier=this.multipliers[t-1],this.multiplier)}goTo(t){this.centerMarker=t,t>s.default.center?this.playForward():this.playBackward()}zoomTo(t,e){null==this.zoomMarker&&(e<0&&(e=0),t!==this.activeBand&&(this.stop(),this.activeBand=t),this.activeBand.zoomLevel!==e&&(this.zoomMarker=e,this.nextFrame()))}speed(t){const e=parseFloat(t);-1!==this.multipliers.indexOf(e)&&(this.multiplier=e)}isPlaying(){return this.direction!==o.Stop}isPlayingForward(){return this.direction===o.Forward}isPlayingBackward(){return this.direction===o.Backward}nextFrame(){requestAnimationFrame(this.animate)}playForward(){this.direction=o.Forward,this.nextFrame()}playBackward(){this.direction=o.Backward,this.nextFrame()}stop(){this.direction=o.Stop,this.activeBand=null,this.centerMarker=null,this.zoomMarker=null,this.prevTimestamp=null,this.elapsedTimeTotal=0}toggle(){this.isPlaying()?this.stop():this.nextFrame()}}e.Animator=r,e.default=new r},function(t,e,i){"use strict";let s;if(Object.defineProperty(e,"__esModule",{value:!0}),e.createSvg=((t,e,i={})=>{const s=document.createElementNS("http://www.w3.org/2000/svg",t);return null!=e&&s.setAttribute("style",e.join(";").concat(";")),Object.keys(i).forEach(t=>s.setAttribute(t,i[t])),s}),"undefined"!=typeof window){const t=document.createElement("style");document.head.appendChild(t),s=t.sheet}const n={};e.default=function(t,e,i,o){if(!e)return document.createElement(t);let r;return n.hasOwnProperty(e)?r=n[e].cloneNode(!1):((r=document.createElement(t)).classList.add(e),i&&s.insertRule(`.${e} { ${i.join(";").concat(";")} }`),n[e]=r.cloneNode(!1)),o&&r.setAttribute("style",o.join(";").concat(";")),r}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function o(t){return n[t.getUTCMonth()]}function r(t){const e=t.getUTCDate();return`${s[t.getUTCDay()]}, ${e}${function(t){return["st","nd","rd"][((t+90)%100-10)%10-1]||"th"}(e)}`}function a(t){return t.getUTCHours().toString().padStart(2,"0")}function l(t){return t.getUTCMinutes().toString().padStart(2,"0")}function h(t){return t.getUTCSeconds().toString().padStart(2,"0")}function d(t){return t.getUTCMilliseconds().toString().padStart(3,"0")}function u(t){return"YEAR"===t||"YEAR_5"===t||"DECADE"===t||"DECADE_5"===t||"CENTURY"===t||"CENTURY_5"===t||"MILLENIUM"===t}e.formatDate=((t,e)=>{if(null==t)return"∞";const i=new Date(t);let s=i.getUTCFullYear().toString();return u(e)?s:(s=`${o(i)} ${s}`,"MONHT"===e?s:(s=`${r(i)} ${s}`,"DAY"===e?s:(s=`${s} at ${a(i)}:`,"HOUR"===e?`${s}00`:(s=`${s}${l(i)}`,"MINUTE"===e?s:(s=`${s}:${h(i)}`,"SECOND"===e?s:`${s}.${d(i)}`)))))}),e.getGranularity=(t=>t>58?"MILLISECOND":t>12?"MILLISECOND_10":t>2.3?"MILLISECOND_50":t>1.5?"MILLISECOND_100":t>.4?"MILLISECOND_500":t>.00112?"SECOND":t>112e-6?"MINUTE":t>112e-7?"HOUR":t>8e-7?"DAY":t>2.6e-7?"WEEK":t>2.2e-8?"MONHT":t>2.2e-9?"YEAR":t>3.3e-10?"YEAR_5":t>1.6e-10?"DECADE":t>8e-11?"DECADE_5":t>1e-11?"CENTURY":t>5e-12?"CENTURY_5":"MILLENIUM"),e.getStep=(t=>{if("YEAR"===t)return 1;if("YEAR_5"===t)return 5;if("DECADE"===t)return 10;if("DECADE_5"===t)return 50;if("CENTURY"===t)return 100;if("CENTURY_5"===t)return 500;if("MILLENIUM"===t)return 1e3;if("MILLISECOND"===t)return 1;if("MILLISECOND_10"===t)return 10;if("MILLISECOND_50"===t)return 50;if("MILLISECOND_100"===t)return 100;if("MILLISECOND_500"===t)return 500;throw new RangeError("[getStep] Only steps with a granularity greater than 'year' calculated")}),e.subsequentDate=function(t){return u(t)?i=>{let s=new Date(i),n=s.getUTCFullYear()+1;if("YEAR"!==t){const i=e.getStep(t);for(;n%i!=0;)n+=1}return n>-1&&n<100?(s.setUTCFullYear(n),s.getTime()):Date.UTC(n,0,1)}:"MONHT"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+1,1)}:"WEEK"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+7)}:"DAY"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+1)}:"HOUR"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours()+1)}:"MINUTE"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes()+1)}:"SECOND"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()+1)}:"MILLISECOND"===t.slice(0,"MILLISECOND".length)?i=>{const s=e.getStep(t),n=new Date(i);let o=n.getUTCMilliseconds()+1;return s>1&&(o=o+s-o%s),Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),o)}:void 0},e.byDate=function(t,e){const i=null!=t.date_min?t.date_min:t.date,s=null!=e.date_min?e.date_min:e.date;if(i<s)return-1;if(i>s)return 1;const n=null!=t.end_date_max?t.end_date_max:t.end_date,o=null!=e.end_date_max?e.end_date_max:e.end_date;return n<o?-1:n>o?1:0};e.labelBody=((t,e)=>{const i=new Date(t);return u(e)?i.getUTCFullYear().toString():"MONHT"===e?o(i):"WEEK"===e?`${o(i)}, week ${(t=>{const e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())),i=e.getUTCDay()||7;e.setUTCDate(e.getUTCDate()+4-i);const s=new Date(Date.UTC(e.getUTCFullYear(),0,1));return Math.ceil(((e.getTime()-s.getTime())/864e5+1)/7)})(i)}`:"DAY"===e?`${r(i)} ${o(i)}`:"HOUR"===e?`${a(i)}:00`:"MINUTE"===e?`${a(i)}:${l(i)}`:"SECOND"===e?`${a(i)}:${l(i)}:${h(i)}`:"MILLISECOND"===e.slice(0,"MILLISECOND".length)?`${a(i)}:${l(i)}:${h(i)}.${d(i)}`:void 0})},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(9),n=i(7),o=i(3),r=i(1),a=i(0),l=i(10),h=i(5),d=i(2);e.default=class extends s.default{constructor(t){super(Object.assign({},new n.EventsBandConfig,t)),this.events=[],this.rowCount=0,this.visibleEvents=[],this._offsetY=0,null!=this.config.events&&this.config.events.sort(h.byDate)}get offsetY(){return this._offsetY}set offsetY(t){this._offsetY+=t,this._offsetY<0&&(this._offsetY=0);const e=this.height>this.availableHeight?this.height-this.availableHeight+r.EVENT_ROW_HEIGHT:0;this._offsetY>e&&(this._offsetY=e);const i=this._offsetY/r.EVENT_ROW_HEIGHT;this.lowestVisibleRow=Math.ceil(i),this.highestVisibleRow=this.lowestVisibleRow+this.visibleRowsCount}init(){super.init();const t=d.calcPixelsPerMillisecond(a.default.viewportWidth,this.config.zoomLevel||0,a.default.time),e=null==this.config.orderedEvents?l.orderEvents(this.config.events,t):this.config.orderedEvents;this.events=e.events,this.rowCount=e.row_count,this.height=r.EVENT_ROW_HEIGHT*this.rowCount,this.offsetY=0,this.updateEvents()}getColor(t,e){const i=[49,220,215];let s;if(a.default.center>e)s=a.default.center-e;else{if(!(a.default.center<t))return`rgb(${i.join(", ")})`;s=t-a.default.center}const n=s/(this.time/2),o=a.default.center>e?[253,231,37]:[204,104,232];return`rgb(${i.map((t,e)=>t+(o[e]-t)*n).join(", ")})`}updateEvents(){this.visibleEvents=this.events.filter(t=>!(t.from>this.to||t.to<this.from)&&t.row>=this.lowestVisibleRow&&t.row<=this.highestVisibleRow).map(t=>(t.left=this.positionAtTimestamp(t.from),t.width=Math.round(t.time*this.pixelsPerMillisecond),t.time&&t.width<1&&(t.width=1),t.padding=Math.round(t.space*this.pixelsPerMillisecond),t.top=this.top+this.availableHeight-(t.row+1)*r.EVENT_ROW_HEIGHT+this.offsetY,t.color=this.getColor(t.from,t.to),t))}update(){super.update(),this.updateEvents()}getEventByCoordinates(t,e){const i=this.timestampAtPosition(t),s=a.default.viewportOffset+this.top+this.availableHeight+this.offsetY,n=Math.floor((s-e)/r.EVENT_ROW_HEIGHT);return this.events.find(t=>!(!(t.from<i&&t.from+t.time+t.space>i)||t.row<this.lowestVisibleRow||t.row>this.highestVisibleRow)&&t.row===n)}zoomIn(){o.default.zoomTo(this,this.zoomLevel+1)}zoomOut(){o.default.zoomTo(this,this.zoomLevel-1)}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.DomainConfig=class{};class s{constructor(){this.heightRatio=1,this.rulers=!0,this.rulerLabels=!0,this.topOffsetRatio=0,this.zoomLevel=0}}e.BandConfig=s;e.MinimapBandConfig=class extends s{constructor(){super(...arguments),this.indicatorFor=0,this.targets=[]}};e.EventsBandConfig=class extends s{};e.default=class{}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(9),n=i(7),o=i(0),r=i(4);e.default=class extends s.default{constructor(t){super(function(t){const e=Object.assign({},new n.MinimapBandConfig,t);return e.targets.length||e.targets.push(0),e}(t)),this.canvas=r.default("canvas"),this.ctx=this.canvas.getContext("2d"),this.nextCanvas=r.default("canvas"),this.nextCtx=this.nextCanvas.getContext("2d"),this.isDrawn=!1}init(){super.init(),this.maxRowCount=this.config.targets.reduce((t,e)=>{const{rowCount:i}=o.default.eventsBands[e];return Math.max(t,i)},0);const t=this.availableHeight/this.maxRowCount;this.eventHeight=t<1?1:Math.floor(t),this.canvas.width=o.default.viewportWidth,this.canvas.height=this.maxRowCount*this.eventHeight,this.nextCanvas.width=this.canvas.width,this.nextCanvas.height=this.canvas.height}resize(){super.resize(),this.isDrawn=!1}draw(){return this.isDrawn?this.updateNextCanvas():this.drawEvents(),this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.ctx.drawImage(this.nextCanvas,0,0),this.canvas}drawEvents(t=this.from,e=this.to){this.nextCtx.beginPath(),this.config.targets.forEach(i=>{const s=o.default.eventsBands[i];for(const i of s.events){if(i.from>e||i.to<t)continue;const s=Math.round(i.time*this.pixelsPerMillisecond),n=this.positionAtTimestamp(null!=i.date_min?i.date_min:i.date),o=this.maxRowCount-(i.row+1)*this.eventHeight,r=s<1?1:s;this.nextCtx.rect(n,o,r,this.eventHeight)}}),this.nextCtx.fillStyle="rgb(190, 190, 190)",this.nextCtx.fill()}updateNextCanvas(){const t=Math.round(this.offsetX-this.prevOffsetX);if(0===t)return this.canvas;let e,i;this.nextCtx.clearRect(0,0,this.nextCanvas.width,this.nextCanvas.height),this.nextCtx.drawImage(this.canvas,t,0),t<0?(e=this.timestampAtPosition(o.default.viewportWidth+t),i=this.to):(e=this.from,i=this.timestampAtPosition(t)),this.drawEvents(e,i)}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(5),n=i(0),o=i(1),r=i(2),a=i(3);e.default=class{constructor(t){this.config=t,this.defaultZoomLevel=0}get offsetX(){return this._offsetX}set offsetX(t){this.prevOffsetX=this.offsetX||t,this._offsetX=t}get zoomLevel(){return this._zoomLevel}set zoomLevel(t){t<0&&(t=0),this.visibleRatio=r.visibleRatio(t),this.width=Math.round(n.default.viewportWidth/this.visibleRatio),this.pixelsPerMillisecond=this.width/n.default.time,this.time=this.visibleRatio*n.default.time,this.granularity=s.getGranularity(this.pixelsPerMillisecond),this.nextDate=s.subsequentDate(this.granularity),this.prevZoomLevel=this.zoomLevel||t,this._zoomLevel=t,this.setHorizontalProps()}setVerticalProps(){this.visibleHeight=Math.round(this.config.heightRatio*n.default.viewportHeight),this.availableHeight=this.visibleHeight-o.DATE_BAR_HEIGHT,this.visibleRowsCount=Math.floor(this.availableHeight/o.EVENT_ROW_HEIGHT)-1,this.top=Math.round(this.config.topOffsetRatio*n.default.viewportHeight)}setHorizontalProps(){this.from=n.default.center-this.time/2,this.to=n.default.center+this.time/2,this.offsetX=(n.default.from-this.from)*this.pixelsPerMillisecond}init(){this.zoomLevel=this.config.zoomLevel,this.setVerticalProps(),a.default.registerModel(this)}resize(){this.zoomLevel=this.zoomLevel,this.setVerticalProps()}update(){this.setHorizontalProps()}updateConfig(t){Object.keys(t).forEach(e=>{this.config.hasOwnProperty(e)&&(this.config[e]=t[e])})}positionAtTimestamp(t){return Math.round((t-this.from)*this.pixelsPerMillisecond)}timestampAtProportion(t){return n.default.from+n.default.time*t}timestampAtPosition(t){return this.from+t/this.pixelsPerMillisecond}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(1);class n{constructor(){this.events=[],this.row_count=0}}e.OrderedEvents=n;const o=8;e.orderEvents=function(t,e){if(!t.length)return new n;let i=0;const r=[],a=2*s.EVENT_HEIGHT/e;return{events:t=t.map(t=>{let s;null==t.label&&(t.label="NO LABEL"),t.from=t.date_min||t.date,t.to=t.end_date_max||t.end_date,null==t.to&&(t.to=t.from),t.time=null==t.to?0:t.to-t.from,t.space=0,t.time||(null==t.label&&(t.label="NO LABEL"),t.space=t.label.length*o/e+a);let n=0;for(;null==s&&n<r.length;){let e=0,i=!0;for(;i&&e<r[n].length&&!(t.to<r[n][e][0]);)i=t.from>r[n][e][1],e++;i&&(r[n].push([t.from,t.from+t.time+t.space]),s=n),n++}return null==s&&(s=r.push([[t.from,t.from+t.time+t.space]])-1),s>i&&(i=s),t.row=s,t}),row_count:r.length}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(0),n=i(4),o=i(12),r=i(3),a=i(1),l=i(6);e.default=class{constructor(t){this.band=t,this.onMouseDown=(t=>{document.addEventListener("mouseup",this.onMouseUp),this.dragStartTime=Date.now(),this.dragStartPosition=[t.clientX,t.clientY],this.dragOffsetX=t.clientX,this.dragOffsetY=t.clientY}),this.onMouseMove=(t=>{if(null==this.dragOffsetX)return;const e=t.clientY-this.dragOffsetY,i=t.clientX-this.dragOffsetX;this.band instanceof l.default&&(0!==this.band.offsetY||Math.abs(e)>Math.abs(i)&&Math.abs(e)>5)&&(this.band.offsetY=e);const n=i/this.band.pixelsPerMillisecond;s.default.center-=n,r.default.nextFrame(),this.dragOffsetX=t.clientX,this.dragOffsetY=t.clientY}),this.onMouseUp=(t=>{this.lastDragInterval=Date.now()-this.dragStartTime,this.dispatchScrollDoneEvent(t),this.dragOffsetX=null,this.dragOffsetY=null,document.removeEventListener("mouseup",this.onMouseUp)}),this.onDblClick=(t=>{const e=this.band.timestampAtPosition(t.clientX);r.default.goTo(e)})}render(){return this.rootElement=n.default("div","band-wrap",["position: absolute","z-index: 2"],[`height: ${this.band.visibleHeight}px`,`top: ${this.band.top}px`,`width: ${s.default.viewportWidth}px`]),o.default.register("mousedown",this.onMouseDown,this.rootElement),o.default.register("mousemove",this.onMouseMove,this.rootElement),o.default.register("dblclick",this.onDblClick,this.rootElement),this.rootElement}dispatchScrollDoneEvent(t){const e=[this.dragStartPosition[0]-t.clientX,this.dragStartPosition[1]-t.clientY].map(Math.abs).some(t=>t>5);(this.lastDragInterval>200||e)&&document.dispatchEvent(new CustomEvent(a.SCROLL_DONE))}resize(){this.rootElement.style.cssText=`height: ${this.band.visibleHeight}px; top: ${this.band.top}px; width: ${s.default.viewportWidth}px;`}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class s{constructor(){this.eventsListeners=[]}register(t,e,i=document){i.addEventListener(t,e),this.eventsListeners.push([t,e,i])}flush(){this.eventsListeners.forEach(t=>{const[e,i,s]=t;s.removeEventListener(e,i)}),this.eventsListeners=[]}}e.EventBus=s,e.default=new s},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(0);e.TimelineProps=s.Props;const n=i(7);e.TimelineConfig=n.default;const o=i(11),r=i(4),a=i(2);e.calcPixelsPerMillisecond=a.calcPixelsPerMillisecond;const l=i(10);e.OrderedEvents=l.OrderedEvents,e.orderEvents=l.orderEvents;const h=i(14),d=i(15),u=i(16),c=i(18),f=i(8);e.MinimapBand=f.default;const p=i(6);e.EventsBand=p.default;const m=i(5);e.formatDate=m.formatDate;const g=i(19);e.RawEv3nt=g.RawEv3nt;e.default=class extends h.default{constructor(t,e,i){super(e),this.config=t,this.onSelect=i,this.appendToWrapper=(t=>{let e=t.render();Array.isArray(e)||(e=[e]),e.forEach(t=>this.wrapper.appendChild(t))}),s.default.init(t),t.rootElement.appendChild(this.render());const n=a.debounce(this.resize,600);window.addEventListener("resize",n)}render(){this.wrapper=r.default("div","wrapper",["box-sizing: border-box","height: 100%","overflow: hidden","position: relative","user-select: none","width: 100%"]),this.views=s.default.bands.map(t=>t instanceof p.default?new d.default(t,this.onSelect):new o.default(t)),this.views.push(new u.default),this.views.forEach(this.appendToWrapper),this.renderLabels();const t=r.default("div","red-line",["background-color: rgb(126, 0, 0)","bottom: 0","left: calc(50% - 1px)","position: absolute","top: 0","width: 2px","z-index: 4"]);return this.wrapper.appendChild(t),this.wrapper}renderLabels(){s.default.bands.filter(t=>t instanceof p.default&&null!=t.config.label).map(t=>new c.default(t)).forEach(this.appendToWrapper)}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(3),n=i(1),o=i(0);e.default=class{constructor(t){this.onChange=t,this.animator=s.default,this.handleChange=(()=>{this.onChange(o.default)}),this.resize=(()=>{o.default.resize();for(const t of o.default.bands)t.resize();for(const t of this.views)t.resize();this.animator.nextFrame()}),document.addEventListener("keydown",t=>{189===t.keyCode&&o.default.controlBand.zoomOut(),187===t.keyCode&&o.default.controlBand.zoomIn()}),null!=this.onChange&&"function"==typeof this.onChange&&(document.addEventListener(n.CENTER_CHANGE_DONE,this.handleChange),document.addEventListener(n.ZOOM_DONE,this.handleChange))}reload(){this.resize()}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(11),n=i(12),o=i(2);e.default=class extends s.default{constructor(t,e){super(t),this.band=t,this.select=e,this.onWheel=(t=>{0===Math.abs(t.deltaX)&&0!==t.deltaY&&(t.deltaY<0&&this.zoomOut(),t.deltaY>0&&this.zoomIn())}),this.onClick=(t=>{if(this.lastDragInterval>175)return;const e=this.band.getEventByCoordinates(t.clientX,t.clientY);e&&this.select&&(this.select(e),o.logEvent(e))})}render(){const t=super.render();return n.default.register("click",this.onClick,this.rootElement),n.default.register("wheel",this.onWheel,this.rootElement),t}zoomIn(){this.band.zoomIn()}zoomOut(){this.band.zoomOut()}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(4),n=i(0),o=i(1),r=i(3),a=i(6),l=i(17);e.default=class{constructor(){this.indicatorsDrawn=!1,this.update=(()=>{n.default.bands.forEach(t=>{t instanceof a.default?this.drawEventsBand(t):this.drawMinimapBand(t)}),this.drawIndicators()}),r.default.registerView(this)}render(){return this.canvas=s.default("canvas","main",["position: absolute"]),this.canvas.width=n.default.viewportWidth,this.canvas.height=n.default.viewportHeight,this.ctx=this.canvas.getContext("2d"),this.indicatorsCanvas=s.default("canvas","indicators",["position: absolute"],["z-index: 1"]),this.indicatorsCanvas.width=n.default.viewportWidth,this.indicatorsCanvas.height=n.default.viewportHeight,this.indicatorsCtx=this.indicatorsCanvas.getContext("2d"),this.update(),[this.canvas,this.indicatorsCanvas]}resize(){this.indicatorsCanvas.width=n.default.viewportWidth,this.indicatorsCanvas.height=n.default.viewportHeight,this.canvas.width=n.default.viewportWidth,this.canvas.height=n.default.viewportHeight,this.indicatorsDrawn=!1}clear(t){this.ctx.clearRect(0,t.top,this.canvas.width,t.visibleHeight)}drawEventsBand(t){this.clear(t),l.default(this.ctx,t);for(const e of t.visibleEvents)e.time?(this.ctx.fillStyle=e.color,this.ctx.fillRect(e.left,e.top,e.width,o.EVENT_HEIGHT)):(this.ctx.moveTo(e.left,e.top+o.EVENT_HEIGHT/2),this.ctx.beginPath(),this.ctx.arc(e.left,e.top+o.EVENT_HEIGHT/2,o.EVENT_HEIGHT/3,0,2*Math.PI),this.ctx.fillStyle=e.color,this.ctx.fill());this.drawEventsText(t)}drawEventsText(t){this.ctx.font="11px sans-serif",this.ctx.fillStyle="rgb(40, 40, 40)";for(const e of t.visibleEvents){let t=0===e.time?e.padding:e.width,i=e.left;if(e.left<0&&0!==e.time&&(t=e.width+e.left,i=0),e.label.length*o.PIXELS_PER_LETTER<=t){const t=e.time?3:8;this.ctx.fillText(e.label,i+t,e.top+o.EVENT_HEIGHT-3)}}}drawMinimapBand(t){if(t.isDrawn&&t.prevOffsetX===t.offsetX&&t.prevZoomLevel===t.zoomLevel)return;this.clear(t),l.default(this.ctx,t);const e=t.draw();this.ctx.drawImage(e,0,t.top,n.default.viewportWidth,t.availableHeight),t.isDrawn=!0}drawIndicators(){if(!this.indicatorsDrawn||!n.default.eventsBands.every(t=>t.prevZoomLevel===t.zoomLevel)){this.indicatorsCtx.clearRect(0,0,n.default.viewportWidth,n.default.viewportHeight),this.indicatorsCtx.beginPath();for(const t of n.default.minimapBands){const e=n.default.eventsBands[t.config.indicatorFor],i=Math.round(t.config.topOffsetRatio*n.default.viewportHeight),s=t.positionAtTimestamp(e.from);this.indicatorsCtx.rect(0,i,s,t.visibleHeight);const r=t.positionAtTimestamp(e.to);this.indicatorsCtx.rect(r,i,n.default.viewportWidth,t.visibleHeight),this.indicatorsCtx.rect(s,i+t.visibleHeight-o.DATE_BAR_HEIGHT,r-s,o.DATE_BAR_HEIGHT)}this.indicatorsCtx.fillStyle="rgba(0, 0, 0, .04)",this.indicatorsCtx.fill(),this.indicatorsCtx.closePath(),this.indicatorsDrawn=!0}}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(0),n=i(5),o="11px sans-serif",r="13px sans-serif";function a(t,e){return"CENTURY"===e.granularity&&new Date(t).getUTCFullYear()%1e3==0||("YEAR_5"===e.granularity&&new Date(t).getUTCFullYear()%50==0||"YEAR"===e.granularity&&new Date(t).getUTCFullYear()%5==0)}function l(t,e,i,s,o){const r=e.positionAtTimestamp(i);t.moveTo(r,s),t.lineTo(r,o),e.config.rulerLabels&&t.fillText(n.labelBody(i,e.granularity),r+3,o-3)}e.default=function(t,e){if(!e.config.rulers)return;let i=e.nextDate(e.from);const n=e.config.topOffsetRatio*s.default.viewportHeight,h=e.config.heightRatio*s.default.viewportHeight,d=[],u=[];for(;i<e.to;)a(i,e)?u.push(i):d.push(i),i=e.nextDate(i);t.beginPath(),t.font=o,t.fillStyle="rgb(205, 205, 205)";for(const i of d)l(t,e,i,n,n+h);t.strokeStyle="rgb(235, 235, 235)",t.stroke(),t.beginPath(),t.font=r,t.fillStyle="rgb(120, 120, 120)";for(const i of u)l(t,e,i,n,n+h);t.strokeStyle="rgb(150, 150, 150)",t.stroke()}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(4);e.default=class{constructor(t){this.band=t}render(){const t=s.default("div","events-label-wrapper",["border-top: 1px solid #CCC","pointer-events: none","position: absolute","width: 100%","z-index: 3"],[`top: ${100*this.band.config.topOffsetRatio}%`]),e=s.default("div","events-label",["background: white","border-bottom-right-radius: 4px","box-shadow: 1px 2px 4px #AAA","color: #444","display: inline-block","font-family: sans-serif","font-size: .8em","padding: 4px 8px"]);return e.innerText=this.band.config.label,t.appendChild(e),t}resize(){}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.RawEv3nt=class{constructor(){this.date_granularity="DAY"}}}])});
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Timeline=e():t.Timeline=e()}(this,function(){return function(t){var e={};function i(s){if(e[s])return e[s].exports;var n=e[s]={i:s,l:!1,exports:{}};return t[s].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.d=function(t,e,s){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:s})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var s=Object.create(null);if(i.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(s,n,function(e){return t[e]}.bind(null,n));return s},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="/dist/",i(i.s=11)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(1),n=i(3),o=i(2);function r(t){return t.type===o.BandType.EventsBand}function a(t){return t.type===o.BandType.MinimapBand}class l{constructor(){this.defaultCenterRatio=.5,this.centerChangeDone=n.debounce(()=>{document.dispatchEvent(new CustomEvent(s.CENTER_CHANGE_DONE))},300)}get center(){return this._center}set center(t){this._center===this.from&&t<this.from||this._center===this.to&&t>this.to||(t<this.from?this._center=this.from:t>this.to?this._center=this.to:this._center=t,this.centerChangeDone())}set dimensions(t){const e=getComputedStyle(t);this.viewportHeight=parseInt(e.getPropertyValue("height"),10),this.viewportOffset=t.getBoundingClientRect().top,this.viewportWidth=parseInt(e.getPropertyValue("width"),10)}init(t){null==t.rootElement&&console.error("[init] No rootElement found"),this.rootElement=t.rootElement,this.dimensions=this.rootElement;const[e,i]=t.bands.reduce((t,e)=>{if(e.type===o.BandType.MinimapBand)return t;const i=e,s=null==i.config.orderedEvents?i.config.events:i.config.orderedEvents.events;return t[0].push(s[0].date_min||s[0].date),t[1].push(s.reduce((t,e)=>Math.max(t,e.end_date||-1/0,e.end_date_max||-1/0),-1/0)),t},[[],[]]);this.from=Math.min(...e),this.to=Math.max(...i),this.time=this.to-this.from,this.center=null!=t.center?t.center:this.from+this.defaultCenterRatio*this.time,this.bands=t.bands,this.eventsBands=this.bands.filter(r),this.minimapBands=this.bands.filter(a),this.controlBand=null!=t.controlBand?t.controlBand:this.eventsBands[0];for(const t of this.bands)t.init()}resize(){this.dimensions=this.rootElement}}e.Props=l,e.default=new l},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.EVENT_HEIGHT=14,e.EVENT_ROW_HEIGHT=16,e.DATE_BAR_HEIGHT=e.EVENT_ROW_HEIGHT,e.RULER_LABELS_HEIGHT=60,e.CENTER_CHANGE_DONE="CENTER_CHANGE_DONE",e.ZOOM_DONE="ZOOM_DONE",e.SCROLL_DONE="SCROLL_DONE",e.PIXELS_PER_LETTER=8;e.RawSegment=class{},e.colors=["rgba(211,84,0","rgba(219,10,91","rgba(31,58,147","rgba(0,128,0"].map(t=>(e=1)=>`${t},${e})`)},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(6),n=i(0),o=i(1),r=i(3),a=i(4);!function(t){t[t.EventsBand=0]="EventsBand",t[t.MinimapBand=1]="MinimapBand"}(e.BandType||(e.BandType={}));e.default=class{constructor(t){this.config=t,this.defaultZoomLevel=0}get offsetX(){return this._offsetX}set offsetX(t){this.prevOffsetX=this.offsetX||t,this._offsetX=t}get zoomLevel(){return this._zoomLevel}set zoomLevel(t){t<0&&(t=0),this.visibleRatio=r.visibleRatio(t),this.width=Math.round(n.default.viewportWidth/this.visibleRatio),this.pixelsPerMillisecond=this.width/n.default.time,this.time=this.visibleRatio*n.default.time,this.granularity=s.getGranularity(this.pixelsPerMillisecond),this.nextDate=s.subsequentDate(this.granularity),this.prevZoomLevel=this.zoomLevel||t,this._zoomLevel=t,this.setHorizontalProps()}setVerticalProps(){this.visibleHeight=Math.round(this.config.heightRatio*n.default.viewportHeight),this.availableHeight=this.visibleHeight-o.DATE_BAR_HEIGHT,this.visibleRowsCount=Math.floor(this.availableHeight/o.EVENT_ROW_HEIGHT)-1,this.top=Math.round(this.config.topOffsetRatio*n.default.viewportHeight)}setHorizontalProps(){this.from=n.default.center-this.time/2,this.to=n.default.center+this.time/2,this.offsetX=(n.default.from-this.from)*this.pixelsPerMillisecond}init(){this.zoomLevel=this.config.zoomLevel,this.setVerticalProps(),a.default.registerModel(this)}resize(){this.zoomLevel=this.zoomLevel,this.setVerticalProps()}update(){this.setHorizontalProps()}updateConfig(t){Object.keys(t).forEach(e=>{this.config.hasOwnProperty(e)&&(this.config[e]=t[e])})}positionAtTimestamp(t){return Math.round((t-this.from)*this.pixelsPerMillisecond)}timestampAtProportion(t){return n.default.from+n.default.time*t}timestampAtPosition(t){return this.from+t/this.pixelsPerMillisecond}}},function(t,e,i){"use strict";function s(t){return Math.pow(2,-1*t)}function n(t){if(null==t)return null;const e=new Date(t);return`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`}Object.defineProperty(e,"__esModule",{value:!0}),e.debounce=((t,e)=>{let i;return()=>{clearTimeout(i),i=setTimeout(t,e)}}),e.visibleRatio=s,e.createRange=function(t){return Array.apply(null,{length:t}).map(Number.call,Number)},e.selectRandom=function(t,e){const i=[];for(;i.length<e;){const s=t[Math.floor(Math.random()*t.length)];(-1===i.indexOf(s)||t.length<e)&&i.push(s)}return i},e.calcPixelsPerMillisecond=function(t,e,i){return t/s(e)/i},e.logEvent=function(t,...e){console.log(t.label,t,t.left,n(t.from),n(t.to),e)}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(0),n=i(1);var o;!function(t){t[t.Backward=-1]="Backward",t[t.Stop=0]="Stop",t[t.Forward=1]="Forward"}(o||(o={}));class r{constructor(){this.elapsedTimeThreshold=2e3,this.goToDuration=300,this.zoomToDuration=300,this.multipliers=[.25,.5,1,2,4,8,16],this.multiplier=1,this.direction=o.Stop,this.elapsedTimeTotal=0,this.models=[],this.views=[],this.animate=(t=>{const e=null==this.prevTimestamp?0:t-this.prevTimestamp;if(e>0||null==this.prevTimestamp){if(null==this.centerMarker&&null==this.zoomMarker)s.default.center+=s.default.controlBand.time/480*this.multiplier*this.direction;else if(null!=this.centerMarker){const t=this.goToDuration-this.elapsedTimeTotal,i=Math.abs(this.centerMarker-s.default.center)/(t/e);t<e?(s.default.center=this.centerMarker,this.stop()):s.default.center=s.default.center+i*this.direction}else if(null!=this.zoomMarker){const t=this.zoomToDuration-this.elapsedTimeTotal,i=(this.zoomMarker-this.activeBand.zoomLevel)/(t/e);if(t<e)this.activeBand.zoomLevel=this.zoomMarker,s.default.eventsBands.forEach(t=>{t===this.activeBand?this.activeBand.zoomLevel=this.zoomMarker:t.zoomLevel=this.zoomMarker+(t.config.zoomLevel-this.activeBand.config.zoomLevel)}),this.adjustMinimapBands(),document.dispatchEvent(new CustomEvent(n.ZOOM_DONE)),this.stop();else{for(const t of s.default.eventsBands)t.zoomLevel=t.zoomLevel+i;this.adjustMinimapBands()}}this.models.forEach(t=>t.update()),this.views.forEach(t=>t.update())}this.elapsedTimeTotal+=e,this.elapsedTimeTotal>this.elapsedTimeThreshold&&this.resetElapsedTimeTotal(),(this.isPlaying()||null!=this.zoomMarker)&&(s.default.center>=s.default.from&&s.default.center<=s.default.to||null!=this.centerMarker||null!=this.zoomMarker?(this.prevTimestamp=t,requestAnimationFrame(this.animate)):this.stop())})}registerModel(t){this.models.push(t)}registerView(t){this.views.push(t)}adjustMinimapBands(){s.default.minimapBands.forEach(t=>{this.activeBand.zoomLevel<t.config.zoomLevel&&(t.zoomLevel=this.activeBand.zoomLevel)})}resetElapsedTimeTotal(){this.elapsedTimeTotal=0,document.dispatchEvent(new CustomEvent(n.CENTER_CHANGE_DONE))}accelerate(){const t=this.multipliers.indexOf(this.multiplier);return t===this.multipliers.length-1?this.multipliers[this.multipliers.length-1]:(this.multiplier=this.multipliers[t+1],this.multiplier)}decelerate(){const t=this.multipliers.indexOf(this.multiplier);return 0===t?this.multipliers[0]:(this.multiplier=this.multipliers[t-1],this.multiplier)}goTo(t){this.centerMarker=t,t>s.default.center?this.playForward():this.playBackward()}zoomTo(t,e){null==this.zoomMarker&&(e<0&&(e=0),t!==this.activeBand&&(this.stop(),this.activeBand=t),this.activeBand.zoomLevel!==e&&(this.zoomMarker=e,this.nextFrame()))}speed(t){const e=parseFloat(t);-1!==this.multipliers.indexOf(e)&&(this.multiplier=e)}isPlaying(){return this.direction!==o.Stop}isPlayingForward(){return this.direction===o.Forward}isPlayingBackward(){return this.direction===o.Backward}nextFrame(){requestAnimationFrame(this.animate)}playForward(){this.direction=o.Forward,this.nextFrame()}playBackward(){this.direction=o.Backward,this.nextFrame()}stop(){this.direction=o.Stop,this.activeBand=null,this.centerMarker=null,this.zoomMarker=null,this.prevTimestamp=null,this.elapsedTimeTotal=0}toggle(){this.isPlaying()?this.stop():this.nextFrame()}}e.Animator=r,e.default=new r},function(t,e,i){"use strict";let s;if(Object.defineProperty(e,"__esModule",{value:!0}),e.createSvg=((t,e,i={})=>{const s=document.createElementNS("http://www.w3.org/2000/svg",t);return null!=e&&s.setAttribute("style",e.join(";").concat(";")),Object.keys(i).forEach(t=>s.setAttribute(t,i[t])),s}),"undefined"!=typeof window){const t=document.createElement("style");document.head.appendChild(t),s=t.sheet}const n={};e.default=function(t,e,i,o){if(!e)return document.createElement(t);let r;return n.hasOwnProperty(e)?r=n[e].cloneNode(!1):((r=document.createElement(t)).classList.add(e),i&&s.insertRule(`.${e} { ${i.join(";").concat(";")} }`),n[e]=r.cloneNode(!1)),o&&r.setAttribute("style",o.join(";").concat(";")),r}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function o(t){return n[t.getUTCMonth()]}function r(t){const e=t.getUTCDate();return`${s[t.getUTCDay()]}, ${e}${function(t){return["st","nd","rd"][((t+90)%100-10)%10-1]||"th"}(e)}`}function a(t){return t.getUTCHours().toString().padStart(2,"0")}function l(t){return t.getUTCMinutes().toString().padStart(2,"0")}function h(t){return t.getUTCSeconds().toString().padStart(2,"0")}function d(t){return t.getUTCMilliseconds().toString().padStart(3,"0")}function u(t){return"YEAR"===t||"YEAR_5"===t||"DECADE"===t||"DECADE_5"===t||"CENTURY"===t||"CENTURY_5"===t||"MILLENIUM"===t}e.formatDate=((t,e)=>{if(null==t)return"∞";const i=new Date(t);let s=i.getUTCFullYear().toString();return u(e)?s:(s=`${o(i)} ${s}`,"MONHT"===e?s:(s=`${r(i)} ${s}`,"DAY"===e?s:(s=`${s} at ${a(i)}:`,"HOUR"===e?`${s}00`:(s=`${s}${l(i)}`,"MINUTE"===e?s:(s=`${s}:${h(i)}`,"SECOND"===e?s:`${s}.${d(i)}`)))))}),e.getGranularity=(t=>t>58?"MILLISECOND":t>12?"MILLISECOND_10":t>2.3?"MILLISECOND_50":t>1.5?"MILLISECOND_100":t>.4?"MILLISECOND_500":t>.00112?"SECOND":t>112e-6?"MINUTE":t>112e-7?"HOUR":t>8e-7?"DAY":t>2.6e-7?"WEEK":t>2.2e-8?"MONHT":t>2.2e-9?"YEAR":t>3.3e-10?"YEAR_5":t>1.6e-10?"DECADE":t>8e-11?"DECADE_5":t>1e-11?"CENTURY":t>5e-12?"CENTURY_5":"MILLENIUM"),e.getStep=(t=>{if("YEAR"===t)return 1;if("YEAR_5"===t)return 5;if("DECADE"===t)return 10;if("DECADE_5"===t)return 50;if("CENTURY"===t)return 100;if("CENTURY_5"===t)return 500;if("MILLENIUM"===t)return 1e3;if("MILLISECOND"===t)return 1;if("MILLISECOND_10"===t)return 10;if("MILLISECOND_50"===t)return 50;if("MILLISECOND_100"===t)return 100;if("MILLISECOND_500"===t)return 500;throw new RangeError("[getStep] Only steps with a granularity greater than 'year' calculated")}),e.subsequentDate=function(t){return u(t)?i=>{let s=new Date(i),n=s.getUTCFullYear()+1;if("YEAR"!==t){const i=e.getStep(t);for(;n%i!=0;)n+=1}return n>-1&&n<100?(s.setUTCFullYear(n),s.getTime()):Date.UTC(n,0,1)}:"MONHT"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+1,1)}:"WEEK"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+7)}:"DAY"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+1)}:"HOUR"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours()+1)}:"MINUTE"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes()+1)}:"SECOND"===t?t=>{const e=new Date(t);return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()+1)}:"MILLISECOND"===t.slice(0,"MILLISECOND".length)?i=>{const s=e.getStep(t),n=new Date(i);let o=n.getUTCMilliseconds()+1;return s>1&&(o=o+s-o%s),Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),o)}:void 0},e.byDate=function(t,e){const i=null!=t.date_min?t.date_min:t.date,s=null!=e.date_min?e.date_min:e.date;if(i<s)return-1;if(i>s)return 1;const n=null!=t.end_date_max?t.end_date_max:t.end_date,o=null!=e.end_date_max?e.end_date_max:e.end_date;return n<o?-1:n>o?1:0};e.labelBody=((t,e)=>{const i=new Date(t);return u(e)?i.getUTCFullYear().toString():"MONHT"===e?o(i):"WEEK"===e?`${o(i)}, week ${(t=>{const e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())),i=e.getUTCDay()||7;e.setUTCDate(e.getUTCDate()+4-i);const s=new Date(Date.UTC(e.getUTCFullYear(),0,1));return Math.ceil(((e.getTime()-s.getTime())/864e5+1)/7)})(i)}`:"DAY"===e?`${r(i)} ${o(i)}`:"HOUR"===e?`${a(i)}:00`:"MINUTE"===e?`${a(i)}:${l(i)}`:"SECOND"===e?`${a(i)}:${l(i)}:${h(i)}`:"MILLISECOND"===e.slice(0,"MILLISECOND".length)?`${a(i)}:${l(i)}:${h(i)}.${d(i)}`:void 0})},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.DomainConfig=class{};class s{constructor(){this.heightRatio=1,this.rulers=!0,this.rulerLabels=!0,this.topOffsetRatio=0,this.zoomLevel=0}}e.BandConfig=s;e.MinimapBandConfig=class extends s{constructor(){super(...arguments),this.indicatorFor=0,this.targets=[]}};e.EventsBandConfig=class extends s{};e.default=class{}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(2),n=i(0),o=i(5),r=i(9),a=i(4),l=i(1);e.default=class{constructor(t){this.band=t,this.onMouseDown=(t=>{document.addEventListener("mouseup",this.onMouseUp),this.dragStartTime=Date.now(),this.dragStartPosition=[t.clientX,t.clientY],this.dragOffsetX=t.clientX,this.dragOffsetY=t.clientY}),this.onMouseMove=(t=>{if(null==this.dragOffsetX)return;const e=t.clientY-this.dragOffsetY,i=t.clientX-this.dragOffsetX;if(this.band.type===s.BandType.EventsBand){const t=this.band;(0!==t.offsetY||Math.abs(e)>Math.abs(i)&&Math.abs(e)>5)&&(t.offsetY=e)}const o=i/this.band.pixelsPerMillisecond;n.default.center-=o,a.default.nextFrame(),this.dragOffsetX=t.clientX,this.dragOffsetY=t.clientY}),this.onMouseUp=(t=>{this.lastDragInterval=Date.now()-this.dragStartTime,this.dispatchScrollDoneEvent(t),this.dragOffsetX=null,this.dragOffsetY=null,document.removeEventListener("mouseup",this.onMouseUp)}),this.onDblClick=(t=>{const e=this.band.timestampAtPosition(t.clientX);a.default.goTo(e)})}render(){return this.rootElement=o.default("div","band-wrap",["position: absolute","z-index: 2"],[`height: ${this.band.visibleHeight}px`,`top: ${this.band.top}px`,`width: ${n.default.viewportWidth}px`]),r.default.register("mousedown",this.onMouseDown,this.rootElement),r.default.register("mousemove",this.onMouseMove,this.rootElement),r.default.register("dblclick",this.onDblClick,this.rootElement),this.rootElement}dispatchScrollDoneEvent(t){const e=[this.dragStartPosition[0]-t.clientX,this.dragStartPosition[1]-t.clientY].map(Math.abs).some(t=>t>5);(this.lastDragInterval>200||e)&&document.dispatchEvent(new CustomEvent(l.SCROLL_DONE))}resize(){this.rootElement.style.cssText=`height: ${this.band.visibleHeight}px; top: ${this.band.top}px; width: ${n.default.viewportWidth}px;`}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});class s{constructor(){this.eventsListeners=[]}register(t,e,i=document){i.addEventListener(t,e),this.eventsListeners.push([t,e,i])}flush(){this.eventsListeners.forEach(t=>{const[e,i,s]=t;s.removeEventListener(e,i)}),this.eventsListeners=[]}}e.EventBus=s,e.default=new s},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(1);class n{constructor(){this.events=[],this.row_count=0}}e.OrderedEvents=n;const o=8;e.orderEvents=function(t,e){if(!t.length)return new n;let i=0;const r=[],a=2*s.EVENT_HEIGHT/e;return{events:t=t.map(t=>{let s;null==t.label&&(t.label="NO LABEL"),t.from=t.date_min||t.date,t.to=t.end_date_max||t.end_date,null==t.to&&(t.to=t.from),t.time=null==t.to?0:t.to-t.from,t.space=0,t.time||(null==t.label&&(t.label="NO LABEL"),t.space=t.label.length*o/e+a);let n=0;for(;null==s&&n<r.length;){let e=0,i=!0;for(;i&&e<r[n].length&&!(t.to<r[n][e][0]);)i=t.from>r[n][e][1],e++;i&&(r[n].push([t.from,t.from+t.time+t.space]),s=n),n++}return null==s&&(s=r.push([[t.from,t.from+t.time+t.space]])-1),s>i&&(i=s),t.row=s,t}),row_count:r.length}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(0);e.TimelineProps=s.Props;const n=i(7);e.TimelineConfig=n.default;const o=i(8),r=i(5),a=i(3);e.calcPixelsPerMillisecond=a.calcPixelsPerMillisecond;const l=i(10);e.OrderedEvents=l.OrderedEvents,e.orderEvents=l.orderEvents;const h=i(12),d=i(13),u=i(14),c=i(16),f=i(17);e.MinimapBand=f.default;const p=i(18);e.EventsBand=p.default;const m=i(6);e.formatDate=m.formatDate;const v=i(19);e.RawEv3nt=v.RawEv3nt;const g=i(2);e.default=class extends h.default{constructor(t,e,i){super(e),this.config=t,this.onSelect=i,this.appendToWrapper=(t=>{let e=t.render();Array.isArray(e)||(e=[e]),e.forEach(t=>this.wrapper.appendChild(t))}),s.default.init(t),t.rootElement.appendChild(this.render());const n=a.debounce(this.resize,600);window.addEventListener("resize",n)}render(){this.wrapper=r.default("div","wrapper",["box-sizing: border-box","height: 100%","overflow: hidden","position: relative","user-select: none","width: 100%"]),this.views=s.default.bands.map(t=>t.type===g.BandType.EventsBand?new d.default(t,this.onSelect):new o.default(t)),this.views.push(new u.default),this.views.forEach(this.appendToWrapper),this.renderLabels();const t=r.default("div","red-line",["background-color: rgb(126, 0, 0)","bottom: 0","left: calc(50% - 1px)","position: absolute","top: 0","width: 2px","z-index: 4"]);return this.wrapper.appendChild(t),this.wrapper}renderLabels(){s.default.bands.filter(t=>t.type===g.BandType.EventsBand&&null!=t.config.label).map(t=>new c.default(t)).forEach(this.appendToWrapper)}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(4),n=i(1),o=i(0);e.default=class{constructor(t){this.onChange=t,this.animator=s.default,this.handleChange=(()=>{this.onChange(o.default)}),this.resize=(()=>{o.default.resize();for(const t of o.default.bands)t.resize();for(const t of this.views)t.resize();this.animator.nextFrame()}),document.addEventListener("keydown",t=>{189===t.keyCode&&o.default.controlBand.zoomOut(),187===t.keyCode&&o.default.controlBand.zoomIn()}),null!=this.onChange&&"function"==typeof this.onChange&&(document.addEventListener(n.CENTER_CHANGE_DONE,this.handleChange),document.addEventListener(n.ZOOM_DONE,this.handleChange))}reload(){this.resize()}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(8),n=i(9),o=i(3);e.default=class extends s.default{constructor(t,e){super(t),this.band=t,this.select=e,this.onWheel=(t=>{0===Math.abs(t.deltaX)&&0!==t.deltaY&&(t.deltaY<0&&this.zoomOut(),t.deltaY>0&&this.zoomIn())}),this.onClick=(t=>{if(this.lastDragInterval>175)return;const e=this.band.getEventByCoordinates(t.clientX,t.clientY);e&&this.select&&(this.select(e),o.logEvent(e))})}render(){const t=super.render();return n.default.register("click",this.onClick,this.rootElement),n.default.register("wheel",this.onWheel,this.rootElement),t}zoomIn(){this.band.zoomIn()}zoomOut(){this.band.zoomOut()}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(5),n=i(0),o=i(1),r=i(4),a=i(15),l=i(2);e.default=class{constructor(){this.indicatorsDrawn=!1,this.update=(()=>{n.default.bands.forEach(t=>{t.type===l.BandType.EventsBand?this.drawEventsBand(t):this.drawMinimapBand(t)}),this.drawIndicators()}),r.default.registerView(this)}render(){return this.canvas=s.default("canvas","main",["position: absolute"]),this.canvas.width=n.default.viewportWidth,this.canvas.height=n.default.viewportHeight,this.ctx=this.canvas.getContext("2d"),this.indicatorsCanvas=s.default("canvas","indicators",["position: absolute"],["z-index: 1"]),this.indicatorsCanvas.width=n.default.viewportWidth,this.indicatorsCanvas.height=n.default.viewportHeight,this.indicatorsCtx=this.indicatorsCanvas.getContext("2d"),this.update(),[this.canvas,this.indicatorsCanvas]}resize(){this.indicatorsCanvas.width=n.default.viewportWidth,this.indicatorsCanvas.height=n.default.viewportHeight,this.canvas.width=n.default.viewportWidth,this.canvas.height=n.default.viewportHeight,this.indicatorsDrawn=!1}clear(t){this.ctx.clearRect(0,t.top,this.canvas.width,t.visibleHeight)}drawEventsBand(t){this.clear(t),a.default(this.ctx,t);for(const e of t.visibleEvents)e.time?(this.ctx.fillStyle=e.color,this.ctx.fillRect(e.left,e.top,e.width,o.EVENT_HEIGHT)):(this.ctx.moveTo(e.left,e.top+o.EVENT_HEIGHT/2),this.ctx.beginPath(),this.ctx.arc(e.left,e.top+o.EVENT_HEIGHT/2,o.EVENT_HEIGHT/3,0,2*Math.PI),this.ctx.fillStyle=e.color,this.ctx.fill());this.drawEventsText(t)}drawEventsText(t){this.ctx.font="11px sans-serif",this.ctx.fillStyle="rgb(40, 40, 40)";for(const e of t.visibleEvents){let t=0===e.time?e.padding:e.width,i=e.left;if(e.left<0&&0!==e.time&&(t=e.width+e.left,i=0),e.label.length*o.PIXELS_PER_LETTER<=t){const t=e.time?3:8;this.ctx.fillText(e.label,i+t,e.top+o.EVENT_HEIGHT-3)}}}drawMinimapBand(t){if(t.isDrawn&&t.prevOffsetX===t.offsetX&&t.prevZoomLevel===t.zoomLevel)return;this.clear(t),a.default(this.ctx,t);const e=t.draw();this.ctx.drawImage(e,0,t.top,n.default.viewportWidth,t.availableHeight),t.isDrawn=!0}drawIndicators(){if(!this.indicatorsDrawn||!n.default.eventsBands.every(t=>t.prevZoomLevel===t.zoomLevel)){this.indicatorsCtx.clearRect(0,0,n.default.viewportWidth,n.default.viewportHeight),this.indicatorsCtx.beginPath();for(const t of n.default.minimapBands){const e=n.default.eventsBands[t.config.indicatorFor],i=Math.round(t.config.topOffsetRatio*n.default.viewportHeight),s=t.positionAtTimestamp(e.from);this.indicatorsCtx.rect(0,i,s,t.visibleHeight);const r=t.positionAtTimestamp(e.to);this.indicatorsCtx.rect(r,i,n.default.viewportWidth,t.visibleHeight),this.indicatorsCtx.rect(s,i+t.visibleHeight-o.DATE_BAR_HEIGHT,r-s,o.DATE_BAR_HEIGHT)}this.indicatorsCtx.fillStyle="rgba(0, 0, 0, .04)",this.indicatorsCtx.fill(),this.indicatorsCtx.closePath(),this.indicatorsDrawn=!0}}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(0),n=i(6),o="11px sans-serif",r="13px sans-serif";function a(t,e){return"CENTURY"===e.granularity&&new Date(t).getUTCFullYear()%1e3==0||("YEAR_5"===e.granularity&&new Date(t).getUTCFullYear()%50==0||"YEAR"===e.granularity&&new Date(t).getUTCFullYear()%5==0)}function l(t,e,i,s,o){const r=e.positionAtTimestamp(i);t.moveTo(r,s),t.lineTo(r,o),e.config.rulerLabels&&t.fillText(n.labelBody(i,e.granularity),r+3,o-3)}e.default=function(t,e){if(!e.config.rulers)return;let i=e.nextDate(e.from);const n=e.config.topOffsetRatio*s.default.viewportHeight,h=e.config.heightRatio*s.default.viewportHeight,d=[],u=[];for(;i<e.to;)a(i,e)?u.push(i):d.push(i),i=e.nextDate(i);t.beginPath(),t.font=o,t.fillStyle="rgb(205, 205, 205)";for(const i of d)l(t,e,i,n,n+h);t.strokeStyle="rgb(235, 235, 235)",t.stroke(),t.beginPath(),t.font=r,t.fillStyle="rgb(120, 120, 120)";for(const i of u)l(t,e,i,n,n+h);t.strokeStyle="rgb(150, 150, 150)",t.stroke()}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(5);e.default=class{constructor(t){this.band=t}render(){const t=s.default("div","events-label-wrapper",["border-top: 1px solid #CCC","pointer-events: none","position: absolute","width: 100%","z-index: 3"],[`top: ${100*this.band.config.topOffsetRatio}%`]),e=s.default("div","events-label",["background: white","border-bottom-right-radius: 4px","box-shadow: 1px 2px 4px #AAA","color: #444","display: inline-block","font-family: sans-serif","font-size: .8em","padding: 4px 8px"]);return e.innerText=this.band.config.label,t.appendChild(e),t}resize(){}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(2),n=i(7),o=i(0),r=i(5);e.default=class extends s.default{constructor(t){super(function(t){const e=Object.assign({},new n.MinimapBandConfig,t);return e.targets.length||e.targets.push(0),e}(t)),this.type=s.BandType.MinimapBand,this.canvas=r.default("canvas"),this.ctx=this.canvas.getContext("2d"),this.nextCanvas=r.default("canvas"),this.nextCtx=this.nextCanvas.getContext("2d"),this.isDrawn=!1}init(){super.init(),this.maxRowCount=this.config.targets.reduce((t,e)=>{const{rowCount:i}=o.default.eventsBands[e];return Math.max(t,i)},0);const t=this.availableHeight/this.maxRowCount;this.eventHeight=t<1?1:Math.floor(t),this.canvas.width=o.default.viewportWidth,this.canvas.height=this.maxRowCount*this.eventHeight,this.nextCanvas.width=this.canvas.width,this.nextCanvas.height=this.canvas.height}resize(){super.resize(),this.isDrawn=!1}draw(){return this.isDrawn?this.updateNextCanvas():this.drawEvents(),this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.ctx.drawImage(this.nextCanvas,0,0),this.canvas}drawEvents(t=this.from,e=this.to){this.nextCtx.beginPath(),this.config.targets.forEach(i=>{const s=o.default.eventsBands[i];for(const i of s.events){if(i.from>e||i.to<t)continue;const s=Math.round(i.time*this.pixelsPerMillisecond),n=this.positionAtTimestamp(null!=i.date_min?i.date_min:i.date),o=this.maxRowCount-(i.row+1)*this.eventHeight,r=s<1?1:s;this.nextCtx.rect(n,o,r,this.eventHeight)}}),this.nextCtx.fillStyle="rgb(190, 190, 190)",this.nextCtx.fill()}updateNextCanvas(){const t=Math.round(this.offsetX-this.prevOffsetX);if(0===t)return this.canvas;let e,i;this.nextCtx.clearRect(0,0,this.nextCanvas.width,this.nextCanvas.height),this.nextCtx.drawImage(this.canvas,t,0),t<0?(e=this.timestampAtPosition(o.default.viewportWidth+t),i=this.to):(e=this.from,i=this.timestampAtPosition(t)),this.drawEvents(e,i)}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=i(2),n=i(7),o=i(4),r=i(1),a=i(0),l=i(10),h=i(6),d=i(3);e.default=class extends s.default{constructor(t){super(Object.assign({},new n.EventsBandConfig,t)),this.type=s.BandType.EventsBand,this.events=[],this.rowCount=0,this.visibleEvents=[],this._offsetY=0,null!=this.config.events&&this.config.events.sort(h.byDate)}get offsetY(){return this._offsetY}set offsetY(t){this._offsetY+=t,this._offsetY<0&&(this._offsetY=0);const e=this.height>this.availableHeight?this.height-this.availableHeight+r.EVENT_ROW_HEIGHT:0;this._offsetY>e&&(this._offsetY=e);const i=this._offsetY/r.EVENT_ROW_HEIGHT;this.lowestVisibleRow=Math.ceil(i),this.highestVisibleRow=this.lowestVisibleRow+this.visibleRowsCount}init(){super.init();const t=d.calcPixelsPerMillisecond(a.default.viewportWidth,this.config.zoomLevel||0,a.default.time),e=null==this.config.orderedEvents?l.orderEvents(this.config.events,t):this.config.orderedEvents;this.events=e.events,this.rowCount=e.row_count,this.height=r.EVENT_ROW_HEIGHT*this.rowCount,this.offsetY=0,this.updateEvents()}getColor(t,e){const i=[49,220,215];let s;if(a.default.center>e)s=a.default.center-e;else{if(!(a.default.center<t))return`rgb(${i.join(", ")})`;s=t-a.default.center}const n=s/(this.time/2),o=a.default.center>e?[253,231,37]:[204,104,232];return`rgb(${i.map((t,e)=>t+(o[e]-t)*n).join(", ")})`}updateEvents(){this.visibleEvents=this.events.filter(t=>!(t.from>this.to||t.to<this.from)&&t.row>=this.lowestVisibleRow&&t.row<=this.highestVisibleRow).map(t=>(t.left=this.positionAtTimestamp(t.from),t.width=Math.round(t.time*this.pixelsPerMillisecond),t.time&&t.width<1&&(t.width=1),t.padding=Math.round(t.space*this.pixelsPerMillisecond),t.top=this.top+this.availableHeight-(t.row+1)*r.EVENT_ROW_HEIGHT+this.offsetY,t.color=this.getColor(t.from,t.to),t))}update(){super.update(),this.updateEvents()}getEventByCoordinates(t,e){const i=this.timestampAtPosition(t),s=a.default.viewportOffset+this.top+this.availableHeight+this.offsetY,n=Math.floor((s-e)/r.EVENT_ROW_HEIGHT);return this.events.find(t=>!(!(t.from<i&&t.from+t.time+t.space>i)||t.row<this.lowestVisibleRow||t.row>this.highestVisibleRow)&&t.row===n)}zoomIn(){o.default.zoomTo(this,this.zoomLevel+1)}zoomOut(){o.default.zoomTo(this,this.zoomLevel-1)}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.RawEv3nt=class{constructor(){this.date_granularity="DAY"}}}])});
{
"name": "timeline",
"version": "3.2.1",
"version": "3.2.2",
"description": "",

@@ -12,2 +12,3 @@ "main": "build/index.js",

"dist": "rm -rf dist && webpack && webpack --config webpack.config.prod.js",
"release": "./release.sh",
"test": "jest",

@@ -14,0 +15,0 @@ "start": "webpack-dev-server --config webpack.config.prod.js",

@@ -16,2 +16,3 @@ import props, { Props } from './models/props'

import { RawEv3nt } from './models/event';
import { BandType } from './models/band';
// import Debug from './views/debug'

@@ -78,4 +79,4 @@

.map(band =>
(band instanceof EventsBand) ?
new EventsBandView(band, this.onSelect) :
band.type === BandType.EventsBand ?
new EventsBandView(band as EventsBand, this.onSelect) :
new BandView(band)

@@ -108,3 +109,3 @@ )

props.bands
.filter(band => band instanceof EventsBand && band.config.label != null)
.filter(band => band.type === BandType.EventsBand && (band as EventsBand).config.label != null)
.map(band => new Label(band as EventsBand))

@@ -111,0 +112,0 @@ .forEach(this.appendToWrapper)

@@ -1,2 +0,2 @@

import Band from '.'
import Band, { BandType } from '.'
import { EventsBandConfig } from '../config'

@@ -12,2 +12,4 @@ import animator from '../../animator'

export default class EventsBand extends Band<EventsBandConfig> {
type = BandType.EventsBand
// Total height of the band (compare this.visibleHeight and this.availableHeight)

@@ -14,0 +16,0 @@ private height: number

@@ -8,2 +8,6 @@ import { getGranularity, Granularity, subsequentDate } from '../../utils/dates'

export enum BandType {
EventsBand,
MinimapBand,
}
/**

@@ -14,4 +18,7 @@ * A Band is a collection of domains. All the domains in the Band

*/
export default abstract class Band<T extends BandConfig> {
// instanceof operator fails miserably (don't ask me why, thank you JS)
// use a fixed property to determine the band type
public abstract type: BandType
export default abstract class Band<T extends BandConfig> {
protected readonly defaultZoomLevel = 0

@@ -18,0 +25,0 @@

@@ -1,2 +0,2 @@

import Band from '.'
import Band, { BandType } from '.'
import { MinimapBandConfig } from '../config'

@@ -15,2 +15,4 @@ import { Pixels } from '../../constants'

export default class MinimapBand extends Band<MinimapBandConfig> {
type = BandType.MinimapBand
private eventHeight: Pixels

@@ -17,0 +19,0 @@ private maxRowCount: number

import { CENTER_CHANGE_DONE, Milliseconds, Pixels } from "../constants"
import Config from "./config"
import MinimapBand from "./band/minimap"
// import EventsBand from "./band/events"
import { debounce } from "../utils"
import EventsBand from "./band/events";
// import prepareConfig from '../utils/prepare-config'
// import { byDate } from "../utils/dates";
import { BandType } from './band';
function onEventsBand (band: MinimapBand | EventsBand): band is EventsBand {
return band instanceof EventsBand
return band.type === BandType.EventsBand
}
function onMinimapBand (band: MinimapBand | EventsBand): band is MinimapBand {
return band instanceof MinimapBand
return band.type === BandType.MinimapBand
}

@@ -72,7 +70,8 @@

const [froms, tos] = config.bands.reduce((prev, curr) => {
if (curr instanceof MinimapBand) return prev
const events = curr.config.orderedEvents == null ? curr.config.events : curr.config.orderedEvents.events
if (curr.type === BandType.MinimapBand) return prev
const band = curr as EventsBand
const events = band.config.orderedEvents == null ? band.config.events : band.config.orderedEvents.events
prev[0].push(events[0].date_min || events[0].date)
prev[1].push(events.reduce((prev, curr) => {
return Math.max(prev, curr.end_date || -Infinity, curr.end_date_max || -Infinity)
prev[1].push(events.reduce((prev2, curr2) => {
return Math.max(prev2, curr2.end_date || -Infinity, curr2.end_date_max || -Infinity)
}, -Infinity))

@@ -79,0 +78,0 @@ return prev

@@ -1,65 +0,65 @@

import Config, { BandConfig } from "../models/config"
import { orderEvents, OrderedEvents } from "./events.worker"
import { Pixels } from "../constants"
import { RawEv3nt } from "../models/event";
// import Config, { BandConfig } from "../models/config"
// import { orderEvents, OrderedEvents } from "./events.worker"
// import { Pixels } from "../constants"
// import { RawEv3nt } from "../models/event";
// function orderEventsProxy(events: RawEv3nt[], pixelsPerMillisecond: Pixels, orderEventsWasm?): OrderedEvents {
// // @ts-ignore
// if (typeof WebAssembly === "object" && typeof WebAssembly.instantiate === "function" && orderEventsWasm) {
// console.warn("[Timeline] Using WebAssembly")
// const es = JSON.stringify(events)
// const es2 = orderEventsWasm.order_events(es, pixelsPerMillisecond)
// return JSON.parse(es2)
// } else {
// return orderEvents(events, pixelsPerMillisecond)
// }
// }
// // function orderEventsProxy(events: RawEv3nt[], pixelsPerMillisecond: Pixels, orderEventsWasm?): OrderedEvents {
// // // @ts-ignore
// // if (typeof WebAssembly === "object" && typeof WebAssembly.instantiate === "function" && orderEventsWasm) {
// // console.warn("[Timeline] Using WebAssembly")
// // const es = JSON.stringify(events)
// // const es2 = orderEventsWasm.order_events(es, pixelsPerMillisecond)
// // return JSON.parse(es2)
// // } else {
// // return orderEvents(events, pixelsPerMillisecond)
// // }
// // }
export default async function prepareConfig(config: Config): Promise<Config> {
// config.bands = config.bands.map(band => {
// if (band instanceof EventsBand) {
// export default async function prepareConfig(config: Config): Promise<Config> {
// // config.bands = config.bands.map(band => {
// // if (band instanceof EventsBand) {
// }
// })
// if (config.events == null) {
// console.error('[DomainConfig] No events band in config!')
// return config
// }
// // }
// // })
// // if (config.events == null) {
// // console.error('[DomainConfig] No events band in config!')
// // return config
// // }
// if (config.events.domains == null || !config.events.domains.length) {
// console.error('[DomainConfig] No events band domains in config!')
// return config
// }
// // if (config.events.domains == null || !config.events.domains.length) {
// // console.error('[DomainConfig] No events band domains in config!')
// // return config
// // }
/**
* Wasm works in dev mode. When created into a lib, the deps are lazy loaded
* from the wrong dir (project root)
*/
// const orderEventsWasm = await import('../wasm/timeline_sort_events.js')
// /**
// * Wasm works in dev mode. When created into a lib, the deps are lazy loaded
// * from the wrong dir (project root)
// */
// // const orderEventsWasm = await import('../wasm/timeline_sort_events.js')
// config.events.domains = config.events.domains.map(domainConfig => {
// if (domainConfig.events == null && domainConfig.orderedEvents == null) {
// console.error('[DomainConfig] No events in config!')
// }
// else if (domainConfig.orderedEvents == null) {
// domainConfig.orderedEvents = orderEventsProxy(domainConfig.events, pixelsPerMillisecond)
// delete domainConfig.events
// }
// // config.events.domains = config.events.domains.map(domainConfig => {
// // if (domainConfig.events == null && domainConfig.orderedEvents == null) {
// // console.error('[DomainConfig] No events in config!')
// // }
// // else if (domainConfig.orderedEvents == null) {
// // domainConfig.orderedEvents = orderEventsProxy(domainConfig.events, pixelsPerMillisecond)
// // delete domainConfig.events
// // }
// return { ...new EventsDomainConfig(), ...domainConfig }
// })
// // return { ...new EventsDomainConfig(), ...domainConfig }
// // })
// config = { ...new Config(), ...config}
// // config = { ...new Config(), ...config}
// config.events.domains = config.events.domains.map(d => ({ ...new EventsDomainConfig(), ...d }))
// config.events = { ...new BandConfig<EventsDomainConfig>(), ...config.events }
// // config.events.domains = config.events.domains.map(d => ({ ...new EventsDomainConfig(), ...d }))
// // config.events = { ...new BandConfig<EventsDomainConfig>(), ...config.events }
// config.minimaps = config.minimaps.map(mm => {
// mm = { ...new BandConfig<MinimapDomainConfig>(), ...mm }
// if (!mm.domains.length) mm.domains.push({})
// mm.domains = mm.domains.map(d => ({ ...new MinimapDomainConfig(), ...d }))
// return ({ ...new BandConfig<MinimapDomainConfig>(), ...mm })
// })
// // config.minimaps = config.minimaps.map(mm => {
// // mm = { ...new BandConfig<MinimapDomainConfig>(), ...mm }
// // if (!mm.domains.length) mm.domains.push({})
// // mm.domains = mm.domains.map(d => ({ ...new MinimapDomainConfig(), ...d }))
// // return ({ ...new BandConfig<MinimapDomainConfig>(), ...mm })
// // })
return config
}
// return config
// }

@@ -1,2 +0,2 @@

import Band from '../../models/band'
import Band, { BandType } from '../../models/band'
import props from '../../models/props'

@@ -57,3 +57,4 @@ import createElement from '../../utils/create-element'

if (this.band instanceof EventsBand) {
if (this.band.type === BandType.EventsBand) {
const band = this.band as EventsBand
// If the band's Y offset is 0, which means the band is "at the bottom",

@@ -65,6 +66,6 @@ // only move vertical if the yChange is bigger than the xChange

if (
this.band.offsetY !== 0 ||
band.offsetY !== 0 ||
(Math.abs(yChange) > Math.abs(xChange) && Math.abs(yChange) > 5)
) {
this.band.offsetY = yChange
band.offsetY = yChange
}

@@ -71,0 +72,0 @@ }

@@ -9,2 +9,3 @@ import createElement from '../../utils/create-element'

import drawRulers from './rulers'
import { BandType } from '../../models/band';

@@ -66,6 +67,6 @@ /**

.forEach(band => {
if (band instanceof EventsBand)
this.drawEventsBand(band)
if (band.type === BandType.EventsBand)
this.drawEventsBand(band as EventsBand)
else
this.drawMinimapBand(band)
this.drawMinimapBand(band as MinimapBand)
})

@@ -72,0 +73,0 @@

@@ -5,3 +5,3 @@ import animator from "../animator"

import props from "../models/props";
import MinimapBand from "../models/band/minimap";
import { BandType } from '../models/band';

@@ -42,3 +42,3 @@ export default class Debug implements View {

<table style="margin-bottom: 1em; border-collapse: collapse; border-spacing: 0;">
<tr><td style="color: gray" width=40>type</td><td>${band instanceof MinimapBand ? 'minimap' : 'events'}</td></tr>
<tr><td style="color: gray" width=40>type</td><td>${band.type === BandType.MinimapBand ? 'minimap' : 'events'}</td></tr>
<tr><td style="color: gray">zoom</td><td>${band.zoomLevel}</td></tr>

@@ -45,0 +45,0 @@ <tr><td style="color: gray">px/ms</td><td>${band.pixelsPerMillisecond.toExponential(2)}</td></tr>

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc