UNPKG

vis-timeline

Version:

Create a fully customizable, interactive timeline with items and ranges.

26 lines 257 kB
/** * vis-timeline and vis-graph2d * https://visjs.github.io/vis-timeline/ * * Create a fully customizable, interactive timeline with items and ranges. * * @version 8.5.3 * @date 2026-08-05T15:55:32.472Z * * @copyright (c) 2011-2017 Almende B.V, http://almende.com * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs * * @license * vis.js is dual licensed under both * * 1. The Apache 2.0 License * http://www.apache.org/licenses/LICENSE-2.0 * * and * * 2. The MIT License * http://opensource.org/licenses/MIT * * vis.js may be distributed under either license. */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("moment"),require("vis-util/esnext/umd/vis-util.js"),require("vis-data/esnext/umd/vis-data.js"),require("xss"),require("uuid"),require("@egjs/hammerjs"),require("propagating-hammerjs"),require("component-emitter"),require("keycharm")):"function"==typeof define&&define.amd?define(["exports","moment","vis-util/esnext/umd/vis-util.js","vis-data/esnext/umd/vis-data.js","xss","uuid","@egjs/hammerjs","propagating-hammerjs","component-emitter","keycharm"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).vis=t.vis||{},t.moment,t.vis,t.vis,t.filterXSS,t.uuid,t.Hammer,t.propagating,t.Emitter,t.keycharm)}(this,function(t,e,s,o,n,r,a,h,l,d){function p(t){var e=Object.create(null);return t&&Object.keys(t).forEach(function(i){if("default"!==i){var s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:function(){return t[i]}})}}),e.default=t,Object.freeze(e)}var m=p(s);function c(t){for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&(t[e].redundant=t[e].used,t[e].used=[])}function u(t){for(var e in t){if(!Object.prototype.hasOwnProperty.call(t,e))continue;const s=t[e];for(var i=0;i<s.redundant.length;i++)s.redundant[i].parentNode.removeChild(s.redundant[i]);s.redundant=[]}}function g(t,e,i){var s;return Object.prototype.hasOwnProperty.call(e,t)?e[t].redundant.length>0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s}function f(t,e,i,s){var o;return Object.prototype.hasOwnProperty.call(e,t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o}function b(t,e,i,s,o,n){var r;if("circle"==i.style?((r=g("circle",s,o)).setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",e),r.setAttributeNS(null,"r",.5*i.size)):((r=g("rect",s,o)).setAttributeNS(null,"x",t-.5*i.size),r.setAttributeNS(null,"y",e-.5*i.size),r.setAttributeNS(null,"width",i.size),r.setAttributeNS(null,"height",i.size)),void 0!==i.styles&&r.setAttributeNS(null,"style",i.styles),r.setAttributeNS(null,"class",i.className+" vis-point"),n){var a=g("text",s,o);n.xOffset&&(t+=n.xOffset),n.yOffset&&(e+=n.yOffset),n.content&&(a.textContent=n.content),n.className&&a.setAttributeNS(null,"class",n.className+" vis-label"),a.setAttributeNS(null,"x",t),a.setAttributeNS(null,"y",e)}return r}function y(t,e,i,s,o,n,r,a){if(0!=s){s<0&&(e-=s*=-1);var h=g("rect",n,r);h.setAttributeNS(null,"x",t-.5*i),h.setAttributeNS(null,"y",e),h.setAttributeNS(null,"width",i),h.setAttributeNS(null,"height",s),h.setAttributeNS(null,"class",o),a&&h.setAttributeNS(null,"style",a)}}function v(t){if(!t)return!1;let e=t.idProp??t._idProp;return!!e&&o.isDataViewLike(e,t)}const w=/^\/?Date\((-?\d+)/i,_=/^\d+$/;function x(t,i){let o;if(void 0!==t){if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return s.isString(t)&&!isNaN(Date.parse(t))?e(t).valueOf():Number(t.valueOf());case"string":case"String":return String(t);case"Date":try{return x(t,"Moment").toDate()}catch(e){throw e instanceof TypeError?new TypeError("Cannot convert object of type "+s.getType(t)+" to type "+i,{cause:e}):e}case"Moment":if(s.isNumber(t))return e(t);if(t instanceof Date)return e(t.valueOf());if(e.isMoment(t))return e(t);if(s.isString(t))return o=w.exec(t),o?e(Number(o[1])):(o=_.exec(t),e(o?Number(t):t));throw new TypeError("Cannot convert object of type "+s.getType(t)+" to type "+i);case"ISODate":if(s.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(e.isMoment(t))return t.toDate().toISOString();if(s.isString(t))return o=w.exec(t),o?new Date(Number(o[1])).toISOString():e(t).format();throw new Error("Cannot convert object of type "+s.getType(t)+" to type ISODate");case"ASPDate":if(s.isNumber(t))return"/Date("+t+")/";if(t instanceof Date||e.isMoment(t))return"/Date("+t.valueOf()+")/";if(s.isString(t)){let e;return o=w.exec(t),e=o?new Date(Number(o[1])).valueOf():new Date(t).valueOf(),"/Date("+e+")/"}throw new Error("Cannot convert object of type "+s.getType(t)+" to type ASPDate");default:throw new Error(`Unknown type ${i}`)}}}function D(t,e={start:"Date",end:"Date"}){const i=t._idProp,s=new o.DataSet({fieldId:i}),n=o.createNewDataPipeFrom(t).map(t=>Object.keys(t).reduce((i,s)=>(i[s]=x(t[s],e[s]),i),{})).to(s);return n.all().start(),{add:(...e)=>t.getDataSet().add(...e),remove:(...e)=>t.getDataSet().remove(...e),update:(...e)=>t.getDataSet().update(...e),updateOnly:(...e)=>t.getDataSet().updateOnly(...e),clear:(...e)=>t.getDataSet().clear(...e),forEach:s.forEach.bind(s),get:s.get.bind(s),getIds:s.getIds.bind(s),off:s.off.bind(s),on:s.on.bind(s),get length(){return s.length},idProp:i,type:e,rawDS:t,coercedDS:s,dispose:()=>n.stop()}}const C=t=>{const e=new n.FilterXSS(t);return t=>"string"==typeof t?e.process(t):t},S=t=>t;let k=C();const T={...m,convert:x,setupXSSProtection:t=>{t&&(!0===t.disabled?(k=S,console.warn("You disabled XSS protection for vis-Timeline. I sure hope you know what you're doing!")):t.filterOptions&&(k=C(t.filterOptions)))}};Object.defineProperty(T,"xss",{get:function(){return k}});const O=.001;function E(t){t.sort((t,e)=>t.data.start-e.data.start)}function M(t){t.sort((t,e)=>("end"in t.data?t.data.end:t.data.start)-("end"in e.data?e.data.end:e.data.start))}function I(t,e,i,s){return null===R(t,e.item,!1,t=>t.stack&&(i||null===t.top),t=>t.stack,()=>e.axis,s)}function N(t,e,i){const s=R(t,e.item,!1,t=>t.stack,()=>!0,t=>t.baseTop);i.height=s-i.top+.5*e.item.vertical}function P(t,e,i,s){for(let o=0;o<t.length;o++){if(null==t[o].data.subgroup){t[o].top=e.item.vertical;continue}if(void 0===t[o].data.subgroup||!s)continue;let n=0;for(const e in i)!Object.prototype.hasOwnProperty.call(i,e)||!0!==i[e].visible||i[e].index>=i[t[o].data.subgroup].index||(n+=i[e].height,i[t[o].data.subgroup].top=n);t[o].top=n+.5*e.item.vertical}s||A(t,e,i)}function A(t,e,i){R(Object.values(i).toSorted((t,e)=>t.index>e.index?1:t.index<e.index?-1:0),{vertical:0},!0,()=>!0,()=>!0,()=>0);for(let s=0;s<t.length;s++)void 0!==t[s].data.subgroup&&(t[s].top=i[t[s].data.subgroup].top+.5*e.item.vertical)}function L(t,e,i){let s=!1;const o=[];for(let t in i)Object.prototype.hasOwnProperty.call(i[t],"index")?o[i[t].index]=t:o.push(t);for(let n=0;n<o.length;n++){let r=o[n];if(!Object.prototype.hasOwnProperty.call(i,r))continue;s=s||i[r].stack,i[r].top=0;for(const t in i)i[t].visible&&i[r].index>i[t].index&&(i[r].top+=i[t].height);const a=t[r];for(let t=0;t<a.length;t++)void 0!==a[t].data.subgroup&&(a[t].top=i[a[t].data.subgroup].top+.5*e.item.vertical,i[r].stack&&(a[t].baseTop=a[t].top));s&&i[r].stack&&N(t[r],e,i[r])}}function R(t,e,i,s,o,n,r){let a=t=>t.start,h=t=>t.end;if(!i){const i=!(!t[0]||!t[0].options.rtl);a=i?t=>t.right:t=>t.left,h=t=>a(t)+t.width+e.horizontal}const l=[],d=[];let p=null,m=0;for(const e of t)if(s(e))l.push(e);else if(o(e)){const t=a(e);null!==p&&t<p-O&&(m=0),p=t,m=F(d,e=>a(e)-O>t,m),d.splice(m,0,e),m++}p=null;let c=null;m=0;let u=0,g=0,f=0;for(;l.length>0;){const t=l.shift();t.top=n(t);const i=a(t),s=h(t);null!==p&&i<p-O&&(u=0,g=0,m=0,c=null),(null===p||i>p+O)&&(u=F(d,t=>i<h(t)-O,u)),p=i,(null===c||c<s-O)&&(g=F(d,t=>s<a(t)-O,Math.max(u,g))),null!==c&&c-O>s&&(g=G(d,t=>s+O>=a(t),u,g)+1),c=s;const b=H(d,t=>i<h(t)-O,u,g).toSorted((t,e)=>t.top-e.top);for(let i=0;i<b.length;i++){const s=b[i];j(t,s,e)&&(t.top=s.top+s.height+e.vertical)}o(t)&&(m=F(d,t=>a(t)-O>i,m),d.splice(m,0,t),m<u&&u++,m<=g&&g++,m++);const y=t.top+t.height;if(y>f&&(f=y),r&&r())return null}return f}function j(t,e,i){return t.top-i.vertical+O<e.top+e.height&&t.top+t.height+i.vertical-O>e.top}function F(t,e,i){i||(i=0);for(let s=i;s<t.length;s++)if(e(t[s]))return s;return t.length}function G(t,e,i,s){i||(i=0),s||(s=t.length);for(let o=s-1;o>=i;o--)if(e(t[o]))return o;return i-1}function H(t,e,i,s){i||(i=0),s=s?Math.min(s,t.length):t.length;const o=[];for(let n=i;n<s;n++)e(t[n])&&o.push(t[n]);return o}var z=Object.freeze({__proto__:null,nostack:P,orderByEnd:M,orderByStart:E,stack:I,stackSubgroups:A,stackSubgroupsWithInnerStack:L,substack:N});const B="__background__";class Y{constructor(t,e,i){if(this.groupId=t,this.subgroups={},this.subgroupStack={},this.subgroupStackAll=!1,this.subgroupVisibility={},this.doInnerStack=!1,this.shouldBailStackItems=!1,this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.isVisible=null,this.height=0,this.stackDirty=!0,this._disposeCallbacks=[],e&&e.nestedGroups&&(this.nestedGroups=e.nestedGroups,0==e.showNested?this.showNested=!1:this.showNested=!0),e&&e.subgroupStack)if("boolean"==typeof e.subgroupStack)this.doInnerStack=e.subgroupStack,this.subgroupStackAll=e.subgroupStack;else for(const t in e.subgroupStack)Object.prototype.hasOwnProperty.call(e.subgroupStack,t)&&(this.subgroupStack[t]=e.subgroupStack[t],this.doInnerStack=this.doInnerStack||e.subgroupStack[t]);e&&e.heightMode?this.heightMode=e.heightMode:this.heightMode=i.options.groupHeightMode,this.nestedInGroup=null,this.dom={},this.props={label:{width:0,height:0}},this.className=null,this.items={},this.visibleItems=[],this.itemsInRange=[],this.orderedItems={byStart:[],byEnd:[]},this.checkRangedItems=!1;const s=()=>{this.checkRangedItems=!0};this.itemSet.body.emitter.on("checkRangedItems",s),this._disposeCallbacks.push(()=>{this.itemSet.body.emitter.off("checkRangedItems",s)}),this._create(),this.setData(e)}_create(){const t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;const e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;const i=document.createElement("div");i.className="vis-group",i["vis-group"]=this,this.dom.foreground=i,this.dom.background=document.createElement("div"),this.dom.background.className="vis-group",this.dom.axis=document.createElement("div"),this.dom.axis.className="vis-group",this.dom.marker=document.createElement("div"),this.dom.marker.style.visibility="hidden",this.dom.marker.style.position="absolute",this.dom.marker.innerHTML="",this.dom.background.appendChild(this.dom.marker)}setData(t){if(this.itemSet.groupTouchParams.isDragging)return;let e,i;if(t&&t.subgroupVisibility)for(const e in t.subgroupVisibility)Object.prototype.hasOwnProperty.call(t.subgroupVisibility,e)&&(this.subgroupVisibility[e]=t.subgroupVisibility[e]);if(this.itemSet.options&&this.itemSet.options.groupTemplate?(i=this.itemSet.options.groupTemplate.bind(this),e=i(t,this.dom.inner)):e=t&&t.content,e instanceof Element){for(;this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else e instanceof Object&&e.isReactComponent||(e instanceof Object?i(t,this.dom.inner):this.dom.inner.innerHTML=null!=e?T.xss(e):T.xss(this.groupId||""));this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?T.removeClassName(this.dom.inner,"vis-hidden"):T.addClassName(this.dom.inner,"vis-hidden"),t&&t.nestedGroups?(this.nestedGroups&&this.nestedGroups==t.nestedGroups||(this.nestedGroups=t.nestedGroups),void 0===t.showNested&&void 0!==this.showNested||(0==t.showNested?this.showNested=!1:this.showNested=!0),T.addClassName(this.dom.label,"vis-nesting-group"),this.showNested?(T.removeClassName(this.dom.label,"collapsed"),T.addClassName(this.dom.label,"expanded")):(T.removeClassName(this.dom.label,"expanded"),T.addClassName(this.dom.label,"collapsed"))):this.nestedGroups&&(this.nestedGroups=null,T.removeClassName(this.dom.label,"collapsed"),T.removeClassName(this.dom.label,"expanded"),T.removeClassName(this.dom.label,"vis-nesting-group")),t&&(t.treeLevel||t.nestedInGroup)?(T.addClassName(this.dom.label,"vis-nested-group"),t.treeLevel?T.addClassName(this.dom.label,"vis-group-level-"+t.treeLevel):T.addClassName(this.dom.label,"vis-group-level-unknown-but-gte1")):T.addClassName(this.dom.label,"vis-group-level-0");const s=t&&t.className||null;s!=this.className&&(this.className&&(T.removeClassName(this.dom.label,this.className),T.removeClassName(this.dom.foreground,this.className),T.removeClassName(this.dom.background,this.className),T.removeClassName(this.dom.axis,this.className)),T.addClassName(this.dom.label,s),T.addClassName(this.dom.foreground,s),T.addClassName(this.dom.background,s),T.addClassName(this.dom.axis,s),this.className=s),this.style&&(T.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(T.addCssText(this.dom.label,t.style),this.style=t.style)}getLabelWidth(){return this.props.label.width}_didMarkerHeightChange(){const t=this.dom.marker.clientHeight;if(t!=this.lastMarkerHeight){this.lastMarkerHeight=t;const e={};let i=0;T.forEach(this.items,(t,s)=>{if(t.dirty=!0,t.displayed){const o=!0;e[s]=t.redraw(o),i=e[s].length}});if(i>0)for(let t=0;t<i;t++)T.forEach(e,e=>{e[t]()});return!0}return!1}_calculateGroupSizeAndPosition(){const{offsetTop:t,offsetLeft:e,offsetWidth:i}=this.dom.foreground;this.top=t,this.right=e,this.width=i}_shouldBailItemsRedraw(){const t=this,e=this.itemSet.options.onTimeout,i={relativeBailingTime:this.itemSet.itemsSettingTime,bailTimeMs:e&&e.timeoutMs,userBailFunction:e&&e.callback,shouldBailStackItems:this.shouldBailStackItems};let s=null;if(!this.itemSet.initialDrawDone){if(i.shouldBailStackItems)return!0;Math.abs(Date.now()-new Date(i.relativeBailingTime))>i.bailTimeMs&&(i.userBailFunction&&null==this.itemSet.userContinueNotBail?i.userBailFunction(e=>{t.itemSet.userContinueNotBail=e,s=!e}):s=0==t.itemSet.userContinueNotBail)}return s}_redrawItems(t,e,i,s){if(t||this.stackDirty||this.isVisible&&!e){const t={byEnd:this.orderedItems.byEnd.filter(t=>!t.isCluster),byStart:this.orderedItems.byStart.filter(t=>!t.isCluster)},e={byEnd:[...new Set(this.orderedItems.byEnd.map(t=>t.cluster).filter(t=>!!t))],byStart:[...new Set(this.orderedItems.byStart.map(t=>t.cluster).filter(t=>!!t))]},o=()=>[...this._updateItemsInRange(t,this.visibleItems.filter(t=>!t.isCluster),s),...this._updateClustersInRange(e,this.visibleItems.filter(t=>t.isCluster),s)],n=t=>{let e={};for(const i in this.subgroups){if(!Object.prototype.hasOwnProperty.call(this.subgroups,i))continue;const s=this.visibleItems.filter(t=>t.data.subgroup===i);e[i]=t?s.toSorted((e,i)=>t(e.data,i.data)):s}return e};if("function"==typeof this.itemSet.options.order){const t=this;if(this.doInnerStack&&this.itemSet.options.stackSubgroups){L(n(this.itemSet.options.order),i,this.subgroups),this.visibleItems=o(),this._updateSubGroupHeights(i)}else{this.visibleItems=o(),this._updateSubGroupHeights(i);const e=this.visibleItems.slice().filter(t=>t.isCluster||!t.isCluster&&!t.cluster).toSorted((e,i)=>t.itemSet.options.order(e.data,i.data));this.shouldBailStackItems=I(e,i,!0,this._shouldBailItemsRedraw.bind(this))}}else if(this.visibleItems=o(),this._updateSubGroupHeights(i),this.itemSet.options.stack)if(this.doInnerStack&&this.itemSet.options.stackSubgroups){L(n(),i,this.subgroups)}else this.shouldBailStackItems=I(this.visibleItems,i,!0,this._shouldBailItemsRedraw.bind(this));else P(this.visibleItems,i,this.subgroups,this.itemSet.options.stackSubgroups);for(let t=0;t<this.visibleItems.length;t++)this.visibleItems[t].repositionX(),void 0!==this.subgroupVisibility[this.visibleItems[t].data.subgroup]&&(this.subgroupVisibility[this.visibleItems[t].data.subgroup]||this.visibleItems[t].hide());this.itemSet.options.cluster&&T.forEach(this.items,t=>{t.cluster&&t.displayed&&t.hide()}),this.shouldBailStackItems&&this.itemSet.body.emitter.emit("destroyTimeline"),this.stackDirty=!1}}_didResize(t,e){t=T.updateProperty(this,"height",e)||t;const i=this.dom.inner.clientWidth,s=this.dom.inner.clientHeight;return t=T.updateProperty(this.props.label,"width",i)||t,t=T.updateProperty(this.props.label,"height",s)||t}_applyGroupHeight(t){this.dom.background.style.height=`${t}px`,this.dom.foreground.style.height=`${t}px`,this.dom.label.style.height=`${t}px`}_updateItemsVerticalPosition(t){for(let e=0,i=this.visibleItems.length;e<i;e++){const i=this.visibleItems[e];i.repositionY(t),this.isVisible||this.groupId==B||i.displayed&&i.hide()}}redraw(t,e,i,s){let o=!1;const n=this.isVisible;let r;const a=[()=>{i=this._didMarkerHeightChange.call(this)||i},this._updateSubGroupHeights.bind(this,e),this._calculateGroupSizeAndPosition.bind(this),()=>{this.isVisible=this._isGroupVisible.bind(this)(t,e)},()=>{this._redrawItems.bind(this)(i,n,e,t)},this._updateSubgroupsSizes.bind(this),()=>{r=this.height=this._calculateHeight.bind(this)(e)},this._calculateGroupSizeAndPosition.bind(this),()=>{o=this._didResize.bind(this)(o,r)},()=>{this._applyGroupHeight.bind(this)(r)},()=>{this._updateItemsVerticalPosition.bind(this)(e)},()=>(!this.isVisible&&this.height&&(o=!1),o)];if(s)return a;{let t;return a.forEach(e=>{t=e()}),t}}_updateSubGroupHeights(t){if(Object.keys(this.subgroups).length>0){const e=this;this._resetSubgroups(),T.forEach(this.visibleItems,i=>{void 0!==i.data.subgroup&&(e.subgroups[i.data.subgroup].height=Math.max(e.subgroups[i.data.subgroup].height,i.height+t.item.vertical),e.subgroups[i.data.subgroup].visible=void 0===this.subgroupVisibility[i.data.subgroup]||Boolean(this.subgroupVisibility[i.data.subgroup]))})}}_isGroupVisible(t,e){return this.top<=t.body.domProps.centerContainer.height-t.body.domProps.scrollTop+e.axis&&this.top+this.height+e.axis>=-t.body.domProps.scrollTop}_calculateHeight(t){let e,i;if(i="fixed"===this.heightMode?T.toArray(this.items):this.visibleItems,!this.isVisible&&this.height)e=Math.max(this.height,this.props.label.height);else if(i.length>0){let s=i[0].top,o=i[0].top+i[0].height;if(T.forEach(i,t=>{s=Math.min(s,t.top),o=Math.max(o,t.top+t.height)}),s>t.axis){const e=s-t.axis;o-=e,T.forEach(i,t=>{t.top-=e})}e=Math.ceil(o+t.item.vertical/2),"fitItems"!==this.heightMode&&(e=Math.max(e,this.props.label.height))}else e=this.props.label.height;return e}show(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)}hide(){const t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);const e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);const i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);const s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)}add(t){if(this.items[t.id]=t,t.setParent(this),this.stackDirty=!0,void 0!==t.data.subgroup&&(this._addToSubgroup(t),this.orderSubgroups()),!this.visibleItems.includes(t)){const e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}}_addToSubgroup(t,e=t.data.subgroup){null!=e&&void 0===this.subgroups[e]&&(this.subgroups[e]={height:0,top:0,start:t.data.start,end:t.data.end||t.data.start,visible:!1,index:this.subgroupIndex,items:[],stack:this.subgroupStackAll||this.subgroupStack[e]||!1},this.subgroupIndex++),new Date(t.data.start)<new Date(this.subgroups[e].start)&&(this.subgroups[e].start=t.data.start);const i=t.data.end||t.data.start;new Date(i)>new Date(this.subgroups[e].end)&&(this.subgroups[e].end=i),this.subgroups[e].items.push(t)}_updateSubgroupsSizes(){const t=this;if(t.subgroups)for(const e in t.subgroups){if(!Object.prototype.hasOwnProperty.call(t.subgroups,e))continue;const i=t.subgroups[e].items[0].data.end||t.subgroups[e].items[0].data.start;let s=t.subgroups[e].items[0].data.start,o=i-1;t.subgroups[e].items.forEach(t=>{new Date(t.data.start)<new Date(s)&&(s=t.data.start);const e=t.data.end||t.data.start;new Date(e)>new Date(o)&&(o=e)}),t.subgroups[e].start=s,t.subgroups[e].end=new Date(o-1)}}orderSubgroups(){if(void 0!==this.subgroupOrderer){const t=[];if("string"==typeof this.subgroupOrderer){for(const e in this.subgroups)Object.prototype.hasOwnProperty.call(this.subgroups,e)&&t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort((t,e)=>t.sortField-e.sortField)}else if("function"==typeof this.subgroupOrderer){for(const e in this.subgroups)Object.prototype.hasOwnProperty.call(this.subgroups,e)&&t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(let e=0;e<t.length;e++)this.subgroups[t[e].subgroup].index=e}}_resetSubgroups(){for(const t in this.subgroups)Object.prototype.hasOwnProperty.call(this.subgroups,t)&&(this.subgroups[t].visible=!1,this.subgroups[t].height=0)}remove(t){delete this.items[t.id],t.setParent(null),this.stackDirty=!0;const e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1),void 0!==t.data.subgroup&&(this._removeFromSubgroup(t),this.orderSubgroups())}_removeFromSubgroup(t,e=t.data.subgroup){if(null!=e){const i=this.subgroups[e];if(i){const s=i.items.indexOf(t);s>=0&&(i.items.splice(s,1),i.items.length?this._updateSubgroupsSizes():delete this.subgroups[e])}}}removeFromDataSet(t){this.itemSet.removeItem(t.id)}order(){const t=T.toArray(this.items),e=[],i=[];for(let s=0;s<t.length;s++)void 0!==t[s].data.end&&i.push(t[s]),e.push(t[s]);this.orderedItems={byStart:e,byEnd:i},E(this.orderedItems.byStart),M(this.orderedItems.byEnd)}_updateItemsInRange(t,e,i){const s=[],o={};if(!this.isVisible&&void 0!==this.height&&this.groupId!=B){for(let t=0;t<e.length;t++){var n=e[t];n.displayed&&n.hide()}return s}const r=(i.end-i.start)/4,a=i.start-r,h=i.end+r;if(e.length>0)for(let t=0;t<e.length;t++)this._checkIfVisibleWithReference(e[t],s,o,i);const l=T.binarySearchCustom(t.byStart,t=>t<a?-1:t<=h?0:1,"data","start");this._traceVisible(l,t.byStart,s,o,t=>t.data.start<a||t.data.start>h);for(let e=0;e<t.byEnd.length;e++)this._checkIfVisibleWithReference(t.byEnd[e],s,o,i);this._sortVisibleItems(t.byStart,s,o);const d={};let p=0;for(let t=0;t<s.length;t++){const e=s[t];if(!e.displayed){const i=!0;d[t]=e.redraw(i),p=d[t].length}}if(p>0)for(let t=0;t<p;t++)T.forEach(d,e=>{e[t]()});for(let t=0;t<s.length;t++)s[t].repositionX();return s}_traceVisible(t,e,i,s,o){if(-1!=t){for(let n=t;n>=0;n--){let t=e[n];if(o(t))break;t.isCluster&&!t.hasItems()||t.cluster||void 0===s[t.id]&&(s[t.id]=!0,i.unshift(t))}for(let n=t+1;n<e.length;n++){let t=e[n];if(o(t))break;t.isCluster&&!t.hasItems()||t.cluster||void 0===s[t.id]&&(s[t.id]=!0,i.push(t))}}}_sortVisibleItems(t,e,i){e.length=0;for(let s=0;s<t.length;s++){let o=t[s];i[o.id]&&e.push(o)}}_checkIfVisible(t,e,i){t.isVisible(i)?(t.displayed||t.show(),t.repositionX(),e.push(t)):t.displayed&&t.hide()}_checkIfVisibleWithReference(t,e,i,s){t.isVisible(s)?void 0===i[t.id]&&(i[t.id]=!0,e.push(t)):t.displayed&&t.hide()}_updateClustersInRange(t,e,i){const s=[],o={};if(e.length>0)for(let t=0;t<e.length;t++)this._checkIfVisibleWithReference(e[t],s,o,i);for(let e=0;e<t.byStart.length;e++)this._checkIfVisibleWithReference(t.byStart[e],s,o,i);for(let e=0;e<t.byEnd.length;e++)this._checkIfVisibleWithReference(t.byEnd[e],s,o,i);const n={};let r=0;for(let t=0;t<s.length;t++){const e=s[t];if(!e.displayed){const i=!0;n[t]=e.redraw(i),r=n[t].length}}if(r>0)for(var a=0;a<r;a++)T.forEach(n,function(t){t[a]()});for(let t=0;t<s.length;t++)s[t].repositionX();return s}changeSubgroup(t,e,i){this._removeFromSubgroup(t,e),this._addToSubgroup(t,i),this.orderSubgroups()}dispose(){let t;for(this.hide();t=this._disposeCallbacks.pop();)t()}}class $ extends Y{constructor(t,e,i){super(t,e,i),this.width=0,this.height=0,this.top=0,this.left=0}redraw(t,e){this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t),this.width=this.dom.background.offsetWidth,this.dom.background.style.height="0";for(let t=0,i=this.visibleItems.length;t<i;t++){this.visibleItems[t].repositionY(e)}return!1}show(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)}}class W{constructor(){this.options=null,this.props=null}setOptions(t){t&&T.extend(this.options,t)}redraw(){return!1}destroy(){}_isResized(){const t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t}}const V="undefined"!=typeof window&&window.moment||e,U={current:"current",time:"time",deleteSelected:"Delete selected"},X={current:"attuale",time:"tempo",deleteSelected:"Cancella la selezione"},q={current:"huidige",time:"tijd",deleteSelected:"Selectie verwijderen"},K={current:"Aktuelle",time:"Zeit",deleteSelected:"Lösche Auswahl"},J={current:"actuel",time:"heure",deleteSelected:"Effacer la selection"},Z={current:"actual",time:"hora",deleteSelected:"Eliminar selección"},Q={current:"поточний",time:"час",deleteSelected:"Видалити обране"},tt={current:"текущее",time:"время",deleteSelected:"Удалить выбранное"},et={current:"aktualny",time:"czas",deleteSelected:"Usuń wybrane"},it={current:"atual",time:"data",deleteSelected:"Apagar selecionado"},st={current:"güncel",time:"zaman",deleteSelected:"Seçileni sil"},ot={current:"現在",time:"時刻",deleteSelected:"選択されたものを削除"},nt={current:"nuvarande",time:"tid",deleteSelected:"Radera valda"},rt={current:"nåværende",time:"tid",deleteSelected:"Slett valgte"},at={current:"einamas",time:"laikas",deleteSelected:"Pašalinti pasirinktą"},ht={en:U,en_EN:U,en_US:U,it:X,it_IT:X,it_CH:X,nl:q,nl_NL:q,nl_BE:q,de:K,de_DE:K,de_CH:K,fr:J,fr_FR:J,fr_CA:J,fr_BE:J,fr_CH:J,es:Z,es_ES:Z,uk:Q,uk_UA:Q,ru:tt,ru_RU:tt,pl:et,pl_PL:et,pt:it,pt_BR:it,pt_PT:it,tr:st,tr_TR:st,ja:ot,ja_JP:ot,lt:at,lt_LT:at,sv:nt,sv_SE:nt,nb:rt,nn:rt,nb_NO:rt,nn_NO:rt};class lt extends W{constructor(t,e){super(),this.body=t,this.defaultOptions={rtl:!1,showCurrentTime:!0,alignCurrentTime:void 0,moment:V,locales:ht,locale:"en"},this.options=T.extend({},this.defaultOptions),this.setOptions(e),this.options.locales=T.extend({},ht,this.options.locales);const i=this.defaultOptions.locales[this.defaultOptions.locale];Object.keys(this.options.locales).forEach(t=>{this.options.locales[t]=T.extend({},i,this.options.locales[t])}),this.offset=0,this._create()}_create(){const t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t}destroy(){this.options.showCurrentTime=!1,this.redraw(),this.body=null}setOptions(t){t&&T.selectiveExtend(["rtl","showCurrentTime","alignCurrentTime","moment","locale","locales"],this.options,t)}redraw(){if(this.options.showCurrentTime){const t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());let e=this.options.moment(Date.now()+this.offset);this.options.alignCurrentTime&&(e=e.startOf(this.options.alignCurrentTime));const i=this.body.util.toScreen(e);let s=this.options.locales[this.options.locale];s||(this.warned||(console.warn(`WARNING: options.locales['${this.options.locale}'] not found. See https://visjs.github.io/vis-timeline/docs/timeline/#Localization`),this.warned=!0),s=this.options.locales.en);let o=`${s.current} ${s.time}: ${e.format("dddd, MMMM Do YYYY, H:mm:ss")}`;o=o.charAt(0).toUpperCase()+o.substring(1),this.options.rtl?this.bar.style.transform=`translateX(${-1*i}px)`:this.bar.style.transform=`translateX(${i}px)`,this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1}start(){const t=this;!function e(){t.stop();let i=1/t.body.range.conversion(t.body.domProps.center.width).scale/10;i<30&&(i=30),i>1e3&&(i=1e3),t.redraw(),t.body.emitter.emit("currentTimeTick"),t.currentTimeTimer=setTimeout(e,i)}()}stop(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)}setCurrentTime(t){const e=T.convert(t,"Date").valueOf(),i=Date.now();this.offset=e-i,this.redraw()}getCurrentTime(){return new Date(Date.now()+this.offset)}}const dt=function(){if("undefined"!=typeof window){const t=window.Hammer||a;return h(t,{preventDefault:"mouse"})}return function(){return function(){const t=()=>{};return{on:t,off:t,destroy:t,emit:t,get:()=>({set:t})}}()}}();class pt extends W{constructor(t,e){super(),this.body=t,this.defaultOptions={moment:V,locales:ht,locale:"en",id:void 0,title:void 0},this.options=T.extend({},this.defaultOptions),this.setOptions(e),this.options.locales=T.extend({},ht,this.options.locales);const i=this.defaultOptions.locales[this.defaultOptions.locale];Object.keys(this.options.locales).forEach(t=>{this.options.locales[t]=T.extend({},i,this.options.locales[t])}),e&&null!=e.time?this.customTime=e.time:this.customTime=new Date,this.eventParams={},this._create()}setOptions(t){t&&T.selectiveExtend(["moment","locale","locales","id","title","rtl","snap"],this.options,t)}_create(){const t=document.createElement("div");t["custom-time"]=this,t.className=`vis-custom-time ${this.options.id||""}`,t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;const e=document.createElement("div");function i(t){this.body.range._onMouseWheel(t)}e.style.position="relative",e.style.top="0px",this.options.rtl?e.style.right="-10px":e.style.left="-10px",e.style.height="100%",e.style.width="20px",e.addEventListener?(e.addEventListener("mousewheel",i.bind(this),!1),e.addEventListener("DOMMouseScroll",i.bind(this),!1)):e.attachEvent("onmousewheel",i.bind(this)),t.appendChild(e),this.hammer=new dt(e),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.get("pan").set({threshold:5,direction:dt.DIRECTION_ALL}),this.hammer.get("press").set({time:1e4})}destroy(){this.hide(),this.hammer.destroy(),this.hammer=null,this.body=null}redraw(){const t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));const e=this.body.util.toScreen(this.customTime);let i=this.options.locales[this.options.locale];i||(this.warned||(console.warn(`WARNING: options.locales['${this.options.locale}'] not found. See https://visjs.github.io/vis-timeline/docs/timeline/#Localization`),this.warned=!0),i=this.options.locales.en);let s=this.options.title;return void 0===s?(s=`${i.time}: ${this.options.moment(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss")}`,s=s.charAt(0).toUpperCase()+s.substring(1)):"function"==typeof s&&(s=s.call(this,this.customTime)),this.options.rtl?this.bar.style.right=`${e}px`:this.bar.style.left=`${e}px`,this.bar.title=s,!1}hide(){this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar)}setCustomTime(t){this.customTime=T.convert(t,"Date"),this.redraw()}getCustomTime(){return new Date(this.customTime.valueOf())}setCustomMarker(t,e){this.marker&&this.bar.removeChild(this.marker),this.marker=document.createElement("div"),this.marker.className="vis-custom-time-marker",this.marker.innerHTML=T.xss(t),this.marker.style.position="absolute",e&&(this.marker.setAttribute("contenteditable","true"),this.marker.addEventListener("pointerdown",()=>{this.marker.focus()}),this.marker.addEventListener("input",this._onMarkerChange.bind(this)),this.marker.title=t,this.marker.addEventListener("blur",t=>{this.title!=t.target.innerHTML&&(this._onMarkerChanged(t),this.title=t.target.innerHTML)})),this.bar.appendChild(this.marker)}setCustomTitle(t){this.options.title=t}_onDragStart(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation()}_onDrag(t){if(!this.eventParams.dragging)return;let e=this.options.rtl?-1*t.deltaX:t.deltaX;const i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i),o=this.body.util.getScale(),n=this.body.util.getStep(),r=this.options.snap,a=r?r(s,o,n):s;this.setCustomTime(a),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf()),event:t}),t.stopPropagation()}_onDragEnd(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf()),event:t}),t.stopPropagation())}_onMarkerChange(t){this.body.emitter.emit("markerchange",{id:this.options.id,title:t.target.innerHTML,event:t}),t.stopPropagation()}_onMarkerChanged(t){this.body.emitter.emit("markerchanged",{id:this.options.id,title:t.target.innerHTML,event:t}),t.stopPropagation()}static customTimeFromTarget(t){let e=t.target;for(;e;){if(Object.prototype.hasOwnProperty.call(e,"custom-time"))return e["custom-time"];e=e.parentNode}return null}}class mt{constructor(t,e,i,s,o,n,r=!1,a=!1){if(this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.customLines=null,this.containerHeight=o,this.majorCharHeight=n,this._start=t,this._end=e,this.scale=1,this.minorStepIdx=-1,this.magnitudefactor=1,this.determineScale(),this.zeroAlign=r,this.autoScaleStart=i,this.autoScaleEnd=s,this.formattingFunction=a,i||s){const t=this,e=e=>{const i=e-e%(t.magnitudefactor*t.minorSteps[t.minorStepIdx]);return e%(t.magnitudefactor*t.minorSteps[t.minorStepIdx])>t.magnitudefactor*t.minorSteps[t.minorStepIdx]*.5?i+t.magnitudefactor*t.minorSteps[t.minorStepIdx]:i};i&&(this._start-=2*this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._start=e(this._start)),s&&(this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._end=e(this._end)),this.determineScale()}}setCharHeight(t){this.majorCharHeight=t}setHeight(t){this.containerHeight=t}determineScale(){const t=this._end-this._start;this.scale=this.containerHeight/t;const e=this.majorCharHeight/this.scale,i=t>0?Math.round(Math.log(t)/Math.LN10):0;this.minorStepIdx=-1,this.magnitudefactor=Math.pow(10,i);let s=0;i<0&&(s=i);let o=!1;for(let t=s;Math.abs(t)<=Math.abs(i);t++){this.magnitudefactor=Math.pow(10,t);for(let t=0;t<this.minorSteps.length;t++){if(this.magnitudefactor*this.minorSteps[t]>=e){o=!0,this.minorStepIdx=t;break}}if(!0===o)break}}is_major(t){return t%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])===0}getStep(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]}getFirstMajor(){const t=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(t-this._start%t)%t)}formatValue(t){let e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?`${e}`:"string"==typeof e?e:t.toPrecision(5)}getLines(){const t=[],e=this.getStep(),i=(e-this._start%e)%e;for(let s=this._start+i;this._end-s>1e-5;s+=e)s!=this._start&&t.push({major:this.is_major(s),y:this.convertValue(s),val:this.formatValue(s)});return t}followScale(t){const e=this.minorStepIdx,i=this._start,s=this._end,o=this,n=()=>{o.magnitudefactor*=2},r=()=>{o.magnitudefactor/=2};t.minorStepIdx<=1&&this.minorStepIdx<=1||t.minorStepIdx>1&&this.minorStepIdx>1||(t.minorStepIdx<this.minorStepIdx?(this.minorStepIdx=1,2==e||n(),n()):(this.minorStepIdx=2,1==e||r(),r()));const a=t.convertValue(0),h=t.getStep()*t.scale;let l=!1,d=0;for(;!l&&d++<5;){this.scale=h/(this.minorSteps[this.minorStepIdx]*this.magnitudefactor);const e=this.containerHeight/this.scale;this._start=i,this._end=this._start+e;const o=this._end*this.scale,d=this.magnitudefactor*this.majorSteps[this.minorStepIdx],p=this.getFirstMajor()-t.getFirstMajor();if(this.zeroAlign){const t=a-o;this._end+=t/this.scale,this._start=this._end-e}else this.autoScaleStart?(this._start-=p/this.scale,this._end=this._start+e):(this._start+=d-p/this.scale,this._end=this._start+e);if(!this.autoScaleEnd&&this._end>s+1e-5)r(),l=!1;else{if(!this.autoScaleStart&&this._start<i-1e-5){if(!(this.zeroAlign&&i>=0)){r(),l=!1;continue}console.warn("Can't adhere to given 'min' range, due to zeroalign")}this.autoScaleStart&&this.autoScaleEnd&&e<s-i?(n(),l=!1):l=!0}}}convertValue(t){return this.containerHeight-(t-this._start)*this.scale}screenToValue(t){return(this.containerHeight-t)/this.scale+this._start}}class ct extends W{constructor(t,e,i,s){super(),this.id=r.v4(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,showWeekScale:!1,icons:!1,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,left:{range:{min:void 0,max:void 0},format:t=>`${parseFloat(t.toPrecision(3))}`,title:{text:void 0,style:void 0}},right:{range:{min:void 0,max:void 0},format:t=>`${parseFloat(t.toPrecision(3))}`,title:{text:void 0,style:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.scale=void 0,this.range={start:0,end:0},this.options=T.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number(`${this.options.width}`.replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.getBoundingClientRect().height,this.hidden=!1,this.stepPixels=25,this.zeroCrossing=-1,this.amountOfSteps=-1,this.lineOffset=0,this.master=!0,this.masterAxis=null,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create(),null==this.scale&&this._redrawLabels(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups};const o=this;this.body.emitter.on("verticalDrag",()=>{o.dom.lineContainer.style.top=`${o.body.domProps.scrollTop}px`})}addGroup(t,e){Object.prototype.hasOwnProperty.call(this.groups,t)||(this.groups[t]=e),this.amountOfGroups+=1}updateGroup(t,e){Object.prototype.hasOwnProperty.call(this.groups,t)||(this.amountOfGroups+=1),this.groups[t]=e}removeGroup(t){Object.prototype.hasOwnProperty.call(this.groups,t)&&(delete this.groups[t],this.amountOfGroups-=1)}setOptions(t){if(t){let e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);const i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","left","right","alignZeros"];T.selectiveDeepExtend(i,this.options,t),this.minWidth=Number(`${this.options.width}`.replace("px","")),!0===e&&this.dom.frame&&(this.hide(),this.show())}}_create(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.dom.lineContainer.style.visibility="visible",this.dom.lineContainer.style.display="block",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)}_redrawGroupIcons(){let t;c(this.svgElements);const e=this.options.iconWidth;let i=11.5;t="left"===this.options.orientation?4:this.width-e-4;const s=Object.keys(this.groups);s.sort((t,e)=>t<e?-1:1);for(const o of s)!0!==this.groups[o].visible||void 0!==this.linegraphOptions.visibility[o]&&!0!==this.linegraphOptions.visibility[o]||(this.groups[o].getLegend(e,15,this.framework,t,i),i+=19);u(this.svgElements),this.iconsRemoved=!1}_cleanupIcons(){!1===this.iconsRemoved&&(c(this.svgElements),u(this.svgElements),this.iconsRemoved=!0)}show(){this.hidden=!1,this.dom.frame.parentNode||("left"===this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer),this.dom.lineContainer.style.display="block"}hide(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.style.display="none"}setRange(t,e){this.range.start=t,this.range.end=e}redraw(){let t=!1,e=0;this.dom.lineContainer.style.top=`${this.body.domProps.scrollTop}px`;for(const t in this.groups)Object.prototype.hasOwnProperty.call(this.groups,t)&&(!0!==this.groups[t].visible||void 0!==this.linegraphOptions.visibility[t]&&!0!==this.linegraphOptions.visibility[t]||e++);if(0===this.amountOfGroups||0===e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=`${this.height}px`,this.width=!0===this.options.visible?Number(`${this.options.width}`.replace("px","")):0;const e=this.props,i=this.dom.frame;i.className="vis-data-axis",this._calculateCharSize();const s=this.options.orientation,o=this.options.showMinorLabels,n=this.options.showMajorLabels,r=this.body.dom.backgroundHorizontal.offsetWidth;e.minorLabelHeight=o?e.minorCharHeight:0,e.majorLabelHeight=n?e.majorCharHeight:0,e.minorLineWidth=r-this.lineOffset-this.width+2*this.options.minorLinesOffset,e.minorLineHeight=1,e.majorLineWidth=r-this.lineOffset-this.width+2*this.options.majorLinesOffset,e.majorLineHeight=1,"left"===s?(i.style.top="0",i.style.left="0",i.style.bottom="",i.style.width=`${this.width}px`,i.style.height=`${this.height}px`,this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(i.style.top="",i.style.bottom="0",i.style.left="0",i.style.width=`${this.width}px`,i.style.height=`${this.height}px`,this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,!0===this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(s)}return t}_redrawLabels(){let t=!1;c(this.DOMelements.lines),c(this.DOMelements.labels);const e=this.options.orientation,i=null!=this.options[e].range?this.options[e].range:{};let s=!0;null!=i.max&&(this.range.end=i.max,s=!1);let o=!0;null!=i.min&&(this.range.start=i.min,o=!1),this.scale=new mt(this.range.start,this.range.end,o,s,this.dom.frame.offsetHeight,this.props.majorCharHeight,this.options.alignZeros,this.options[e].format),!1===this.master&&null!=this.masterAxis?(this.scale.followScale(this.masterAxis.scale),this.dom.lineContainer.style.display="none"):this.dom.lineContainer.style.display="block",this.maxLabelSize=0;this.scale.getLines().forEach(t=>{const i=t.y,s=t.major;this.options.showMinorLabels&&!1===s&&this._redrawLabel(i-2,t.val,e,"vis-y-axis vis-minor",this.props.minorCharHeight),s&&i>=0&&this._redrawLabel(i-2,t.val,e,"vis-y-axis vis-major",this.props.majorCharHeight),!0===this.master&&(s?this._redrawLine(i,e,"vis-grid vis-horizontal vis-major",this.options.majorLinesOffset,this.props.majorLineWidth):this._redrawLine(i,e,"vis-grid vis-horizontal vis-minor",this.options.minorLinesOffset,this.props.minorLineWidth))});let n=0;void 0!==this.options[e].title&&void 0!==this.options[e].title.text&&(n=this.props.titleCharHeight);const r=!0===this.options.icons?Math.max(this.options.iconWidth,n)+this.options.labelOffsetX+15:n+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-r&&!0===this.options.visible?(this.width=this.maxLabelSize+r,this.options.width=`${this.width}px`,u(this.DOMelements.lines),u(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSize<this.width-r&&!0===this.options.visible&&this.width>this.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+r),this.options.width=`${this.width}px`,u(this.DOMelements.lines),u(this.DOMelements.labels),this.redraw(),t=!0):(u(this.DOMelements.lines),u(this.DOMelements.labels),t=!1),t}convertValue(t){return this.scale.convertValue(t)}screenToValue(t){return this.scale.screenToValue(t)}_redrawLabel(t,e,i,s,o){const n=f("div",this.DOMelements.labels,this.dom.frame);n.className=s,n.innerHTML=T.xss(e),"left"===i?(n.style.left=`-${this.options.labelOffsetX}px`,n.style.textAlign="right"):(n.style.right=`-${this.options.labelOffsetX}px`,n.style.textAlign="left"),n.style.top=`${t-.5*o+this.options.labelOffsetY}px`,e+="";const r=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize<e.length*r&&(this.maxLabelSize=e.length*r)}_redrawLine(t,e,i,s,o){if(!0===this.master){const n=f("div",this.DOMelements.lines,this.dom.lineContainer);n.className=i,n.innerHTML="","left"===e?n.style.left=this.width-s+"px":n.style.right=this.width-s+"px",n.style.width=`${o}px`,n.style.top=`${t}px`}}_redrawTitle(t){if(c(this.DOMelements.title),void 0!==this.options[t].title&&void 0!==this.options[t].title.text){const e=f("div",this.DOMelements.title,this.dom.frame);e.className=`vis-y-axis vis-title vis-${t}`,e.innerHTML=T.xss(this.options[t].title.text),void 0!==this.options[t].title.style&&T.addCssText(e,this.options[t].title.style),"left"===t?e.style.left=`${this.props.titleCharHeight}px`:e.style.right=`${this.props.titleCharHeight}px`,e.style.width=`${this.height}px`}u(this.DOMelements.title)}_calculateCharSize(){if(!("minorCharHeight"in this.props)){const t=document.createTextNode("0"),e=document.createElement("div");e.className="vis-y-axis vis-minor vis-measure",e.appendChild(t),this.dom.frame.appendChild(e),this.props.minorCharHeight=e.clientHeight,this.props.minorCharWidth=e.clientWidth,this.dom.frame.removeChild(e)}if(!("majorCharHeight"in this.props)){const t=document.createTextNode("0"),e=document.createElement("div");e.className="vis-y-axis vis-major vis-measure",e.appendChild(t),this.dom.frame.appendChild(e),this.props.majorCharHeight=e.clientHeight,this.props.majorCharWidth=e.clientWidth,this.dom.frame.removeChild(e)}if(!("titleCharHeight"in this.props)){const t=document.createTextNode("0"),e=document.createElement("div");e.className="vis-y-axis vis-title vis-measure",e.appendChild(t),this.dom.frame.appendChild(e),this.props.titleCharHeight=e.clientHeight,this.props.titleCharWidth=e.clientWidth,this.dom.frame.removeChild(e)}}}function ut(){}function gt(t,e){return{style:(e=void 0===e?{}:e).style||t.options.drawPoints.style,styles:e.styles||t.options.drawPoints.styles,size:e.size||t.options.drawPoints.size,className:e.className||t.className}}function ft(){}function bt(){}function yt(t,e,i,s){this.id=e;this.options=T.selectiveBridgeObject(["sampling","style","sort","yAxisOrientation","barChart","drawPoints","shaded","interpolation","zIndex","excludeFromStacking","excludeFromLegend"],i),this.usingDefaultStyle=void 0===t.className,this.groupsUsingDefaultStyles=s,this.zeroPosition=0,this.update(t),1==this.usingDefaultStyle&&(this.groupsUsingDefaultStyles[0]+=1),this.itemsData=[],this.visible=void 0===t.visible||t.visible}ut.draw=function(t,e,i,s){s=s||0;for(var o=function(t,e){var i=void 0;t.options&&t.options.drawPoints&&t.options.drawPoints.onRender&&"function"==typeof t.options.drawPoints.onRender&&(i=t.options.drawPoints.onRender);e.group.options&&e.group.options.drawPoints&&e.group.options.drawPoints.onRender&&"function"==typeof e.group.options.drawPoints.onRender&&(i=e.group.options.drawPoints.onRender);return i}(i,e),n=0;n<t.length;n++)if(o){var r=o(t[n],e);!0!==r&&"object"!=typeof r||b(t[n].screen_x+s,t[n].screen_y,gt(e,r),i.svgElements,i.svg,t[n].label)}else b(t[n].screen_x+s,t[n].screen_y,gt(e),i.svgElements,i.svg,t[n].label)},ut.drawIcon=function(t,e,i,s,o,n){var r=.5*o,a=g("rect",n.svgElements,n.svg);a.setAttributeNS(null,"x",e),a.setAttributeNS(null,"y",i-r),a.setAttributeNS(null,"width",s),a.setAttributeNS(null,"height",2*r),a.setAttributeNS(null,"class","vis-outline"),b(e+.5*s,i,gt(t),n.svgElements,n.svg)},ft.drawIcon=function(t,e,i,s,o,n){var r=.5*o,a=g("rect",n.svgElements,n.svg);a.setAttributeNS(null,"x",e),a.setAttributeNS(null,"y",i-r),a.setAttributeNS(null,"width",s),a.setAttributeNS(null,"height",2*r),a.setAttributeNS(null,"class","vis-outline");var h=Math.round(.3*s),l=t.options.barChart.width/h,d=Math.round(.4*o),p=Math.round(.75*o),m=Math.round((s-2*h)/3);if(y(e+.5*h+m,i+r-d-1,h,d,t.className+" vis-bar",n.svgElements,n.svg,t.style),y(e+1.5*h+m+2,i+r-p-1,h,p,t.className+" vis-bar",n.svgElements,n.svg,t.style),1==t.options.drawPoints.enabled){var c={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size/l,className:t.className};b(e+.5*h+m,i+r-d-1,c,n.svgElements,n.svg),b(e+1.5*h+m+2,i+r-p-1,c,n.svgElements,n.svg)}},ft.draw=function(t,e,i){var s,o,n,r,a,h,l=[],d={},p=0;for(a=0;a<t.length;a++)if("bar"===(r=i.groups[t[a]]).options.style&&!0===r.visible&&(void 0===i.options.groups.visibility[t[a]]||!0===i.options.groups.visibility[t[a]]))for(h=0;h<e[t[a]].length;h++)l.push({screen_x:e[t[a]][h].screen_x,screen_end:e[t[a]][h].screen_end,screen_y:e[t[a]][h].screen_y,x:e[t[a]][h].x,end:e[t[a]][h].end,y:e[t[a]][h].y,groupId:t[a],label:e[t[a]][h].label}),p+=1;if(0!==p)for(l.sort(function(t,e){return t.screen_x===e.screen_x?t.groupId<e.groupId?-1:1:t.screen_x-e.screen_x}),ft._getDataIntersections(d,l),a=0;a<l.length;a++){var m=null!=(r=i.groups[l[a].groupId]).options.barChart.minWidth?r.options.barChart.minWidth:.1*r.options.barChart.width,c=0;if(void 0===d[o=l[a].screen_x])a+1<l.length&&(s=Math.abs(l[a+1].screen_x-o)),n=ft._getSafeDrawData(s,r,m);else{var u=a+(d[o].amount-d[o].resolved);u<l.length&&(s=Math.abs(l[u].screen_x-o)),n=ft._getSafeDrawData(s,r,m),d[o].resolved+=1,!0===r.options.stack&&!0!==r.options.excludeFromStacking?l[