diff --git a/dist/vis-graph3d.min.js b/dist/vis-graph3d.min.js index cd4c0aa9..ffe77e41 100644 --- a/dist/vis-graph3d.min.js +++ b/dist/vis-graph3d.min.js @@ -4,11 +4,11 @@ * * A dynamic, browser-based visualization library. * - * @version 4.18.1 - * @date 2017-01-29 + * @version 4.19.0 + * @date 2017-03-18 * * @license - * Copyright (C) 2011-2016 Almende B.V, http://almende.com + * Copyright (C) 2011-2017 Almende B.V, http://almende.com * * Vis.js is dual licensed under both * @@ -22,13 +22,13 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return t[i].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){e.util=n(1),e.DOMutil=n(89),e.DataSet=n(90),e.DataView=n(92),e.Queue=n(91),e.Graph3d=n(93),e.graph3d={Camera:n(97),Filter:n(102),Point2d:n(96),Point3d:n(95),Slider:n(103),StepNumber:n(104)},e.moment=n(84),e.Hammer=n(107),e.keycharm=n(110)},function(t,e,n){function i(t){return t&&t.__esModule?t:{default:t}}var r=n(2),o=i(r),s=n(55),a=i(s),h=n(58),u=i(h),l=n(62),c=i(l),f=n(82),d=i(f),p=n(84),m=n(88);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.elementsCensor=function(t){if(t){var e=function(t,e){return e instanceof Element?"DOM Element":e};return JSON.parse((0,d.default)(t,e))}},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,n,i){if(e==t)return.5;var r=1/(e-t);return Math.max(0,(i-t)*r)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var n=v.exec(t);if(n)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return m.v4()},e.assignAllKeys=function(t,e){for(var n in t)t.hasOwnProperty(n)&&"object"!==(0,c.default)(t[n])&&(t[n]=e)},e.fillIfDefined=function(t,n){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var r in t)void 0!==n[r]&&("object"!==(0,c.default)(n[r])?void 0!==n[r]&&null!==n[r]||void 0===t[r]||i!==!0?t[r]=n[r]:delete t[r]:"object"===(0,c.default)(t[r])&&e.fillIfDefined(t[r],n[r],i))},e.protoExtend=function(t,e){for(var n=1;n3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(i))throw new TypeError("Arrays are not supported by deepExtend");for(var o=2;o3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(i))throw new TypeError("Arrays are not supported by deepExtend");for(var o in i)if(i.hasOwnProperty(o)&&t.indexOf(o)==-1)if(i[o]&&i[o].constructor===Object)void 0===n[o]&&(n[o]={}),n[o].constructor===Object?e.deepExtend(n[o],i[o]):null===i[o]&&void 0!==n[o]&&r===!0?delete n[o]:n[o]=i[o];else if(Array.isArray(i[o])){n[o]=[];for(var s=0;s=0&&(e="DOMMouseScroll"),t.addEventListener(e,n,i)):t.attachEvent("on"+e,n)},e.removeEventListener=function(t,e,n,i){t.removeEventListener?(void 0===i&&(i=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,n,i)):t.detachEvent("on"+e,n)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var n=t;n;){if(n===e)return!0;n=n.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,n){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":n||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,n,i){return e+e+n+n+i+i});var n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return n?{r:parseInt(n[1],16),g:parseInt(n[2],16),b:parseInt(n[3],16)}:null},e.overrideOpacity=function(t,n){if(t.indexOf("rgba")!=-1)return t;if(t.indexOf("rgb")!=-1){var i=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+i[0]+","+i[1]+","+i[2]+","+n+")"}var i=e.hexToRGB(t);return null==i?t:"rgba("+i.r+","+i.g+","+i.b+","+n+")"},e.RGBToHex=function(t,e,n){return"#"+((1<<24)+(t<<16)+(e<<8)+n).toString(16).slice(1)},e.parseColor=function(t){var n;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var i=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(i[0],i[1],i[2])}if(e.isValidHex(t)===!0){var r=e.hexToHSV(t),o={h:r.h,s:.8*r.s,v:Math.min(1,1.02*r.v)},s={h:r.h,s:Math.min(1,1.25*r.s),v:.8*r.v},a=e.HSVToHex(s.h,s.s,s.v),h=e.HSVToHex(o.h,o.s,o.v);n={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else n={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else n={},n.background=t.background||void 0,n.border=t.border||void 0,e.isString(t.highlight)?n.highlight={border:t.highlight,background:t.highlight}:(n.highlight={},n.highlight.background=t.highlight&&t.highlight.background||void 0,n.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?n.hover={border:t.hover,background:t.hover}:(n.hover={},n.hover.background=t.hover&&t.hover.background||void 0,n.hover.border=t.hover&&t.hover.border||void 0);return n},e.RGBToHSV=function(t,e,n){t/=255,e/=255,n/=255;var i=Math.min(t,Math.min(e,n)),r=Math.max(t,Math.max(e,n));if(i==r)return{h:0,s:0,v:i};var o=t==i?e-n:n==i?t-e:n-t,s=t==i?3:n==i?1:5,a=60*(s-o/(r-i))/360,h=(r-i)/r,u=r;return{h:a,s:h,v:u}};var y={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var n=t.split(":"),i=n[0].trim(),r=n[1].trim();e[i]=r}}),e},join:function(t){return(0,u.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,n){var i=y.split(t.style.cssText),r=y.split(n),o=e.extend(i,r);t.style.cssText=y.join(o)},e.removeCssText=function(t,e){var n=y.split(t.style.cssText),i=y.split(e);for(var r in i)i.hasOwnProperty(r)&&delete n[r];t.style.cssText=y.join(n)},e.HSVToRGB=function(t,e,n){var i,r,o,s=Math.floor(6*t),a=6*t-s,h=n*(1-e),u=n*(1-a*e),l=n*(1-(1-a)*e);switch(s%6){case 0:i=n,r=l,o=h;break;case 1:i=u,r=n,o=h;break;case 2:i=h,r=n,o=l;break;case 3:i=h,r=u,o=n;break;case 4:i=l,r=h,o=n;break;case 5:i=n,r=h,o=u}return{r:Math.floor(255*i),g:Math.floor(255*r),b:Math.floor(255*o)}},e.HSVToHex=function(t,n,i){var r=e.HSVToRGB(t,n,i);return e.RGBToHex(r.r,r.g,r.b)},e.hexToHSV=function(t){var n=e.hexToRGB(t);return e.RGBToHSV(n.r,n.g,n.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,n){if("object"==("undefined"==typeof n?"undefined":(0,c.default)(n))){for(var i=(0,a.default)(n),r=0;r0&&e(i,t[r-1])<0;r--)t[r]=t[r-1];t[r]=i}return t},e.mergeOptions=function(t,e,n){var i=(arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{});if(null===e[n])t[n]=(0,a.default)(i[n]);else if(void 0!==e[n])if("boolean"==typeof e[n])t[n].enabled=e[n];else{void 0===e[n].enabled&&(t[n].enabled=!0);for(var r in e[n])e[n].hasOwnProperty(r)&&(t[n][r]=e[n][r])}},e.binarySearchCustom=function(t,e,n,i){for(var r=1e4,o=0,s=0,a=t.length-1;s<=a&&o0)return"before"==i?Math.max(0,h-1):h;if(r(s,e)<0&&r(a,e)>0)return"before"==i?h:Math.min(t.length-1,h+1);r(s,e)<0?c=h+1:f=h-1,l++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;return n==i&&(i=e.clientWidth),document.body.removeChild(e),n-i},e.topMost=function(t,e){var n=void 0;Array.isArray(e)||(e=[e]);var i=!0,r=!1,s=void 0;try{for(var a,h=(0,o.default)(t);!(i=(a=h.next()).done);i=!0){var u=a.value;if(u){n=u[e[0]];for(var l=1;l=t.length?(this._t=void 0,r(1)):"keys"==e?r(0,n):"values"==e?r(0,t[n]):r(0,[n,t[n]])},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,n){var i=n(10),r=n(12);t.exports=function(t){return i(r(t))}},function(t,e,n){var i=n(11);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==i(t)?t.split(""):Object(t)}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var i=n(14),r=n(15),o=n(30),s=n(20),a=n(31),h=n(8),u=n(32),l=n(46),c=n(48),f=n(47)("iterator"),d=!([].keys&&"next"in[].keys()),p="@@iterator",m="keys",v="values",y=function(){return this};t.exports=function(t,e,n,g,_,w,x){u(n,e,g);var b,S,T,D=function(t){if(!d&&t in E)return E[t];switch(t){case m:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},M=e+" Iterator",k=_==v,O=!1,E=t.prototype,C=E[f]||E[p]||_&&E[_],P=C||D(_),L=_?k?D("entries"):P:void 0,Y="Array"==e?E.entries||C:C;if(Y&&(T=c(Y.call(new t)),T!==Object.prototype&&(l(T,M,!0),i||a(T,f)||s(T,f,y))),k&&C&&C.name!==v&&(O=!0,P=function(){return C.call(this)}),i&&!x||!d&&!O&&E[f]||s(E,f,P),h[e]=P,h[M]=y,_)if(b={values:k?P:D(v),keys:w?P:D(m),entries:L},x)for(S in b)S in E||o(E,S,b[S]);else r(r.P+r.F*(d||O),e,b);return b}},function(t,e){t.exports=!0},function(t,e,n){var i=n(16),r=n(17),o=n(18),s=n(20),a="prototype",h=function(t,e,n){var u,l,c,f=t&h.F,d=t&h.G,p=t&h.S,m=t&h.P,v=t&h.B,y=t&h.W,g=d?r:r[e]||(r[e]={}),_=g[a],w=d?i:p?i[e]:(i[e]||{})[a];d&&(n=e);for(u in n)l=!f&&w&&void 0!==w[u],l&&u in g||(c=l?w[u]:n[u],g[u]=d&&"function"!=typeof w[u]?n[u]:v&&l?o(c,i):y&&w[u]==c?function(t){var e=function(e,n,i){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,i)}return t.apply(this,arguments)};return e[a]=t[a],e}(c):m&&"function"==typeof c?o(Function.call,c):c,m&&((g.virtual||(g.virtual={}))[u]=c,t&h.R&&_&&!_[u]&&s(_,u,c)))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},function(t,e,n){var i=n(19);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,r){return t.call(e,n,i,r)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){var i=n(21),r=n(29);t.exports=n(25)?function(t,e,n){return i.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var i=n(22),r=n(24),o=n(28),s=Object.defineProperty;e.f=n(25)?Object.defineProperty:function(t,e,n){if(i(t),e=o(e,!0),i(n),r)try{return s(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var i=n(23);t.exports=function(t){if(!i(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){t.exports=!n(25)&&!n(26)(function(){return 7!=Object.defineProperty(n(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){t.exports=!n(26)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var i=n(23),r=n(16).document,o=i(r)&&i(r.createElement);t.exports=function(t){return o?r.createElement(t):{}}},function(t,e,n){var i=n(23);t.exports=function(t,e){if(!i(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!i(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){t.exports=n(20)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var i=n(33),r=n(29),o=n(46),s={};n(20)(s,n(47)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=i(s,{next:r(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var i=n(22),r=n(34),o=n(44),s=n(41)("IE_PROTO"),a=function(){},h="prototype",u=function(){var t,e=n(27)("iframe"),i=o.length,r="<",s=">";for(e.style.display="none",n(45).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(r+"script"+s+"document.F=Object"+r+"/script"+s),t.close(),u=t.F;i--;)delete u[h][o[i]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(a[h]=i(t),n=new a,a[h]=null,n[s]=t):n=u(),void 0===e?n:r(n,e)}},function(t,e,n){var i=n(21),r=n(22),o=n(35);t.exports=n(25)?Object.defineProperties:function(t,e){r(t);for(var n,s=o(e),a=s.length,h=0;a>h;)i.f(t,n=s[h++],e[n]);return t}},function(t,e,n){var i=n(36),r=n(44);t.exports=Object.keys||function(t){return i(t,r)}},function(t,e,n){var i=n(31),r=n(9),o=n(37)(!1),s=n(41)("IE_PROTO");t.exports=function(t,e){var n,a=r(t),h=0,u=[];for(n in a)n!=s&&i(a,n)&&u.push(n);for(;e.length>h;)i(a,n=e[h++])&&(~o(u,n)||u.push(n));return u}},function(t,e,n){var i=n(9),r=n(38),o=n(40);t.exports=function(t){return function(e,n,s){var a,h=i(e),u=r(h.length),l=o(s,u);if(t&&n!=n){for(;u>l;)if(a=h[l++],a!=a)return!0}else for(;u>l;l++)if((t||l in h)&&h[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var i=n(39),r=Math.min;t.exports=function(t){return t>0?r(i(t),9007199254740991):0}},function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},function(t,e,n){var i=n(39),r=Math.max,o=Math.min;t.exports=function(t,e){return t=i(t),t<0?r(t+e,0):o(t,e)}},function(t,e,n){var i=n(42)("keys"),r=n(43);t.exports=function(t){return i[t]||(i[t]=r(t))}},function(t,e,n){var i=n(16),r="__core-js_shared__",o=i[r]||(i[r]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e){var n=0,i=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+i).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){t.exports=n(16).document&&document.documentElement},function(t,e,n){var i=n(21).f,r=n(31),o=n(47)("toStringTag");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,o)&&i(t,o,{configurable:!0,value:e})}},function(t,e,n){var i=n(42)("wks"),r=n(43),o=n(16).Symbol,s="function"==typeof o,a=t.exports=function(t){return i[t]||(i[t]=s&&o[t]||(s?o:r)("Symbol."+t))};a.store=i},function(t,e,n){var i=n(31),r=n(49),o=n(41)("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),i(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},function(t,e,n){var i=n(12);t.exports=function(t){return Object(i(t))}},function(t,e,n){var i=n(51)(!0);n(13)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=i(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var i=n(39),r=n(12);t.exports=function(t){return function(e,n){var o,s,a=String(r(e)),h=i(n),u=a.length;return h<0||h>=u?t?"":void 0:(o=a.charCodeAt(h),o<55296||o>56319||h+1===u||(s=a.charCodeAt(h+1))<56320||s>57343?t?a.charAt(h):o:t?a.slice(h,h+2):(o-55296<<10)+(s-56320)+65536)}}},function(t,e,n){var i=n(22),r=n(53);t.exports=n(17).getIterator=function(t){var e=r(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return i(e.call(t))}},function(t,e,n){var i=n(54),r=n(47)("iterator"),o=n(8);t.exports=n(17).getIteratorMethod=function(t){if(void 0!=t)return t[r]||t["@@iterator"]||o[i(t)]}},function(t,e,n){var i=n(11),r=n(47)("toStringTag"),o="Arguments"==i(function(){return arguments}()),s=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=s(e=Object(t),r))?n:o?i(e):"Object"==(a=i(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,n){t.exports={default:n(56),__esModule:!0}},function(t,e,n){n(57);var i=n(17).Object;t.exports=function(t,e){return i.create(t,e)}},function(t,e,n){var i=n(15);i(i.S,"Object",{create:n(33)})},function(t,e,n){t.exports={default:n(59),__esModule:!0}},function(t,e,n){n(60),t.exports=n(17).Object.keys},function(t,e,n){var i=n(49),r=n(35);n(61)("keys",function(){return function(t){return r(i(t))}})},function(t,e,n){var i=n(15),r=n(17),o=n(26);t.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],s={};s[t]=e(n),i(i.S+i.F*o(function(){n(1)}),"Object",s)}},function(t,e,n){function i(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var r=n(63),o=i(r),s=n(66),a=i(s),h="function"==typeof a.default&&"symbol"==typeof o.default?function(t){return typeof t}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":typeof t};e.default="function"==typeof a.default&&"symbol"===h(o.default)?function(t){return"undefined"==typeof t?"undefined":h(t)}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":"undefined"==typeof t?"undefined":h(t)}},function(t,e,n){t.exports={default:n(64),__esModule:!0}},function(t,e,n){n(50),n(4),t.exports=n(65).f("iterator")},function(t,e,n){e.f=n(47)},function(t,e,n){t.exports={default:n(67),__esModule:!0}},function(t,e,n){n(68),n(79),n(80),n(81),t.exports=n(17).Symbol},function(t,e,n){var i=n(16),r=n(31),o=n(25),s=n(15),a=n(30),h=n(69).KEY,u=n(26),l=n(42),c=n(46),f=n(43),d=n(47),p=n(65),m=n(70),v=n(71),y=n(72),g=n(75),_=n(22),w=n(9),x=n(28),b=n(29),S=n(33),T=n(76),D=n(78),M=n(21),k=n(35),O=D.f,E=M.f,C=T.f,P=i.Symbol,L=i.JSON,Y=L&&L.stringify,R="prototype",A=d("_hidden"),I=d("toPrimitive"),N={}.propertyIsEnumerable,W=l("symbol-registry"),z=l("symbols"),F=l("op-symbols"),j=Object[R],G="function"==typeof P,B=i.QObject,V=!B||!B[R]||!B[R].findChild,U=o&&u(function(){return 7!=S(E({},"a",{get:function(){return E(this,"a",{value:7}).a}})).a})?function(t,e,n){var i=O(j,e);i&&delete j[e],E(t,e,n),i&&t!==j&&E(j,e,i)}:E,H=function(t){var e=z[t]=S(P[R]);return e._k=t,e},X=G&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},Z=function(t,e,n){return t===j&&Z(F,e,n),_(t),e=x(e,!0),_(n),r(z,e)?(n.enumerable?(r(t,A)&&t[A][e]&&(t[A][e]=!1),n=S(n,{enumerable:b(0,!1)})):(r(t,A)||E(t,A,b(1,{})),t[A][e]=!0),U(t,e,n)):E(t,e,n)},q=function(t,e){_(t);for(var n,i=y(e=w(e)),r=0,o=i.length;o>r;)Z(t,n=i[r++],e[n]);return t},$=function(t,e){return void 0===e?S(t):q(S(t),e)},J=function(t){var e=N.call(this,t=x(t,!0));return!(this===j&&r(z,t)&&!r(F,t))&&(!(e||!r(this,t)||!r(z,t)||r(this,A)&&this[A][t])||e)},Q=function(t,e){if(t=w(t),e=x(e,!0),t!==j||!r(z,e)||r(F,e)){var n=O(t,e);return!n||!r(z,e)||r(t,A)&&t[A][e]||(n.enumerable=!0),n}},K=function(t){for(var e,n=C(w(t)),i=[],o=0;n.length>o;)r(z,e=n[o++])||e==A||e==h||i.push(e);return i},tt=function(t){for(var e,n=t===j,i=C(n?F:w(t)),o=[],s=0;i.length>s;)!r(z,e=i[s++])||n&&!r(j,e)||o.push(z[e]);return o};G||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=f(arguments.length>0?arguments[0]:void 0),e=function(n){this===j&&e.call(F,n),r(this,A)&&r(this[A],t)&&(this[A][t]=!1),U(this,t,b(1,n))};return o&&V&&U(j,t,{configurable:!0,set:e}),H(t)},a(P[R],"toString",function(){return this._k}),D.f=Q,M.f=Z,n(77).f=T.f=K,n(74).f=J,n(73).f=tt,o&&!n(14)&&a(j,"propertyIsEnumerable",J,!0),p.f=function(t){return H(d(t))}),s(s.G+s.W+s.F*!G,{Symbol:P});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)d(et[nt++]);for(var et=k(d.store),nt=0;et.length>nt;)m(et[nt++]);s(s.S+s.F*!G,"Symbol",{for:function(t){return r(W,t+="")?W[t]:W[t]=P(t)},keyFor:function(t){if(X(t))return v(W,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){V=!0},useSimple:function(){V=!1}}),s(s.S+s.F*!G,"Object",{create:$,defineProperty:Z,defineProperties:q,getOwnPropertyDescriptor:Q,getOwnPropertyNames:K,getOwnPropertySymbols:tt}),L&&s(s.S+s.F*(!G||u(function(){var t=P();return"[null]"!=Y([t])||"{}"!=Y({a:t})||"{}"!=Y(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!X(t)){for(var e,n,i=[t],r=1;arguments.length>r;)i.push(arguments[r++]);return e=i[1],"function"==typeof e&&(n=e),!n&&g(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!X(e))return e}),i[1]=e,Y.apply(L,i)}}}),P[R][I]||n(20)(P[R],I,P[R].valueOf),c(P,"Symbol"),c(Math,"Math",!0),c(i.JSON,"JSON",!0)},function(t,e,n){var i=n(43)("meta"),r=n(23),o=n(31),s=n(21).f,a=0,h=Object.isExtensible||function(){return!0},u=!n(26)(function(){return h(Object.preventExtensions({}))}),l=function(t){s(t,i,{value:{i:"O"+ ++a,w:{}}})},c=function(t,e){if(!r(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,i)){if(!h(t))return"F";if(!e)return"E";l(t)}return t[i].i},f=function(t,e){if(!o(t,i)){if(!h(t))return!0;if(!e)return!1;l(t)}return t[i].w},d=function(t){return u&&p.NEED&&h(t)&&!o(t,i)&&l(t),t},p=t.exports={KEY:i,NEED:!1,fastKey:c,getWeak:f,onFreeze:d}},function(t,e,n){var i=n(16),r=n(17),o=n(14),s=n(65),a=n(21).f;t.exports=function(t){var e=r.Symbol||(r.Symbol=o?{}:i.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:s.f(t)})}},function(t,e,n){var i=n(35),r=n(9);t.exports=function(t,e){for(var n,o=r(t),s=i(o),a=s.length,h=0;a>h;)if(o[n=s[h++]]===e)return n}},function(t,e,n){var i=n(35),r=n(73),o=n(74);t.exports=function(t){var e=i(t),n=r.f;if(n)for(var s,a=n(t),h=o.f,u=0;a.length>u;)h.call(t,s=a[u++])&&e.push(s);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var i=n(11);t.exports=Array.isArray||function(t){return"Array"==i(t)}},function(t,e,n){var i=n(9),r=n(77).f,o={}.toString,s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return r(t)}catch(t){return s.slice()}};t.exports.f=function(t){return s&&"[object Window]"==o.call(t)?a(t):r(i(t))}},function(t,e,n){var i=n(36),r=n(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return i(t,r)}},function(t,e,n){var i=n(74),r=n(29),o=n(9),s=n(28),a=n(31),h=n(24),u=Object.getOwnPropertyDescriptor;e.f=n(25)?u:function(t,e){if(t=o(t),e=s(e,!0),h)try{return u(t,e)}catch(t){}if(a(t,e))return r(!i.f.call(t,e),t[e])}},function(t,e){},function(t,e,n){n(70)("asyncIterator")},function(t,e,n){n(70)("observable")},function(t,e,n){t.exports={default:n(83),__esModule:!0}},function(t,e,n){var i=n(17),r=i.JSON||(i.JSON={stringify:JSON.stringify});t.exports=function(t){return r.stringify.apply(r,arguments)}},function(t,e,n){t.exports="undefined"!=typeof window&&window.moment||n(85)},function(t,e,n){(function(t){!function(e,n){t.exports=n()}(this,function(){function e(){return vi.apply(null,arguments)}function n(t){vi=t}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function r(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t){var e;for(e in t)return!1;return!0}function s(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function a(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){var n,i=[];for(n=0;n0)for(n in _i)i=_i[n],r=e[i],v(r)||(t[i]=r);return t}function g(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),wi===!1&&(wi=!0,e.updateOffset(this),wi=!1)}function _(t){return t instanceof g||null!=t&&null!=t._isAMomentObject}function w(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function x(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=w(e)),n}function b(t,e,n){var i,r=Math.min(t.length,e.length),o=Math.abs(t.length-e.length),s=0;for(i=0;i0?"future":"past"];return M(n)?n(e):n.replace(/%s/i,e)}function I(t,e){var n=t.toLowerCase();Pi[n]=Pi[n+"s"]=Pi[e]=t}function N(t){return"string"==typeof t?Pi[t]||Pi[t.toLowerCase()]:void 0}function W(t){var e,n,i={};for(n in t)u(t,n)&&(e=N(n),e&&(i[e]=t[n]));return i}function z(t,e){Li[t]=e}function F(t){var e=[];for(var n in t)e.push({unit:n,priority:Li[n]});return e.sort(function(t,e){return t.priority-e.priority}),e}function j(t,n){return function(i){return null!=i?(B(this,t,i),e.updateOffset(this,n),this):G(this,t)}}function G(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function B(t,e,n){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](n)}function V(t){return t=N(t),M(this[t])?this[t]():this}function U(t,e){if("object"==typeof t){t=W(t);for(var n=F(t),i=0;i=0;return(o?n?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+i}function X(t,e,n,i){var r=i;"string"==typeof i&&(r=function(){return this[i]()}),t&&(Ii[t]=r),e&&(Ii[e[0]]=function(){return H(r.apply(this,arguments),e[1],e[2])}),n&&(Ii[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),t)})}function Z(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function q(t){var e,n,i=t.match(Yi);for(e=0,n=i.length;e=0&&Ri.test(t);)t=t.replace(Ri,n),Ri.lastIndex=0,i-=1;return t}function Q(t,e,n){tr[t]=M(e)?e:function(t,i){return t&&n?n:e}}function K(t,e){return u(tr,t)?tr[t](e._strict,e._locale):new RegExp(tt(t))}function tt(t){return et(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,n,i,r){return e||n||i||r}))}function et(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function nt(t,e){var n,i=e;for("string"==typeof t&&(t=[t]),s(e)&&(i=function(t,n){n[e]=x(t)}),n=0;n=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function wt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function xt(t,e,n){var i=7+e-n,r=(7+wt(t,0,i).getUTCDay()-e)%7;return-r+i-1}function bt(t,e,n,i,r){var o,s,a=(7+n-i)%7,h=xt(t,i,r),u=1+7*(e-1)+a+h;return u<=0?(o=t-1,s=vt(o)+u):u>vt(t)?(o=t+1,s=u-vt(t)):(o=t,s=u),{year:o,dayOfYear:s}}function St(t,e,n){var i,r,o=xt(t.year(),e,n),s=Math.floor((t.dayOfYear()-o-1)/7)+1;return s<1?(r=t.year()-1,i=s+Tt(r,e,n)):s>Tt(t.year(),e,n)?(i=s-Tt(t.year(),e,n),r=t.year()+1):(r=t.year(),i=s),{week:i,year:r}}function Tt(t,e,n){var i=xt(t,e,n),r=xt(t+1,e,n);return(vt(t)-i+r)/7}function Dt(t){return St(t,this._week.dow,this._week.doy).week}function Mt(){return this._week.dow}function kt(){return this._week.doy}function Ot(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Et(t){var e=St(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Ct(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Pt(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function Lt(t,e){return t?i(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:this._weekdays}function Yt(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function Rt(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function At(t,e,n){var i,r,o,s=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)o=c([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(o,"").toLocaleLowerCase();return n?"dddd"===e?(r=cr.call(this._weekdaysParse,s),r!==-1?r:null):"ddd"===e?(r=cr.call(this._shortWeekdaysParse,s),r!==-1?r:null):(r=cr.call(this._minWeekdaysParse,s),r!==-1?r:null):"dddd"===e?(r=cr.call(this._weekdaysParse,s),r!==-1?r:(r=cr.call(this._shortWeekdaysParse,s),r!==-1?r:(r=cr.call(this._minWeekdaysParse,s),r!==-1?r:null))):"ddd"===e?(r=cr.call(this._shortWeekdaysParse,s),r!==-1?r:(r=cr.call(this._weekdaysParse,s),r!==-1?r:(r=cr.call(this._minWeekdaysParse,s),r!==-1?r:null))):(r=cr.call(this._minWeekdaysParse,s),r!==-1?r:(r=cr.call(this._weekdaysParse,s),r!==-1?r:(r=cr.call(this._shortWeekdaysParse,s),r!==-1?r:null)))}function It(t,e,n){var i,r,o;if(this._weekdaysParseExact)return At.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(r=c([2e3,1]).day(i),n&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(r,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(r,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(r,"").replace(".",".?")+"$","i")),this._weekdaysParse[i]||(o="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[i]=new RegExp(o.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[i].test(t))return i;if(n&&"ddd"===e&&this._shortWeekdaysParse[i].test(t))return i;if(n&&"dd"===e&&this._minWeekdaysParse[i].test(t))return i;if(!n&&this._weekdaysParse[i].test(t))return i}}function Nt(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Ct(t,this.localeData()),this.add(t-e,"d")):e}function Wt(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function zt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Pt(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function Ft(t){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(u(this,"_weekdaysRegex")||(this._weekdaysRegex=br),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function jt(t){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(u(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Sr),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Gt(t){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(u(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Tr),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Bt(){function t(t,e){return e.length-t.length}var e,n,i,r,o,s=[],a=[],h=[],u=[];for(e=0;e<7;e++)n=c([2e3,1]).day(e),i=this.weekdaysMin(n,""),r=this.weekdaysShort(n,""),o=this.weekdays(n,""),s.push(i),a.push(r),h.push(o),u.push(i),u.push(r),u.push(o);for(s.sort(t),a.sort(t),h.sort(t),u.sort(t),e=0;e<7;e++)a[e]=et(a[e]),h[e]=et(h[e]),u[e]=et(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Vt(){return this.hours()%12||12}function Ut(){return this.hours()||24}function Ht(t,e){X(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Xt(t,e){return e._meridiemParse}function Zt(t){return"p"===(t+"").toLowerCase().charAt(0)}function qt(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"}function $t(t){return t?t.toLowerCase().replace("_","-"):t}function Jt(t){for(var e,n,i,r,o=0;o0;){if(i=Qt(r.slice(0,e).join("-")))return i;if(n&&n.length>=e&&b(r,n,!0)>=e-1)break;e--}o++}return null}function Qt(e){var n=null;if(!Er[e]&&"undefined"!=typeof t&&t&&t.exports)try{n=Dr._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Kt(n)}catch(t){}return Er[e]}function Kt(t,e){var n;return t&&(n=v(e)?ne(t):te(t,e),n&&(Dr=n)),Dr._abbr}function te(t,e){if(null!==e){var n=Or;if(e.abbr=t,null!=Er[t])D("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=Er[t]._config;else if(null!=e.parentLocale){if(null==Er[e.parentLocale])return Cr[e.parentLocale]||(Cr[e.parentLocale]=[]),Cr[e.parentLocale].push({name:t,config:e}),null;n=Er[e.parentLocale]._config}return Er[t]=new E(O(n,e)),Cr[t]&&Cr[t].forEach(function(t){te(t.name,t.config)}),Kt(t),Er[t]}return delete Er[t],null}function ee(t,e){if(null!=e){var n,i=Or;null!=Er[t]&&(i=Er[t]._config),e=O(i,e),n=new E(e),n.parentLocale=Er[t],Er[t]=n,Kt(t)}else null!=Er[t]&&(null!=Er[t].parentLocale?Er[t]=Er[t].parentLocale:null!=Er[t]&&delete Er[t]);return Er[t]}function ne(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Dr;if(!i(t)){if(e=Qt(t))return e;t=[t]}return Jt(t)}function ie(){return Ti(Er)}function re(t){var e,n=t._a;return n&&d(t).overflow===-2&&(e=n[ir]<0||n[ir]>11?ir:n[rr]<1||n[rr]>ot(n[nr],n[ir])?rr:n[or]<0||n[or]>24||24===n[or]&&(0!==n[sr]||0!==n[ar]||0!==n[hr])?or:n[sr]<0||n[sr]>59?sr:n[ar]<0||n[ar]>59?ar:n[hr]<0||n[hr]>999?hr:-1,d(t)._overflowDayOfYear&&(err)&&(e=rr),d(t)._overflowWeeks&&e===-1&&(e=ur),d(t)._overflowWeekday&&e===-1&&(e=lr),d(t).overflow=e),t}function oe(t){var e,n,i,r,o,s,a=t._i,h=Pr.exec(a)||Lr.exec(a);if(h){for(d(t).iso=!0,e=0,n=Rr.length;evt(r)&&(d(t)._overflowDayOfYear=!0),n=wt(r,0,t._dayOfYear),t._a[ir]=n.getUTCMonth(),t._a[rr]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=o[e]=i[e];for(;e<7;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[or]&&0===t._a[sr]&&0===t._a[ar]&&0===t._a[hr]&&(t._nextDay=!0,t._a[or]=0),t._d=(t._useUTC?wt:_t).apply(null,o),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[or]=24)}}function le(t){var e,n,i,r,o,s,a,h;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)o=1,s=4,n=ae(e.GG,t._a[nr],St(_e(),1,4).year),i=ae(e.W,1),r=ae(e.E,1),(r<1||r>7)&&(h=!0);else{o=t._locale._week.dow,s=t._locale._week.doy;var u=St(_e(),o,s);n=ae(e.gg,t._a[nr],u.year),i=ae(e.w,u.week),null!=e.d?(r=e.d,(r<0||r>6)&&(h=!0)):null!=e.e?(r=e.e+o,(e.e<0||e.e>6)&&(h=!0)):r=o}i<1||i>Tt(n,o,s)?d(t)._overflowWeeks=!0:null!=h?d(t)._overflowWeekday=!0:(a=bt(n,i,r,o,s),t._a[nr]=a.year,t._dayOfYear=a.dayOfYear)}function ce(t){if(t._f===e.ISO_8601)return void oe(t);t._a=[],d(t).empty=!0;var n,i,r,o,s,a=""+t._i,h=a.length,u=0;for(r=J(t._f,t._locale).match(Yi)||[],n=0;n0&&d(t).unusedInput.push(s),a=a.slice(a.indexOf(i)+i.length),u+=i.length),Ii[o]?(i?d(t).empty=!1:d(t).unusedTokens.push(o),rt(o,i,t)):t._strict&&!i&&d(t).unusedTokens.push(o);d(t).charsLeftOver=h-u,a.length>0&&d(t).unusedInput.push(a),t._a[or]<=12&&d(t).bigHour===!0&&t._a[or]>0&&(d(t).bigHour=void 0),d(t).parsedDateParts=t._a.slice(0),d(t).meridiem=t._meridiem,t._a[or]=fe(t._locale,t._a[or],t._meridiem),ue(t),re(t)}function fe(t,e,n){var i;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?(i=t.isPM(n),i&&e<12&&(e+=12),i||12!==e||(e=0),e):e}function de(t){var e,n,i,r,o;if(0===t._f.length)return d(t).invalidFormat=!0,void(t._d=new Date(NaN));for(r=0;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ne(){if(!v(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),t=ve(t),t._a){var e=t._isUTC?c(t._a):_e(t._a);this._isDSTShifted=this.isValid()&&b(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function We(){return!!this.isValid()&&!this._isUTC}function ze(){return!!this.isValid()&&this._isUTC}function Fe(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function je(t,e){var n,i,r,o=t,a=null;return Te(t)?o={ms:t._milliseconds,d:t._days,M:t._months}:s(t)?(o={},e?o[e]=t:o.milliseconds=t):(a=jr.exec(t))?(n="-"===a[1]?-1:1,o={y:0,d:x(a[rr])*n,h:x(a[or])*n,m:x(a[sr])*n,s:x(a[ar])*n,ms:x(De(1e3*a[hr]))*n}):(a=Gr.exec(t))?(n="-"===a[1]?-1:1,o={y:Ge(a[2],n),M:Ge(a[3],n),w:Ge(a[4],n),d:Ge(a[5],n),h:Ge(a[6],n),m:Ge(a[7],n),s:Ge(a[8],n)}):null==o?o={}:"object"==typeof o&&("from"in o||"to"in o)&&(r=Ve(_e(o.from),_e(o.to)),o={},o.ms=r.milliseconds,o.M=r.months),i=new Se(o),Te(t)&&u(t,"_locale")&&(i._locale=t._locale),i}function Ge(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Be(t,e){var n={milliseconds:0,months:0};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function Ve(t,e){var n;return t.isValid()&&e.isValid()?(e=Oe(e,t),t.isBefore(e)?n=Be(t,e):(n=Be(e,t),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Ue(t,e){return function(n,i){var r,o;return null===i||isNaN(+i)||(D(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),o=n,n=i,i=o),n="string"==typeof n?+n:n,r=je(n,i),He(this,r,t),this}}function He(t,n,i,r){var o=n._milliseconds,s=De(n._days),a=De(n._months);t.isValid()&&(r=null==r||r,o&&t._d.setTime(t._d.valueOf()+o*i),s&&B(t,"Date",G(t,"Date")+s*i),a&<(t,G(t,"Month")+a*i),r&&e.updateOffset(t,s||a))}function Xe(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"}function Ze(t,n){var i=t||_e(),r=Oe(i,this).startOf("day"),o=e.calendarFormat(this,r)||"sameElse",s=n&&(M(n[o])?n[o].call(this,i):n[o]);return this.format(s||this.localeData().calendar(o,this,_e(i)))}function qe(){return new g(this)}function $e(t,e){var n=_(t)?t:_e(t);return!(!this.isValid()||!n.isValid())&&(e=N(v(e)?"millisecond":e),"millisecond"===e?this.valueOf()>n.valueOf():n.valueOf()o&&(e=o),Yn.call(this,t,e,n,i,r))}function Yn(t,e,n,i,r){var o=bt(t,e,n,i,r),s=wt(o.year,0,o.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}function Rn(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function An(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function In(t,e){e[hr]=x(1e3*("0."+t))}function Nn(){return this._isUTC?"UTC":""}function Wn(){return this._isUTC?"Coordinated Universal Time":""}function zn(t){return _e(1e3*t)}function Fn(){return _e.apply(null,arguments).parseZone()}function jn(t){return t}function Gn(t,e,n,i){var r=ne(),o=c().set(i,e);return r[n](o,t)}function Bn(t,e,n){if(s(t)&&(e=t,t=void 0),t=t||"",null!=e)return Gn(t,e,n,"month");var i,r=[];for(i=0;i<12;i++)r[i]=Gn(t,i,n,"month");return r}function Vn(t,e,n,i){"boolean"==typeof t?(s(e)&&(n=e,e=void 0),e=e||""):(e=t,n=e,t=!1,s(e)&&(n=e,e=void 0),e=e||"");var r=ne(),o=t?r._week.dow:0;if(null!=n)return Gn(e,(n+o)%7,i,"day");var a,h=[];for(a=0;a<7;a++)h[a]=Gn(e,(a+o)%7,i,"day");return h}function Un(t,e){return Bn(t,e,"months")}function Hn(t,e){return Bn(t,e,"monthsShort")}function Xn(t,e,n){return Vn(t,e,n,"weekdays")}function Zn(t,e,n){return Vn(t,e,n,"weekdaysShort")}function qn(t,e,n){return Vn(t,e,n,"weekdaysMin")}function $n(){var t=this._data;return this._milliseconds=Kr(this._milliseconds),this._days=Kr(this._days),this._months=Kr(this._months),t.milliseconds=Kr(t.milliseconds),t.seconds=Kr(t.seconds),t.minutes=Kr(t.minutes),t.hours=Kr(t.hours),t.months=Kr(t.months),t.years=Kr(t.years),this}function Jn(t,e,n,i){var r=je(e,n);return t._milliseconds+=i*r._milliseconds,t._days+=i*r._days,t._months+=i*r._months,t._bubble()}function Qn(t,e){return Jn(this,t,e,1)}function Kn(t,e){return Jn(this,t,e,-1)}function ti(t){return t<0?Math.floor(t):Math.ceil(t)}function ei(){var t,e,n,i,r,o=this._milliseconds,s=this._days,a=this._months,h=this._data;return o>=0&&s>=0&&a>=0||o<=0&&s<=0&&a<=0||(o+=864e5*ti(ii(a)+s),s=0,a=0),h.milliseconds=o%1e3,t=w(o/1e3),h.seconds=t%60,e=w(t/60),h.minutes=e%60,n=w(e/60),h.hours=n%24,s+=w(n/24),r=w(ni(s)),a+=r,s-=ti(ii(r)),i=w(a/12),a%=12,h.days=s,h.months=a,h.years=i,this}function ni(t){return 4800*t/146097}function ii(t){return 146097*t/4800; -}function ri(t){var e,n,i=this._milliseconds;if(t=N(t),"month"===t||"year"===t)return e=this._days+i/864e5,n=this._months+ni(e),"month"===t?n:n/12;switch(e=this._days+Math.round(ii(this._months)),t){case"week":return e/7+i/6048e5;case"day":return e+i/864e5;case"hour":return 24*e+i/36e5;case"minute":return 1440*e+i/6e4;case"second":return 86400*e+i/1e3;case"millisecond":return Math.floor(864e5*e)+i;default:throw new Error("Unknown unit "+t)}}function oi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*x(this._months/12)}function si(t){return function(){return this.as(t)}}function ai(t){return t=N(t),this[t+"s"]()}function hi(t){return function(){return this._data[t]}}function ui(){return w(this.days()/7)}function li(t,e,n,i,r){return r.relativeTime(e||1,!!n,t,i)}function ci(t,e,n){var i=je(t).abs(),r=vo(i.as("s")),o=vo(i.as("m")),s=vo(i.as("h")),a=vo(i.as("d")),h=vo(i.as("M")),u=vo(i.as("y")),l=r0,l[4]=n,li.apply(null,l)}function fi(t){return void 0===t?vo:"function"==typeof t&&(vo=t,!0)}function di(t,e){return void 0!==yo[t]&&(void 0===e?yo[t]:(yo[t]=e,!0))}function pi(t){var e=this.localeData(),n=ci(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)}function mi(){var t,e,n,i=go(this._milliseconds)/1e3,r=go(this._days),o=go(this._months);t=w(i/60),e=w(t/60),i%=60,t%=60,n=w(o/12),o%=12;var s=n,a=o,h=r,u=e,l=t,c=i,f=this.asSeconds();return f?(f<0?"-":"")+"P"+(s?s+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(u||l||c?"T":"")+(u?u+"H":"")+(l?l+"M":"")+(c?c+"S":""):"P0D"}var vi,yi;yi=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,i=0;i68?1900:2e3)};var yr=j("FullYear",!0);X("w",["ww",2],"wo","week"),X("W",["WW",2],"Wo","isoWeek"),I("week","w"),I("isoWeek","W"),z("week",5),z("isoWeek",5),Q("w",Gi),Q("ww",Gi,Wi),Q("W",Gi),Q("WW",Gi,Wi),it(["w","ww","W","WW"],function(t,e,n,i){e[i.substr(0,1)]=x(t)});var gr={dow:0,doy:6};X("d",0,"do","day"),X("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),X("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),X("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),X("e",0,0,"weekday"),X("E",0,0,"isoWeekday"),I("day","d"),I("weekday","e"),I("isoWeekday","E"),z("day",11),z("weekday",11),z("isoWeekday",11),Q("d",Gi),Q("e",Gi),Q("E",Gi),Q("dd",function(t,e){return e.weekdaysMinRegex(t)}),Q("ddd",function(t,e){return e.weekdaysShortRegex(t)}),Q("dddd",function(t,e){return e.weekdaysRegex(t)}),it(["dd","ddd","dddd"],function(t,e,n,i){var r=n._locale.weekdaysParse(t,i,n._strict);null!=r?e.d=r:d(n).invalidWeekday=t}),it(["d","e","E"],function(t,e,n,i){e[i]=x(t)});var _r="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),wr="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xr="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),br=Ki,Sr=Ki,Tr=Ki;X("H",["HH",2],0,"hour"),X("h",["hh",2],0,Vt),X("k",["kk",2],0,Ut),X("hmm",0,0,function(){return""+Vt.apply(this)+H(this.minutes(),2)}),X("hmmss",0,0,function(){return""+Vt.apply(this)+H(this.minutes(),2)+H(this.seconds(),2)}),X("Hmm",0,0,function(){return""+this.hours()+H(this.minutes(),2)}),X("Hmmss",0,0,function(){return""+this.hours()+H(this.minutes(),2)+H(this.seconds(),2)}),Ht("a",!0),Ht("A",!1),I("hour","h"),z("hour",13),Q("a",Xt),Q("A",Xt),Q("H",Gi),Q("h",Gi),Q("HH",Gi,Wi),Q("hh",Gi,Wi),Q("hmm",Bi),Q("hmmss",Vi),Q("Hmm",Bi),Q("Hmmss",Vi),nt(["H","HH"],or),nt(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),nt(["h","hh"],function(t,e,n){e[or]=x(t),d(n).bigHour=!0}),nt("hmm",function(t,e,n){var i=t.length-2;e[or]=x(t.substr(0,i)),e[sr]=x(t.substr(i)),d(n).bigHour=!0}),nt("hmmss",function(t,e,n){var i=t.length-4,r=t.length-2;e[or]=x(t.substr(0,i)),e[sr]=x(t.substr(i,2)),e[ar]=x(t.substr(r)),d(n).bigHour=!0}),nt("Hmm",function(t,e,n){var i=t.length-2;e[or]=x(t.substr(0,i)),e[sr]=x(t.substr(i))}),nt("Hmmss",function(t,e,n){var i=t.length-4,r=t.length-2;e[or]=x(t.substr(0,i)),e[sr]=x(t.substr(i,2)),e[ar]=x(t.substr(r))});var Dr,Mr=/[ap]\.?m?\.?/i,kr=j("Hours",!0),Or={calendar:Di,longDateFormat:Mi,invalidDate:ki,ordinal:Oi,ordinalParse:Ei,relativeTime:Ci,months:dr,monthsShort:pr,week:gr,weekdays:_r,weekdaysMin:xr,weekdaysShort:wr,meridiemParse:Mr},Er={},Cr={},Pr=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Lr=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Yr=/Z|[+-]\d\d(?::?\d\d)?/,Rr=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ar=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ir=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=T("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),e.ISO_8601=function(){};var Nr=T("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=_e.apply(null,arguments);return this.isValid()&&t.isValid()?tthis?this:t:m()}),zr=function(){return Date.now?Date.now():+new Date};Me("Z",":"),Me("ZZ",""),Q("Z",Ji),Q("ZZ",Ji),nt(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=ke(Ji,t)});var Fr=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var jr=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Gr=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;je.fn=Se.prototype;var Br=Ue(1,"add"),Vr=Ue(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Ur=T("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});X(0,["gg",2],0,function(){return this.weekYear()%100}),X(0,["GG",2],0,function(){return this.isoWeekYear()%100}),kn("gggg","weekYear"),kn("ggggg","weekYear"),kn("GGGG","isoWeekYear"),kn("GGGGG","isoWeekYear"),I("weekYear","gg"),I("isoWeekYear","GG"),z("weekYear",1),z("isoWeekYear",1),Q("G",qi),Q("g",qi),Q("GG",Gi,Wi),Q("gg",Gi,Wi),Q("GGGG",Hi,Fi),Q("gggg",Hi,Fi),Q("GGGGG",Xi,ji),Q("ggggg",Xi,ji),it(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,i){e[i.substr(0,2)]=x(t)}),it(["gg","GG"],function(t,n,i,r){n[r]=e.parseTwoDigitYear(t)}),X("Q",0,"Qo","quarter"),I("quarter","Q"),z("quarter",7),Q("Q",Ni),nt("Q",function(t,e){e[ir]=3*(x(t)-1)}),X("D",["DD",2],"Do","date"),I("date","D"),z("date",9),Q("D",Gi),Q("DD",Gi,Wi),Q("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),nt(["D","DD"],rr),nt("Do",function(t,e){e[rr]=x(t.match(Gi)[0],10)});var Hr=j("Date",!0);X("DDD",["DDDD",3],"DDDo","dayOfYear"),I("dayOfYear","DDD"),z("dayOfYear",4),Q("DDD",Ui),Q("DDDD",zi),nt(["DDD","DDDD"],function(t,e,n){n._dayOfYear=x(t)}),X("m",["mm",2],0,"minute"),I("minute","m"),z("minute",14),Q("m",Gi),Q("mm",Gi,Wi),nt(["m","mm"],sr);var Xr=j("Minutes",!1);X("s",["ss",2],0,"second"),I("second","s"),z("second",15),Q("s",Gi),Q("ss",Gi,Wi),nt(["s","ss"],ar);var Zr=j("Seconds",!1);X("S",0,0,function(){return~~(this.millisecond()/100)}),X(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),X(0,["SSS",3],0,"millisecond"),X(0,["SSSS",4],0,function(){return 10*this.millisecond()}),X(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),X(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),X(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),X(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),X(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),I("millisecond","ms"),z("millisecond",16),Q("S",Ui,Ni),Q("SS",Ui,Wi),Q("SSS",Ui,zi);var qr;for(qr="SSSS";qr.length<=9;qr+="S")Q(qr,Zi);for(qr="S";qr.length<=9;qr+="S")nt(qr,In);var $r=j("Milliseconds",!1);X("z",0,0,"zoneAbbr"),X("zz",0,0,"zoneName");var Jr=g.prototype;Jr.add=Br,Jr.calendar=Ze,Jr.clone=qe,Jr.diff=nn,Jr.endOf=vn,Jr.format=hn,Jr.from=un,Jr.fromNow=ln,Jr.to=cn,Jr.toNow=fn,Jr.get=V,Jr.invalidAt=Dn,Jr.isAfter=$e,Jr.isBefore=Je,Jr.isBetween=Qe,Jr.isSame=Ke,Jr.isSameOrAfter=tn,Jr.isSameOrBefore=en,Jr.isValid=Sn,Jr.lang=Ur,Jr.locale=dn,Jr.localeData=pn,Jr.max=Wr,Jr.min=Nr,Jr.parsingFlags=Tn,Jr.set=U,Jr.startOf=mn,Jr.subtract=Vr,Jr.toArray=wn,Jr.toObject=xn,Jr.toDate=_n,Jr.toISOString=sn,Jr.inspect=an,Jr.toJSON=bn,Jr.toString=on,Jr.unix=gn,Jr.valueOf=yn,Jr.creationData=Mn,Jr.year=yr,Jr.isLeapYear=gt,Jr.weekYear=On,Jr.isoWeekYear=En,Jr.quarter=Jr.quarters=Rn,Jr.month=ct,Jr.daysInMonth=ft,Jr.week=Jr.weeks=Ot,Jr.isoWeek=Jr.isoWeeks=Et,Jr.weeksInYear=Pn,Jr.isoWeeksInYear=Cn,Jr.date=Hr,Jr.day=Jr.days=Nt,Jr.weekday=Wt,Jr.isoWeekday=zt,Jr.dayOfYear=An,Jr.hour=Jr.hours=kr,Jr.minute=Jr.minutes=Xr,Jr.second=Jr.seconds=Zr,Jr.millisecond=Jr.milliseconds=$r,Jr.utcOffset=Ce,Jr.utc=Le,Jr.local=Ye,Jr.parseZone=Re,Jr.hasAlignedHourOffset=Ae,Jr.isDST=Ie,Jr.isLocal=We,Jr.isUtcOffset=ze,Jr.isUtc=Fe,Jr.isUTC=Fe,Jr.zoneAbbr=Nn,Jr.zoneName=Wn,Jr.dates=T("dates accessor is deprecated. Use date instead.",Hr),Jr.months=T("months accessor is deprecated. Use month instead",ct),Jr.years=T("years accessor is deprecated. Use year instead",yr),Jr.zone=T("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Pe),Jr.isDSTShifted=T("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ne);var Qr=E.prototype;Qr.calendar=C,Qr.longDateFormat=P,Qr.invalidDate=L,Qr.ordinal=Y,Qr.preparse=jn,Qr.postformat=jn,Qr.relativeTime=R,Qr.pastFuture=A,Qr.set=k,Qr.months=st,Qr.monthsShort=at,Qr.monthsParse=ut,Qr.monthsRegex=pt,Qr.monthsShortRegex=dt,Qr.week=Dt,Qr.firstDayOfYear=kt,Qr.firstDayOfWeek=Mt,Qr.weekdays=Lt,Qr.weekdaysMin=Rt,Qr.weekdaysShort=Yt,Qr.weekdaysParse=It,Qr.weekdaysRegex=Ft,Qr.weekdaysShortRegex=jt,Qr.weekdaysMinRegex=Gt,Qr.isPM=Zt,Qr.meridiem=qt,Kt("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,n=1===x(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n}}),e.lang=T("moment.lang is deprecated. Use moment.locale instead.",Kt),e.langData=T("moment.langData is deprecated. Use moment.localeData instead.",ne);var Kr=Math.abs,to=si("ms"),eo=si("s"),no=si("m"),io=si("h"),ro=si("d"),oo=si("w"),so=si("M"),ao=si("y"),ho=hi("milliseconds"),uo=hi("seconds"),lo=hi("minutes"),co=hi("hours"),fo=hi("days"),po=hi("months"),mo=hi("years"),vo=Math.round,yo={s:45,m:45,h:22,d:26,M:11},go=Math.abs,_o=Se.prototype;return _o.abs=$n,_o.add=Qn,_o.subtract=Kn,_o.as=ri,_o.asMilliseconds=to,_o.asSeconds=eo,_o.asMinutes=no,_o.asHours=io,_o.asDays=ro,_o.asWeeks=oo,_o.asMonths=so,_o.asYears=ao,_o.valueOf=oi,_o._bubble=ei,_o.get=ai,_o.milliseconds=ho,_o.seconds=uo,_o.minutes=lo,_o.hours=co,_o.days=fo,_o.weeks=ui,_o.months=po,_o.years=mo,_o.humanize=pi,_o.toISOString=mi,_o.toString=mi,_o.toJSON=mi,_o.locale=dn,_o.localeData=pn,_o.toIsoString=T("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",mi),_o.lang=Ur,X("X",0,0,"unix"),X("x",0,0,"valueOf"),Q("x",qi),Q("X",Qi),nt("X",function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))}),nt("x",function(t,e,n){n._d=new Date(x(t))}),e.version="2.17.1",n(_e),e.fn=Jr,e.min=xe,e.max=be,e.now=zr,e.utc=c,e.unix=zn,e.months=Un,e.isDate=a,e.locale=Kt,e.invalid=m,e.duration=je,e.isMoment=_,e.weekdays=Xn,e.parseZone=Fn,e.localeData=ne,e.isDuration=Te,e.monthsShort=Hn,e.weekdaysMin=qn,e.defineLocale=te,e.updateLocale=ee,e.locales=ie,e.weekdaysShort=Zn,e.normalizeUnits=N,e.relativeTimeRounding=fi,e.relativeTimeThreshold=di,e.calendarFormat=Xe,e.prototype=Jr,e})}).call(e,n(86)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function n(t){throw new Error("Cannot find module '"+t+"'.")}n.keys=function(){return[]},n.resolve=n,t.exports=n,n.id=87},function(t,e){(function(e){function n(t,e,n){var i=e&&n||0,r=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){r<16&&(e[i+r++]=c[t])});r<16;)e[i+r++]=0;return e}function i(t,e){var n=e||0,i=l;return i[t[n++]]+i[t[n++]]+i[t[n++]]+i[t[n++]]+"-"+i[t[n++]]+i[t[n++]]+"-"+i[t[n++]]+i[t[n++]]+"-"+i[t[n++]]+i[t[n++]]+"-"+i[t[n++]]+i[t[n++]]+i[t[n++]]+i[t[n++]]+i[t[n++]]+i[t[n++]]}function r(t,e,n){var r=e&&n||0,o=e||[];t=t||{};var s=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:y+1,u=a-v+(h-y)/1e4;if(u<0&&void 0===t.clockseq&&(s=s+1&16383),(u<0||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,y=h,m=s,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;o[r++]=l>>>24&255,o[r++]=l>>>16&255,o[r++]=l>>>8&255,o[r++]=255&l;var c=a/4294967296*1e4&268435455;o[r++]=c>>>8&255,o[r++]=255&c,o[r++]=c>>>24&15|16,o[r++]=c>>>16&255,o[r++]=s>>>8|128,o[r++]=255&s;for(var f=t.node||p,d=0;d<6;d++)o[r+d]=f[d];return e?e:i(o)}function o(t,e,n){var r=e&&n||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var o=t.random||(t.rng||s)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,e)for(var a=0;a<16;a++)e[r+a]=o[a];return e||i(o)}var s,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);s=function(){return crypto.getRandomValues(h),h}}if(!s){var u=new Array(16);s=function(){for(var t,e=0;e<16;e++)0===(3&e)&&(t=4294967296*Math.random()),u[e]=t>>>((3&e)<<3)&255;return u}}for(var l=[],c={},f=0;f<256;f++)l[f]=(f+256).toString(16).substr(1),c[l[f]]=f;var d=s(),p=[1|d[0],d[1],d[2],d[3],d[4],d[5]],m=16383&(d[6]<<8|d[7]),v=0,y=0,g=o;g.v1=r,g.v4=o,g.parse=n,g.unparse=i,t.exports=g}).call(e,function(){return this}())},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var n=0;n0?(i=e[t].redundant[0],e[t].redundant.shift()):(i=document.createElementNS("http://www.w3.org/2000/svg",t),n.appendChild(i)):(i=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},n.appendChild(i)),e[t].used.push(i),i},e.getDOMElement=function(t,e,n,i){var r;return e.hasOwnProperty(t)?e[t].redundant.length>0?(r=e[t].redundant[0],e[t].redundant.shift()):(r=document.createElement(t),void 0!==i?n.insertBefore(r,i):n.appendChild(r)):(r=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==i?n.insertBefore(r,i):n.appendChild(r)),e[t].used.push(r),r},e.drawPoint=function(t,n,i,r,o,s){var a;if("circle"==i.style?(a=e.getSVGElement("circle",r,o),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",n),a.setAttributeNS(null,"r",.5*i.size)):(a=e.getSVGElement("rect",r,o),a.setAttributeNS(null,"x",t-.5*i.size),a.setAttributeNS(null,"y",n-.5*i.size),a.setAttributeNS(null,"width",i.size),a.setAttributeNS(null,"height",i.size)),void 0!==i.styles&&a.setAttributeNS(null,"style",i.styles),a.setAttributeNS(null,"class",i.className+" vis-point"),s){var h=e.getSVGElement("text",r,o);s.xOffset&&(t+=s.xOffset),s.yOffset&&(n+=s.yOffset),s.content&&(h.textContent=s.content),s.className&&h.setAttributeNS(null,"class",s.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",n)}return a},e.drawBar=function(t,n,i,r,o,s,a,h){if(0!=r){r<0&&(r*=-1,n-=r);var u=e.getSVGElement("rect",s,a);u.setAttributeNS(null,"x",t-.5*i),u.setAttributeNS(null,"y",n),u.setAttributeNS(null,"width",i),u.setAttributeNS(null,"height",r),u.setAttributeNS(null,"class",o),h&&u.setAttributeNS(null,"style",h)}}},function(t,e,n){function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var n=(0,l.default)(this._options.type),i=0,r=n.length;ir?1:is)&&(o=h,s=u)}return o},r.prototype.min=function(t){var e,n,i=this._data,r=(0,l.default)(i),o=null,s=null;for(e=0,n=r.length;ethis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},n.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=n},function(t,e,n){function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var n=this;this.listener=function(){n._onEvent.apply(n,arguments)},this.setData(t)}var o=n(58),s=i(o),a=n(1),h=n(90);r.prototype.setData=function(t){var e,n,i,r,o;if(this._data){for(this._data.off&&this._data.off("*",this.listener),e=this._data.getIds({filter:this._options&&this._options.filter}),o=[],i=0,r=e.length;i0&&(h[r-1].pointNext=s),h.push(s);return h},i.prototype.create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);this.frame=document.createElement("div"),this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas);var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t),this.frame.filter=document.createElement("div"),this.frame.filter.style.position="absolute",this.frame.filter.style.bottom="0px",this.frame.filter.style.left="0px",this.frame.filter.style.width="100%",this.frame.appendChild(this.frame.filter);var e=this,n=function(t){e._onMouseDown(t)},i=function(t){e._onTouchStart(t)},r=function(t){e._onWheel(t)},o=function(t){e._onTooltip(t)},s=function(t){e._onClick(t)};u.addEventListener(this.frame.canvas,"keydown",onkeydown),u.addEventListener(this.frame.canvas,"mousedown",n),u.addEventListener(this.frame.canvas,"touchstart",i),u.addEventListener(this.frame.canvas,"mousewheel",r),u.addEventListener(this.frame.canvas,"mousemove",o),u.addEventListener(this.frame.canvas,"click",s),this.containerElement.appendChild(this.frame)},i.prototype._setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this._resizeCanvas()},i.prototype._resizeCanvas=function(){this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.frame.filter.style.width=this.frame.canvas.clientWidth-20+"px"},i.prototype.animationStart=function(){if(!this.frame.filter||!this.frame.filter.slider)throw new Error("No animation available");this.frame.filter.slider.play()},i.prototype.animationStop=function(){this.frame.filter&&this.frame.filter.slider&&this.frame.filter.slider.stop()},i.prototype._resizeCenter=function(){"%"===this.xCenter.charAt(this.xCenter.length-1)?this.currentXCenter=parseFloat(this.xCenter)/100*this.frame.canvas.clientWidth:this.currentXCenter=parseFloat(this.xCenter),"%"===this.yCenter.charAt(this.yCenter.length-1)?this.currentYCenter=parseFloat(this.yCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight):this.currentYCenter=parseFloat(this.yCenter)},i.prototype.getCameraPosition=function(){var t=this.camera.getArmRotation();return t.distance=this.camera.getArmLength(),t},i.prototype._readData=function(t){this._dataInitialize(t,this.style),this.dataFilter?this.dataPoints=this.dataFilter._getDataPoints():this.dataPoints=this._getDataPoints(this.dataTable),this._redrawFilter()},i.prototype.setData=function(t){this._readData(t),this.redraw(),this.animationAutoStart&&this.dataFilter&&this.animationStart()},i.prototype.setOptions=function(t){this.animationStop(),v.setOptions(t,this),this.setPointDrawingMethod(),this._setSize(this.width,this.height),this.dataTable&&this.setData(this.dataTable),this.animationAutoStart&&this.dataFilter&&this.animationStart()},i.prototype.setPointDrawingMethod=function(){var t=void 0;switch(this.style){case i.STYLE.BAR:t=i.prototype._redrawBarGraphPoint;break;case i.STYLE.BARCOLOR:t=i.prototype._redrawBarColorGraphPoint;break;case i.STYLE.BARSIZE:t=i.prototype._redrawBarSizeGraphPoint;break;case i.STYLE.DOT:t=i.prototype._redrawDotGraphPoint;break;case i.STYLE.DOTLINE:t=i.prototype._redrawDotLineGraphPoint;break;case i.STYLE.DOTCOLOR:t=i.prototype._redrawDotColorGraphPoint;break;case i.STYLE.DOTSIZE:t=i.prototype._redrawDotSizeGraphPoint;break;case i.STYLE.SURFACE:t=i.prototype._redrawSurfaceGraphPoint;break;case i.STYLE.GRID:t=i.prototype._redrawGridGraphPoint;break;case i.STYLE.LINE:t=i.prototype._redrawLineGraphPoint;break;default:throw new Error("Can not determine point drawing method for graph style '"+this.style+"'")}this._pointDrawingMethod=t},i.prototype.redraw=function(){if(void 0===this.dataPoints)throw new Error("Graph data not initialized");this._resizeCanvas(),this._resizeCenter(),this._redrawSlider(),this._redrawClear(),this._redrawAxis(),this._redrawDataGraph(),this._redrawInfo(),this._redrawLegend()},i.prototype._getContext=function(){var t=this.frame.canvas,e=t.getContext("2d");return e.lineJoin="round",e.lineCap="round",e},i.prototype._redrawClear=function(){var t=this.frame.canvas,e=t.getContext("2d");e.clearRect(0,0,t.width,t.height)},i.prototype._dotSize=function(){return this.frame.clientWidth*this.dotSizeRatio},i.prototype._getLegendWidth=function(){var t;if(this.style===i.STYLE.DOTSIZE){var e=this._dotSize();t=e/2+2*e}else t=this.style===i.STYLE.BARSIZE?this.xBarWidth:20;return t},i.prototype._redrawLegend=function(){if(this.showLegend===!0&&this.style!==i.STYLE.LINE&&this.style!==i.STYLE.BARSIZE){var t=this.style===i.STYLE.BARSIZE||this.style===i.STYLE.DOTSIZE,e=this.style===i.STYLE.DOTSIZE||this.style===i.STYLE.DOTCOLOR||this.style===i.STYLE.BARCOLOR,n=Math.max(.25*this.frame.clientHeight,100),r=this.margin,o=this._getLegendWidth(),s=this.frame.clientWidth-this.margin,a=s-o,h=r+n,u=this._getContext();if(u.lineWidth=1,u.font="14px arial",t===!1){var l,f=0,d=n;for(l=f;l0?(t.textAlign="center",t.textBaseline="top",o.y+=r):Math.sin(2*i)<0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(n,o.x,o.y)},i.prototype.drawAxisLabelY=function(t,e,n,i,r){void 0===r&&(r=0);var o=this._convert3Dto2D(e);Math.cos(2*i)<0?(t.textAlign="center",t.textBaseline="top",o.y+=r):Math.sin(2*i)>0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(n,o.x,o.y)},i.prototype.drawAxisLabelZ=function(t,e,n,i){void 0===i&&(i=0);var r=this._convert3Dto2D(e);t.textAlign="right",t.textBaseline="middle",t.fillStyle=this.axisColor,t.fillText(n,r.x-i,r.y)},i.prototype._line3d=function(t,e,n,i){var r=this._convert3Dto2D(e),o=this._convert3Dto2D(n);this._line(t,r,o,i)},i.prototype._redrawAxis=function(){var t,e,n,i,r,o,s,a,h,u,f,d=this._getContext();d.font=24/this.camera.getArmLength()+"px arial";var m=.025/this.scale.x,v=.025/this.scale.y,y=5/this.camera.getArmLength(),g=this.camera.getArmRotation().horizontal,_=new c(Math.cos(g),Math.sin(g)),w=this.xRange,x=this.yRange,b=this.zRange;for(d.lineWidth=1,i=void 0===this.defaultXStep,n=new p(w.min,w.max,this.xStep,i),n.start(!0);!n.end();){var S=n.getCurrent();this.showGrid?(t=new l(S,x.min,b.min),e=new l(S,x.max,b.min),this._line3d(d,t,e,this.gridColor)):(t=new l(S,x.min,b.min),e=new l(S,x.min+m,b.min),this._line3d(d,t,e,this.axisColor),t=new l(S,x.max,b.min),e=new l(S,x.max-m,b.min),this._line3d(d,t,e,this.axisColor)),s=_.x>0?x.min:x.max;var T=new l(S,s,b.min),D=" "+this.xValueLabel(S)+" ";this.drawAxisLabelX(d,T,D,g,y),n.next()}for(d.lineWidth=1,i=void 0===this.defaultYStep,n=new p(x.min,x.max,this.yStep,i),n.start(!0);!n.end();){var M=n.getCurrent();this.showGrid?(t=new l(w.min,M,b.min),e=new l(w.max,M,b.min),this._line3d(d,t,e,this.gridColor)):(t=new l(w.min,M,b.min),e=new l(w.min+v,M,b.min),this._line3d(d,t,e,this.axisColor),t=new l(w.max,M,b.min),e=new l(w.max-v,M,b.min),this._line3d(d,t,e,this.axisColor)),o=_.y>0?w.min:w.max,T=new l(o,M,b.min);var D=" "+this.yValueLabel(M)+" ";this.drawAxisLabelY(d,T,D,g,y),n.next()}for(d.lineWidth=1,i=void 0===this.defaultZStep,n=new p(b.min,b.max,this.zStep,i),n.start(!0),o=_.x>0?w.min:w.max,s=_.y<0?x.min:x.max;!n.end();){var k=n.getCurrent(),O=new l(o,s,k),E=this._convert3Dto2D(O);e=new c(E.x-y,E.y),this._line(d,E,e,this.axisColor);var D=this.zValueLabel(k)+" ";this.drawAxisLabelZ(d,O,D,5),n.next()}d.lineWidth=1,t=new l(o,s,b.min),e=new l(o,s,b.max),this._line3d(d,t,e,this.axisColor);var C,P;d.lineWidth=1,C=new l(w.min,x.min,b.min),P=new l(w.max,x.min,b.min),this._line3d(d,C,P,this.axisColor),C=new l(w.min,x.max,b.min),P=new l(w.max,x.max,b.min),this._line3d(d,C,P,this.axisColor),d.lineWidth=1,t=new l(w.min,x.min,b.min),e=new l(w.min,x.max,b.min),this._line3d(d,t,e,this.axisColor),t=new l(w.max,x.min,b.min),e=new l(w.max,x.max,b.min),this._line3d(d,t,e,this.axisColor);var L=this.xLabel;L.length>0&&(f=.1/this.scale.y,o=(w.max+3*w.min)/4,s=_.x>0?x.min-f:x.max+f,r=new l(o,s,b.min),this.drawAxisLabelX(d,r,L,g));var Y=this.yLabel;Y.length>0&&(u=.1/this.scale.x,o=_.y>0?w.min-u:w.max+u,s=(x.max+3*x.min)/4,r=new l(o,s,b.min),this.drawAxisLabelY(d,r,Y,g));var R=this.zLabel;R.length>0&&(h=30,o=_.x>0?w.min:w.max,s=_.y<0?x.min:x.max,a=(b.max+3*b.min)/4,r=new l(o,s,a),this.drawAxisLabelZ(d,r,R,h))},i.prototype._hsv2rgb=function(t,e,n){var i,r,o,s,a,h;switch(s=n*e,a=Math.floor(t/60),h=s*(1-Math.abs(t/60%2-1)),a){case 0:i=s,r=h,o=0;break;case 1:i=h,r=s,o=0;break;case 2:i=0,r=s,o=h;break;case 3:i=0,r=h,o=s;break;case 4:i=h,r=0,o=s;break;case 5:i=s,r=0,o=h;break;default:i=0,r=0,o=0}return"RGB("+parseInt(255*i)+","+parseInt(255*r)+","+parseInt(255*o)+")"},i.prototype._getStrokeWidth=function(t){return void 0!==t?this.showPerspective?1/-t.trans.z*this.dataColor.strokeWidth:-(this.eye.z/this.camera.getArmLength())*this.dataColor.strokeWidth:this.dataColor.strokeWidth},i.prototype._redrawBar=function(t,e,n,i,r,o){var s,a,h=this,u=e.point,c=this.zRange.min,f=[{point:new l(u.x-n,u.y-i,u.z)},{point:new l(u.x+n,u.y-i,u.z)},{point:new l(u.x+n,u.y+i,u.z)},{point:new l(u.x-n,u.y+i,u.z)}],d=[{point:new l(u.x-n,u.y-i,c)},{point:new l(u.x+n,u.y-i,c)},{point:new l(u.x+n,u.y+i,c)},{point:new l(u.x-n,u.y+i,c)}];f.forEach(function(t){t.screen=h._convert3Dto2D(t.point)}),d.forEach(function(t){t.screen=h._convert3Dto2D(t.point)});var p=[{corners:f,center:l.avg(d[0].point,d[2].point)},{corners:[f[0],f[1],d[1],d[0]],center:l.avg(d[1].point,d[0].point)},{corners:[f[1],f[2],d[2],d[1]],center:l.avg(d[2].point,d[1].point)},{corners:[f[2],f[3],d[3],d[2]],center:l.avg(d[3].point,d[2].point)},{corners:[f[3],f[0],d[0],d[3]],center:l.avg(d[0].point,d[3].point)}];for(e.surfaces=p,s=0;s0}if(a){var d,p=(e.point.z+n.point.z+i.point.z+r.point.z)/4,m=240*(1-(p-this.zRange.min)*this.scale.z/this.verticalRatio),v=1;this.showShadow?(d=Math.min(1+c.x/f/2,1),o=this._hsv2rgb(m,v,d),s=o):(d=1,o=this._hsv2rgb(m,v,d),s=this.axisColor)}else o="gray",s=this.axisColor;t.lineWidth=this._getStrokeWidth(e);var y=[e,n,r,i];this._polygon(t,y,o,s)}},i.prototype._drawGridLine=function(t,e,n){if(void 0!==e&&void 0!==n){var i=(e.point.z+n.point.z)/2,r=240*(1-(i-this.zRange.min)*this.scale.z/this.verticalRatio);t.lineWidth=2*this._getStrokeWidth(e),t.strokeStyle=this._hsv2rgb(r,1,1),this._line(t,e.screen,n.screen)}},i.prototype._redrawGridGraphPoint=function(t,e){this._drawGridLine(t,e,e.pointRight),this._drawGridLine(t,e,e.pointTop)},i.prototype._redrawLineGraphPoint=function(t,e){void 0!==e.pointNext&&(t.lineWidth=this._getStrokeWidth(e),t.strokeStyle=this.dataColor.stroke,this._line(t,e.screen,e.pointNext.screen))},i.prototype._redrawDataGraph=function(){var t,e=this._getContext();if(!(void 0===this.dataPoints||this.dataPoints.length<=0))for(this._calcTranslations(this.dataPoints),t=0;t0?1:t<0?-1:0}var i=e[0],r=e[1],o=e[2],s=n((r.x-i.x)*(t.y-i.y)-(r.y-i.y)*(t.x-i.x)),a=n((o.x-r.x)*(t.y-r.y)-(o.y-r.y)*(t.x-r.x)),h=n((i.x-o.x)*(t.y-o.y)-(i.y-o.y)*(t.x-o.x));return!(0!=s&&0!=a&&s!=a||0!=a&&0!=h&&a!=h||0!=s&&0!=h&&s!=h)},i.prototype._dataPointFromXY=function(t,e){var n,r=100,o=null,s=null,a=null,h=new c(t,e);if(this.style===i.STYLE.BAR||this.style===i.STYLE.BARCOLOR||this.style===i.STYLE.BARSIZE)for(n=this.dataPoints.length-1;n>=0;n--){o=this.dataPoints[n];var u=o.surfaces;if(u)for(var l=u.length-1;l>=0;l--){var f=u[l],d=f.corners,p=[d[0].screen,d[1].screen,d[2].screen],m=[d[2].screen,d[3].screen,d[0].screen];if(this._insideTriangle(h,p)||this._insideTriangle(h,m))return o}}else for(n=0;n"+this.xLabel+":"+t.point.x+""+this.yLabel+":"+t.point.y+""+this.zLabel+":"+t.point.z+"",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(n),this.frame.appendChild(i);var r=e.offsetWidth,o=e.offsetHeight,s=n.offsetHeight,a=i.offsetWidth,h=i.offsetHeight,u=t.screen.x-r/2;u=Math.min(Math.max(u,10),this.frame.clientWidth-10-r),n.style.left=t.screen.x+"px",n.style.top=t.screen.y-s+"px",e.style.left=u+"px",e.style.top=t.screen.y-s-o+"px",i.style.left=t.screen.x-a/2+"px",i.style.top=t.screen.y-h/2+"px"},i.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},i.prototype.setCameraPosition=function(t){v.setCameraPosition(t,this),this.redraw()},i.prototype.setSize=function(t,e){this._setSize(t,e),this.redraw()},t.exports=i},function(t,e){function n(t){if(t)return i(t)}function i(t){for(var e in n.prototype)t[e]=n.prototype[e];return t}t.exports=n,n.prototype.on=n.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},n.prototype.once=function(t,e){function n(){i.off(t,n),e.apply(this,arguments)}var i=this;return this._callbacks=this._callbacks||{},n.fn=e,this.on(t,n),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks[t];if(!n)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var i,r=0;ro&&(t=i(t)*o),n(e)>o&&(e=i(e)*o),this.cameraOffset.x=t,this.cameraOffset.y=e,this.calculateCameraOrientation()},r.prototype.getOffset=function(t,e){return this.cameraOffset},r.prototype.setArmLocation=function(t,e,n){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=n,this.calculateCameraOrientation()},r.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),void 0===t&&void 0===e||this.calculateCameraOrientation()},r.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},r.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.setOffset(this.cameraOffset.x,this.cameraOffset.y),this.calculateCameraOrientation())},r.prototype.getArmLength=function(){return this.armLength},r.prototype.getCameraLocation=function(){return this.cameraLocation},r.prototype.getCameraRotation=function(){return this.cameraRotation},r.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal;var t=this.cameraRotation.x,e=(this.cameraRotation.y,this.cameraRotation.z),n=this.cameraOffset.x,i=this.cameraOffset.y,r=Math.sin,o=Math.cos;this.cameraLocation.x=this.cameraLocation.x+n*o(e)+i*-r(e)*o(t),this.cameraLocation.y=this.cameraLocation.y+n*r(e)+i*o(e)*o(t),this.cameraLocation.z=this.cameraLocation.z+i*r(t)},t.exports=r},function(t,e,n){t.exports={default:n(99),__esModule:!0}},function(t,e,n){n(100),t.exports=n(17).Math.sign},function(t,e,n){var i=n(15);i(i.S,"Math",{sign:n(101)})},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,n){function i(t,e,n){this.data=t,this.column=e,this.graph=n,this.index=void 0,this.value=void 0,this.values=n.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:t0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,n.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var r=n(92);i.prototype.isLoaded=function(){return this.loaded},i.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},i.prototype.getLabel=function(){return this.graph.filterLabel},i.prototype.getColumn=function(){return this.column},i.prototype.getSelectedValue=function(){if(void 0!==this.index)return this.values[this.index]},i.prototype.getValues=function(){return this.values},i.prototype.getValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");return this.values[t]},i.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var n={};n.column=this.column,n.value=this.values[t];var i=new r(this.data,{filter:function(t){return t[n.column]==n.value}}).get();e=this.graph._getDataPoints(i),this.dataPoints[t]=e}return e},i.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},i.prototype.selectValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");this.index=t,this.value=this.values[t]},i.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},i.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},i.prototype.setIndex=function(t){if(!(tthis.values.length-1&&(i=this.values.length-1),i},i.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,n=t/(this.values.length-1)*e,i=n+3;return i},i.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,n=this.startSlideX+e,i=this.leftToIndex(n);this.setIndex(i),r.preventDefault()},i.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",r.removeEventListener(document,"mousemove",this.onmousemove),r.removeEventListener(document,"mouseup",this.onmouseup),r.preventDefault()},t.exports=i},function(t,e){function n(t,e,n,i){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,n,i)}n.prototype.isNumeric=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},n.prototype.setRange=function(t,e,n,i){if(!this.isNumeric(t))throw new Error("Parameter 'start' is not numeric; value: "+t);if(!this.isNumeric(e))throw new Error("Parameter 'end' is not numeric; value: "+t);if(!this.isNumeric(n))throw new Error("Parameter 'step' is not numeric; value: "+t);this._start=t?t:0,this._end=e?e:0,this.setStep(n,i)},n.prototype.setStep=function(t,e){void 0===t||t<=0||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=n.calculatePrettyStep(t):this._step=t)},n.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},n=Math.pow(10,Math.round(e(t))),i=2*Math.pow(10,Math.round(e(t/2))),r=5*Math.pow(10,Math.round(e(t/5))),o=n;return Math.abs(i-t)<=Math.abs(o-t)&&(o=i),Math.abs(r-t)<=Math.abs(o-t)&&(o=r),o<=0&&(o=1),o},n.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},n.prototype.getStep=function(){return this._step},n.prototype.start=function(t){void 0===t&&(t=!1),this._current=this._start-this._start%this._step,t&&this.getCurrent()this._end},t.exports=n},function(t,e){function n(){this.min=void 0,this.max=void 0}n.prototype.adjust=function(t){void 0!==t&&((void 0===this.min||this.min>t)&&(this.min=t),(void 0===this.max||this.maxn)throw new Error("Passed expansion value makes range invalid");this.min=e,this.max=n}},n.prototype.range=function(){return this.max-this.min},n.prototype.center=function(){return(this.min+this.max)/2},t.exports=n},function(t,e,n){function i(t){return t&&t.__esModule?t:{default:t}}function r(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function o(t){return void 0===t||""===t||"string"!=typeof t?t:t.charAt(0).toUpperCase()+t.slice(1)}function s(t,e){return void 0===t||""===t?e:t+o(e)}function a(t,e,n,i){var r,o;for(var a in n)r=n[a],o=s(i,r),e[o]=t[r]}function h(t,e,n,i){var r,o;for(var a in n)r=n[a],void 0!==t[r]&&(o=s(i,r),e[o]=t[r])}function u(t,e){if(void 0===t||r(t))throw new Error("No DEFAULTS passed");if(void 0===e)throw new Error("No dst passed");k=t,a(t,e,D),a(t,e,M,"default"),c(t,e),e.margin=10,e.showGrayBottom=!1,e.showTooltip=!1,e.onclick_callback=null,e.eye=new b(0,0,-1)}function l(t,e){if(void 0!==t){if(void 0===e)throw new Error("No dst passed");if(void 0===k||r(k))throw new Error("DEFAULTS not set for module Settings");h(t,e,D),h(t,e,M,"default"),c(t,e)}}function c(t,e){void 0!==t.backgroundColor&&v(t.backgroundColor,e),y(t.dataColor,e),m(t.style,e),f(t.showLegend,e),g(t.cameraPosition,e),void 0!==t.tooltip&&(e.showTooltip=t.tooltip),void 0!=t.onclick&&(e.onclick_callback=t.onclick)}function f(t,e){if(void 0===t){var n=void 0===k.showLegend;if(n){var i=e.style===S.DOTCOLOR||e.style===S.DOTSIZE;e.showLegend=i}}else e.showLegend=t}function d(t){var e=T[t];return void 0===e?-1:e}function p(t){var e=!1;for(var n in S)if(S[n]===t){e=!0;break}return e}function m(t,e){if(void 0!==t){var n;if("string"==typeof t){if(n=d(t),n===-1)throw new Error("Style '"+t+"' is invalid")}else{if(!p(t))throw new Error("Style '"+t+"' is invalid");n=t}e.style=n}}function v(t,e){var n="white",i="gray",r=1;if("string"==typeof t)n=t,i="none",r=0;else{if("object"!==("undefined"==typeof t?"undefined":(0,w.default)(t)))throw new Error("Unsupported type of backgroundColor");void 0!==t.fill&&(n=t.fill),void 0!==t.stroke&&(i=t.stroke),void 0!==t.strokeWidth&&(r=t.strokeWidth)}e.frame.style.backgroundColor=n,e.frame.style.borderColor=i,e.frame.style.borderWidth=r+"px",e.frame.style.borderStyle="solid"}function y(t,e){void 0!==t&&(void 0===e.dataColor&&(e.dataColor={}),"string"==typeof t?(e.dataColor.fill=t,e.dataColor.stroke=t):(t.fill&&(e.dataColor.fill=t.fill),t.stroke&&(e.dataColor.stroke=t.stroke),void 0!==t.strokeWidth&&(e.dataColor.strokeWidth=t.strokeWidth)))}function g(t,e){var n=t;void 0!==n&&(void 0===e.camera&&(e.camera=new x),e.camera.setArmRotation(n.horizontal,n.vertical),e.camera.setArmLength(n.distance))}var _=n(62),w=i(_),x=n(97),b=n(95),S={BAR:0,BARCOLOR:1,BARSIZE:2,DOT:3,DOTLINE:4,DOTCOLOR:5,DOTSIZE:6,GRID:7,LINE:8,SURFACE:9},T={dot:S.DOT,"dot-line":S.DOTLINE,"dot-color":S.DOTCOLOR,"dot-size":S.DOTSIZE,line:S.LINE,grid:S.GRID,surface:S.SURFACE,bar:S.BAR,"bar-color":S.BARCOLOR,"bar-size":S.BARSIZE},D=["width","height","filterLabel","legendLabel","xLabel","yLabel","zLabel","xValueLabel","yValueLabel","zValueLabel","showGrid","showPerspective","showShadow","keepAspectRatio","verticalRatio","dotSizeRatio","showAnimationControls","animationInterval","animationPreload","animationAutoStart","axisColor","gridColor","xCenter","yCenter"],M=["xBarWidth","yBarWidth","valueMin","valueMax","xMin","xMax","xStep","yMin","yMax","yStep","zMin","zMax","zStep"],k=void 0;t.exports.STYLE=S,t.exports.setDefaults=u,t.exports.setOptions=l,t.exports.setCameraPosition=g},function(t,e,n){if("undefined"!=typeof window){var i=n(108),r=window.Hammer||n(109);t.exports=i(r,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,n){var i,r,o;!function(n){r=[],i=n,o="function"==typeof i?i.apply(e,r):i,!(void 0!==o&&(t.exports=o))}(function(){var t=null;return function e(n,i){function r(t){return t.match(/[^ ]+/g)}function o(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var n=!1;e.stopPropagation=function(){n=!0};var i=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof i&&(e.srcEvent.stopPropagation=function(){i(),e.stopPropagation()}),e.firstTarget=t;for(var r=t;r&&!n;){var o=r.hammer;if(o)for(var s,a=0;a0?u._handlers[t]=i:(n.off(t,o),delete u._handlers[t]))}),u},u.emit=function(e,i){t=i.target,n.emit(e,i)},u.destroy=function(){var t=n.element.hammer,e=t.indexOf(u);e!==-1&&t.splice(e,1),t.length||delete n.element.hammer,u._handlers={},n.destroy()},u}})},function(t,e,n){var i;/*! Hammer.JS - v2.0.7 - 2016-04-22 +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return t[i].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){e.util=n(1),e.DOMutil=n(87),e.DataSet=n(88),e.DataView=n(92),e.Queue=n(91),e.Graph3d=n(93),e.graph3d={Camera:n(101),Filter:n(106),Point2d:n(100),Point3d:n(99),Slider:n(107),StepNumber:n(108)},e.moment=n(82),e.Hammer=n(111),e.keycharm=n(114)},function(t,e,n){function i(t){return t&&t.__esModule?t:{default:t}}var r=n(2),o=i(r),s=n(55),a=i(s),h=n(58),u=i(h),l=n(62),c=i(l),f=n(82),d=n(86);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,n,i){if(e==t)return.5;var r=1/(e-t);return Math.max(0,(i-t)*r)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var n=p.exec(t);if(n)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return d.v4()},e.assignAllKeys=function(t,e){for(var n in t)t.hasOwnProperty(n)&&"object"!==(0,c.default)(t[n])&&(t[n]=e)},e.fillIfDefined=function(t,n){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var r in t)void 0!==n[r]&&("object"!==(0,c.default)(n[r])?void 0!==n[r]&&null!==n[r]||void 0===t[r]||i!==!0?t[r]=n[r]:delete t[r]:"object"===(0,c.default)(t[r])&&e.fillIfDefined(t[r],n[r],i))},e.protoExtend=function(t,e){for(var n=1;n3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(i))throw new TypeError("Arrays are not supported by deepExtend");for(var o=2;o3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(i))throw new TypeError("Arrays are not supported by deepExtend");for(var o in i)if(i.hasOwnProperty(o)&&t.indexOf(o)==-1)if(i[o]&&i[o].constructor===Object)void 0===n[o]&&(n[o]={}),n[o].constructor===Object?e.deepExtend(n[o],i[o]):null===i[o]&&void 0!==n[o]&&r===!0?delete n[o]:n[o]=i[o];else if(Array.isArray(i[o])){n[o]=[];for(var s=0;s=0&&(e="DOMMouseScroll"),t.addEventListener(e,n,i)):t.attachEvent("on"+e,n)},e.removeEventListener=function(t,e,n,i){t.removeEventListener?(void 0===i&&(i=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,n,i)):t.detachEvent("on"+e,n)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var n=t;n;){if(n===e)return!0;n=n.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,n){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":n||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,n,i){return e+e+n+n+i+i});var n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return n?{r:parseInt(n[1],16),g:parseInt(n[2],16),b:parseInt(n[3],16)}:null},e.overrideOpacity=function(t,n){if(t.indexOf("rgba")!=-1)return t;if(t.indexOf("rgb")!=-1){var i=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+i[0]+","+i[1]+","+i[2]+","+n+")"}var i=e.hexToRGB(t);return null==i?t:"rgba("+i.r+","+i.g+","+i.b+","+n+")"},e.RGBToHex=function(t,e,n){return"#"+((1<<24)+(t<<16)+(e<<8)+n).toString(16).slice(1)},e.parseColor=function(t){var n;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var i=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(i[0],i[1],i[2])}if(e.isValidHex(t)===!0){var r=e.hexToHSV(t),o={h:r.h,s:.8*r.s,v:Math.min(1,1.02*r.v)},s={h:r.h,s:Math.min(1,1.25*r.s),v:.8*r.v},a=e.HSVToHex(s.h,s.s,s.v),h=e.HSVToHex(o.h,o.s,o.v);n={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else n={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else n={},n.background=t.background||void 0,n.border=t.border||void 0,e.isString(t.highlight)?n.highlight={border:t.highlight,background:t.highlight}:(n.highlight={},n.highlight.background=t.highlight&&t.highlight.background||void 0,n.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?n.hover={border:t.hover,background:t.hover}:(n.hover={},n.hover.background=t.hover&&t.hover.background||void 0,n.hover.border=t.hover&&t.hover.border||void 0);return n},e.RGBToHSV=function(t,e,n){t/=255,e/=255,n/=255;var i=Math.min(t,Math.min(e,n)),r=Math.max(t,Math.max(e,n));if(i==r)return{h:0,s:0,v:i};var o=t==i?e-n:n==i?t-e:n-t,s=t==i?3:n==i?1:5,a=60*(s-o/(r-i))/360,h=(r-i)/r,u=r;return{h:a,s:h,v:u}};var m={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var n=t.split(":"),i=n[0].trim(),r=n[1].trim();e[i]=r}}),e},join:function(t){return(0,u.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,n){var i=m.split(t.style.cssText),r=m.split(n),o=e.extend(i,r);t.style.cssText=m.join(o)},e.removeCssText=function(t,e){var n=m.split(t.style.cssText),i=m.split(e);for(var r in i)i.hasOwnProperty(r)&&delete n[r];t.style.cssText=m.join(n)},e.HSVToRGB=function(t,e,n){var i,r,o,s=Math.floor(6*t),a=6*t-s,h=n*(1-e),u=n*(1-a*e),l=n*(1-(1-a)*e);switch(s%6){case 0:i=n,r=l,o=h;break;case 1:i=u,r=n,o=h;break;case 2:i=h,r=n,o=l;break;case 3:i=h,r=u,o=n;break;case 4:i=l,r=h,o=n;break;case 5:i=n,r=h,o=u}return{r:Math.floor(255*i),g:Math.floor(255*r),b:Math.floor(255*o)}},e.HSVToHex=function(t,n,i){var r=e.HSVToRGB(t,n,i);return e.RGBToHex(r.r,r.g,r.b)},e.hexToHSV=function(t){var n=e.hexToRGB(t);return e.RGBToHSV(n.r,n.g,n.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,n){if("object"==("undefined"==typeof n?"undefined":(0,c.default)(n))){for(var i=(0,a.default)(n),r=0;r0&&e(i,t[r-1])<0;r--)t[r]=t[r-1];t[r]=i}return t},e.mergeOptions=function(t,e,n){var i=(arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{});if(null===e[n])t[n]=(0,a.default)(i[n]);else if(void 0!==e[n])if("boolean"==typeof e[n])t[n].enabled=e[n];else{void 0===e[n].enabled&&(t[n].enabled=!0);for(var r in e[n])e[n].hasOwnProperty(r)&&(t[n][r]=e[n][r])}},e.binarySearchCustom=function(t,e,n,i){for(var r=1e4,o=0,s=0,a=t.length-1;s<=a&&o0)return"before"==i?Math.max(0,h-1):h;if(r(s,e)<0&&r(a,e)>0)return"before"==i?h:Math.min(t.length-1,h+1);r(s,e)<0?c=h+1:f=h-1,l++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;return n==i&&(i=e.clientWidth),document.body.removeChild(e),n-i},e.topMost=function(t,e){var n=void 0;Array.isArray(e)||(e=[e]);var i=!0,r=!1,s=void 0;try{for(var a,h=(0,o.default)(t);!(i=(a=h.next()).done);i=!0){var u=a.value;if(u){n=u[e[0]];for(var l=1;l=t.length?(this._t=void 0,r(1)):"keys"==e?r(0,n):"values"==e?r(0,t[n]):r(0,[n,t[n]])},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,n){var i=n(10),r=n(12);t.exports=function(t){return i(r(t))}},function(t,e,n){var i=n(11);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==i(t)?t.split(""):Object(t)}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var i=n(14),r=n(15),o=n(30),s=n(20),a=n(31),h=n(8),u=n(32),l=n(46),c=n(48),f=n(47)("iterator"),d=!([].keys&&"next"in[].keys()),p="@@iterator",m="keys",v="values",y=function(){return this};t.exports=function(t,e,n,g,_,w,x){u(n,e,g);var b,S,T,D=function(t){if(!d&&t in E)return E[t];switch(t){case m:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},M=e+" Iterator",k=_==v,O=!1,E=t.prototype,C=E[f]||E[p]||_&&E[_],P=C||D(_),L=_?k?D("entries"):P:void 0,Y="Array"==e?E.entries||C:C;if(Y&&(T=c(Y.call(new t)),T!==Object.prototype&&(l(T,M,!0),i||a(T,f)||s(T,f,y))),k&&C&&C.name!==v&&(O=!0,P=function(){return C.call(this)}),i&&!x||!d&&!O&&E[f]||s(E,f,P),h[e]=P,h[M]=y,_)if(b={values:k?P:D(v),keys:w?P:D(m),entries:L},x)for(S in b)S in E||o(E,S,b[S]);else r(r.P+r.F*(d||O),e,b);return b}},function(t,e){t.exports=!0},function(t,e,n){var i=n(16),r=n(17),o=n(18),s=n(20),a="prototype",h=function(t,e,n){var u,l,c,f=t&h.F,d=t&h.G,p=t&h.S,m=t&h.P,v=t&h.B,y=t&h.W,g=d?r:r[e]||(r[e]={}),_=g[a],w=d?i:p?i[e]:(i[e]||{})[a];d&&(n=e);for(u in n)l=!f&&w&&void 0!==w[u],l&&u in g||(c=l?w[u]:n[u],g[u]=d&&"function"!=typeof w[u]?n[u]:v&&l?o(c,i):y&&w[u]==c?function(t){var e=function(e,n,i){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,i)}return t.apply(this,arguments)};return e[a]=t[a],e}(c):m&&"function"==typeof c?o(Function.call,c):c,m&&((g.virtual||(g.virtual={}))[u]=c,t&h.R&&_&&!_[u]&&s(_,u,c)))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},function(t,e,n){var i=n(19);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,r){return t.call(e,n,i,r)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){var i=n(21),r=n(29);t.exports=n(25)?function(t,e,n){return i.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var i=n(22),r=n(24),o=n(28),s=Object.defineProperty;e.f=n(25)?Object.defineProperty:function(t,e,n){if(i(t),e=o(e,!0),i(n),r)try{return s(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var i=n(23);t.exports=function(t){if(!i(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){t.exports=!n(25)&&!n(26)(function(){return 7!=Object.defineProperty(n(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){t.exports=!n(26)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var i=n(23),r=n(16).document,o=i(r)&&i(r.createElement);t.exports=function(t){return o?r.createElement(t):{}}},function(t,e,n){var i=n(23);t.exports=function(t,e){if(!i(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!i(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){t.exports=n(20)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var i=n(33),r=n(29),o=n(46),s={};n(20)(s,n(47)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=i(s,{next:r(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var i=n(22),r=n(34),o=n(44),s=n(41)("IE_PROTO"),a=function(){},h="prototype",u=function(){var t,e=n(27)("iframe"),i=o.length,r="<",s=">";for(e.style.display="none",n(45).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(r+"script"+s+"document.F=Object"+r+"/script"+s),t.close(),u=t.F;i--;)delete u[h][o[i]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(a[h]=i(t),n=new a,a[h]=null,n[s]=t):n=u(),void 0===e?n:r(n,e)}},function(t,e,n){var i=n(21),r=n(22),o=n(35);t.exports=n(25)?Object.defineProperties:function(t,e){r(t);for(var n,s=o(e),a=s.length,h=0;a>h;)i.f(t,n=s[h++],e[n]);return t}},function(t,e,n){var i=n(36),r=n(44);t.exports=Object.keys||function(t){return i(t,r)}},function(t,e,n){var i=n(31),r=n(9),o=n(37)(!1),s=n(41)("IE_PROTO");t.exports=function(t,e){var n,a=r(t),h=0,u=[];for(n in a)n!=s&&i(a,n)&&u.push(n);for(;e.length>h;)i(a,n=e[h++])&&(~o(u,n)||u.push(n));return u}},function(t,e,n){var i=n(9),r=n(38),o=n(40);t.exports=function(t){return function(e,n,s){var a,h=i(e),u=r(h.length),l=o(s,u);if(t&&n!=n){for(;u>l;)if(a=h[l++],a!=a)return!0}else for(;u>l;l++)if((t||l in h)&&h[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var i=n(39),r=Math.min;t.exports=function(t){return t>0?r(i(t),9007199254740991):0}},function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},function(t,e,n){var i=n(39),r=Math.max,o=Math.min;t.exports=function(t,e){return t=i(t),t<0?r(t+e,0):o(t,e)}},function(t,e,n){var i=n(42)("keys"),r=n(43);t.exports=function(t){return i[t]||(i[t]=r(t))}},function(t,e,n){var i=n(16),r="__core-js_shared__",o=i[r]||(i[r]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e){var n=0,i=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+i).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){t.exports=n(16).document&&document.documentElement},function(t,e,n){var i=n(21).f,r=n(31),o=n(47)("toStringTag");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,o)&&i(t,o,{configurable:!0,value:e})}},function(t,e,n){var i=n(42)("wks"),r=n(43),o=n(16).Symbol,s="function"==typeof o,a=t.exports=function(t){return i[t]||(i[t]=s&&o[t]||(s?o:r)("Symbol."+t))};a.store=i},function(t,e,n){var i=n(31),r=n(49),o=n(41)("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),i(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},function(t,e,n){var i=n(12);t.exports=function(t){return Object(i(t))}},function(t,e,n){var i=n(51)(!0);n(13)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=i(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var i=n(39),r=n(12);t.exports=function(t){return function(e,n){var o,s,a=String(r(e)),h=i(n),u=a.length;return h<0||h>=u?t?"":void 0:(o=a.charCodeAt(h),o<55296||o>56319||h+1===u||(s=a.charCodeAt(h+1))<56320||s>57343?t?a.charAt(h):o:t?a.slice(h,h+2):(o-55296<<10)+(s-56320)+65536)}}},function(t,e,n){var i=n(22),r=n(53);t.exports=n(17).getIterator=function(t){var e=r(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return i(e.call(t))}},function(t,e,n){var i=n(54),r=n(47)("iterator"),o=n(8);t.exports=n(17).getIteratorMethod=function(t){if(void 0!=t)return t[r]||t["@@iterator"]||o[i(t)]}},function(t,e,n){var i=n(11),r=n(47)("toStringTag"),o="Arguments"==i(function(){return arguments}()),s=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=s(e=Object(t),r))?n:o?i(e):"Object"==(a=i(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,n){t.exports={default:n(56),__esModule:!0}},function(t,e,n){n(57);var i=n(17).Object;t.exports=function(t,e){return i.create(t,e)}},function(t,e,n){var i=n(15);i(i.S,"Object",{create:n(33)})},function(t,e,n){t.exports={default:n(59),__esModule:!0}},function(t,e,n){n(60),t.exports=n(17).Object.keys},function(t,e,n){var i=n(49),r=n(35);n(61)("keys",function(){return function(t){return r(i(t))}})},function(t,e,n){var i=n(15),r=n(17),o=n(26);t.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],s={};s[t]=e(n),i(i.S+i.F*o(function(){n(1)}),"Object",s)}},function(t,e,n){function i(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var r=n(63),o=i(r),s=n(66),a=i(s),h="function"==typeof a.default&&"symbol"==typeof o.default?function(t){return typeof t}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":typeof t};e.default="function"==typeof a.default&&"symbol"===h(o.default)?function(t){return"undefined"==typeof t?"undefined":h(t)}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":"undefined"==typeof t?"undefined":h(t)}},function(t,e,n){t.exports={default:n(64),__esModule:!0}},function(t,e,n){n(50),n(4),t.exports=n(65).f("iterator")},function(t,e,n){e.f=n(47)},function(t,e,n){t.exports={default:n(67),__esModule:!0}},function(t,e,n){n(68),n(79),n(80),n(81),t.exports=n(17).Symbol},function(t,e,n){var i=n(16),r=n(31),o=n(25),s=n(15),a=n(30),h=n(69).KEY,u=n(26),l=n(42),c=n(46),f=n(43),d=n(47),p=n(65),m=n(70),v=n(71),y=n(72),g=n(75),_=n(22),w=n(9),x=n(28),b=n(29),S=n(33),T=n(76),D=n(78),M=n(21),k=n(35),O=D.f,E=M.f,C=T.f,P=i.Symbol,L=i.JSON,Y=L&&L.stringify,R="prototype",A=d("_hidden"),I=d("toPrimitive"),W={}.propertyIsEnumerable,N=l("symbol-registry"),z=l("symbols"),F=l("op-symbols"),j=Object[R],G="function"==typeof P,B=i.QObject,V=!B||!B[R]||!B[R].findChild,U=o&&u(function(){return 7!=S(E({},"a",{get:function(){return E(this,"a",{value:7}).a}})).a})?function(t,e,n){var i=O(j,e);i&&delete j[e],E(t,e,n),i&&t!==j&&E(j,e,i)}:E,H=function(t){var e=z[t]=S(P[R]);return e._k=t,e},X=G&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},Z=function(t,e,n){return t===j&&Z(F,e,n),_(t),e=x(e,!0),_(n),r(z,e)?(n.enumerable?(r(t,A)&&t[A][e]&&(t[A][e]=!1),n=S(n,{enumerable:b(0,!1)})):(r(t,A)||E(t,A,b(1,{})),t[A][e]=!0),U(t,e,n)):E(t,e,n)},q=function(t,e){_(t);for(var n,i=y(e=w(e)),r=0,o=i.length;o>r;)Z(t,n=i[r++],e[n]);return t},$=function(t,e){return void 0===e?S(t):q(S(t),e)},Q=function(t){var e=W.call(this,t=x(t,!0));return!(this===j&&r(z,t)&&!r(F,t))&&(!(e||!r(this,t)||!r(z,t)||r(this,A)&&this[A][t])||e)},J=function(t,e){if(t=w(t),e=x(e,!0),t!==j||!r(z,e)||r(F,e)){var n=O(t,e);return!n||!r(z,e)||r(t,A)&&t[A][e]||(n.enumerable=!0),n}},K=function(t){for(var e,n=C(w(t)),i=[],o=0;n.length>o;)r(z,e=n[o++])||e==A||e==h||i.push(e);return i},tt=function(t){for(var e,n=t===j,i=C(n?F:w(t)),o=[],s=0;i.length>s;)!r(z,e=i[s++])||n&&!r(j,e)||o.push(z[e]);return o};G||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=f(arguments.length>0?arguments[0]:void 0),e=function(n){this===j&&e.call(F,n),r(this,A)&&r(this[A],t)&&(this[A][t]=!1),U(this,t,b(1,n))};return o&&V&&U(j,t,{configurable:!0,set:e}),H(t)},a(P[R],"toString",function(){return this._k}),D.f=J,M.f=Z,n(77).f=T.f=K,n(74).f=Q,n(73).f=tt,o&&!n(14)&&a(j,"propertyIsEnumerable",Q,!0),p.f=function(t){return H(d(t))}),s(s.G+s.W+s.F*!G,{Symbol:P});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)d(et[nt++]);for(var et=k(d.store),nt=0;et.length>nt;)m(et[nt++]);s(s.S+s.F*!G,"Symbol",{for:function(t){return r(N,t+="")?N[t]:N[t]=P(t)},keyFor:function(t){if(X(t))return v(N,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){V=!0},useSimple:function(){V=!1}}),s(s.S+s.F*!G,"Object",{create:$,defineProperty:Z,defineProperties:q,getOwnPropertyDescriptor:J,getOwnPropertyNames:K,getOwnPropertySymbols:tt}),L&&s(s.S+s.F*(!G||u(function(){var t=P();return"[null]"!=Y([t])||"{}"!=Y({a:t})||"{}"!=Y(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!X(t)){for(var e,n,i=[t],r=1;arguments.length>r;)i.push(arguments[r++]);return e=i[1],"function"==typeof e&&(n=e),!n&&g(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!X(e))return e}),i[1]=e,Y.apply(L,i)}}}),P[R][I]||n(20)(P[R],I,P[R].valueOf),c(P,"Symbol"),c(Math,"Math",!0),c(i.JSON,"JSON",!0)},function(t,e,n){var i=n(43)("meta"),r=n(23),o=n(31),s=n(21).f,a=0,h=Object.isExtensible||function(){return!0},u=!n(26)(function(){return h(Object.preventExtensions({}))}),l=function(t){s(t,i,{value:{i:"O"+ ++a,w:{}}})},c=function(t,e){if(!r(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,i)){if(!h(t))return"F";if(!e)return"E";l(t)}return t[i].i},f=function(t,e){if(!o(t,i)){if(!h(t))return!0;if(!e)return!1;l(t)}return t[i].w},d=function(t){return u&&p.NEED&&h(t)&&!o(t,i)&&l(t),t},p=t.exports={KEY:i,NEED:!1,fastKey:c,getWeak:f,onFreeze:d}},function(t,e,n){var i=n(16),r=n(17),o=n(14),s=n(65),a=n(21).f;t.exports=function(t){var e=r.Symbol||(r.Symbol=o?{}:i.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:s.f(t)})}},function(t,e,n){var i=n(35),r=n(9);t.exports=function(t,e){for(var n,o=r(t),s=i(o),a=s.length,h=0;a>h;)if(o[n=s[h++]]===e)return n}},function(t,e,n){var i=n(35),r=n(73),o=n(74);t.exports=function(t){var e=i(t),n=r.f;if(n)for(var s,a=n(t),h=o.f,u=0;a.length>u;)h.call(t,s=a[u++])&&e.push(s);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var i=n(11);t.exports=Array.isArray||function(t){return"Array"==i(t)}},function(t,e,n){var i=n(9),r=n(77).f,o={}.toString,s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return r(t)}catch(t){return s.slice()}};t.exports.f=function(t){return s&&"[object Window]"==o.call(t)?a(t):r(i(t))}},function(t,e,n){var i=n(36),r=n(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return i(t,r)}},function(t,e,n){var i=n(74),r=n(29),o=n(9),s=n(28),a=n(31),h=n(24),u=Object.getOwnPropertyDescriptor;e.f=n(25)?u:function(t,e){if(t=o(t),e=s(e,!0),h)try{return u(t,e)}catch(t){}if(a(t,e))return r(!i.f.call(t,e),t[e])}},function(t,e){},function(t,e,n){n(70)("asyncIterator")},function(t,e,n){n(70)("observable")},function(t,e,n){t.exports="undefined"!=typeof window&&window.moment||n(83)},function(t,e,n){(function(t){!function(e,n){t.exports=n()}(this,function(){function e(){return vi.apply(null,arguments)}function n(t){vi=t}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function r(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t){var e;for(e in t)return!1;return!0}function s(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function a(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){var n,i=[];for(n=0;n0)for(n in _i)i=_i[n],r=e[i],v(r)||(t[i]=r);return t}function g(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),wi===!1&&(wi=!0,e.updateOffset(this),wi=!1)}function _(t){return t instanceof g||null!=t&&null!=t._isAMomentObject}function w(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function x(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=w(e)),n}function b(t,e,n){var i,r=Math.min(t.length,e.length),o=Math.abs(t.length-e.length),s=0;for(i=0;i0?"future":"past"];return M(n)?n(e):n.replace(/%s/i,e)}function I(t,e){var n=t.toLowerCase();Pi[n]=Pi[n+"s"]=Pi[e]=t}function W(t){return"string"==typeof t?Pi[t]||Pi[t.toLowerCase()]:void 0}function N(t){var e,n,i={};for(n in t)u(t,n)&&(e=W(n),e&&(i[e]=t[n]));return i}function z(t,e){Li[t]=e}function F(t){var e=[];for(var n in t)e.push({unit:n,priority:Li[n]});return e.sort(function(t,e){return t.priority-e.priority}),e}function j(t,n){return function(i){return null!=i?(B(this,t,i),e.updateOffset(this,n),this):G(this,t)}}function G(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function B(t,e,n){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](n)}function V(t){return t=W(t),M(this[t])?this[t]():this}function U(t,e){if("object"==typeof t){t=N(t);for(var n=F(t),i=0;i=0;return(o?n?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+i}function X(t,e,n,i){var r=i;"string"==typeof i&&(r=function(){return this[i]()}),t&&(Ii[t]=r),e&&(Ii[e[0]]=function(){return H(r.apply(this,arguments),e[1],e[2])}),n&&(Ii[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),t)})}function Z(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function q(t){var e,n,i=t.match(Yi);for(e=0,n=i.length;e=0&&Ri.test(t);)t=t.replace(Ri,n),Ri.lastIndex=0,i-=1;return t}function J(t,e,n){tr[t]=M(e)?e:function(t,i){return t&&n?n:e}}function K(t,e){return u(tr,t)?tr[t](e._strict,e._locale):new RegExp(tt(t))}function tt(t){return et(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,n,i,r){return e||n||i||r}))}function et(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function nt(t,e){var n,i=e;for("string"==typeof t&&(t=[t]),s(e)&&(i=function(t,n){n[e]=x(t)}),n=0;n=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function wt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function xt(t,e,n){var i=7+e-n,r=(7+wt(t,0,i).getUTCDay()-e)%7;return-r+i-1}function bt(t,e,n,i,r){var o,s,a=(7+n-i)%7,h=xt(t,i,r),u=1+7*(e-1)+a+h;return u<=0?(o=t-1,s=vt(o)+u):u>vt(t)?(o=t+1,s=u-vt(t)):(o=t,s=u),{year:o,dayOfYear:s}}function St(t,e,n){var i,r,o=xt(t.year(),e,n),s=Math.floor((t.dayOfYear()-o-1)/7)+1;return s<1?(r=t.year()-1,i=s+Tt(r,e,n)):s>Tt(t.year(),e,n)?(i=s-Tt(t.year(),e,n),r=t.year()+1):(r=t.year(),i=s),{week:i,year:r}}function Tt(t,e,n){var i=xt(t,e,n),r=xt(t+1,e,n);return(vt(t)-i+r)/7}function Dt(t){return St(t,this._week.dow,this._week.doy).week}function Mt(){return this._week.dow}function kt(){return this._week.doy}function Ot(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Et(t){var e=St(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Ct(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Pt(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function Lt(t,e){return t?i(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:this._weekdays}function Yt(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function Rt(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function At(t,e,n){var i,r,o,s=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)o=c([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(o,"").toLocaleLowerCase();return n?"dddd"===e?(r=cr.call(this._weekdaysParse,s),r!==-1?r:null):"ddd"===e?(r=cr.call(this._shortWeekdaysParse,s),r!==-1?r:null):(r=cr.call(this._minWeekdaysParse,s),r!==-1?r:null):"dddd"===e?(r=cr.call(this._weekdaysParse,s),r!==-1?r:(r=cr.call(this._shortWeekdaysParse,s),r!==-1?r:(r=cr.call(this._minWeekdaysParse,s),r!==-1?r:null))):"ddd"===e?(r=cr.call(this._shortWeekdaysParse,s),r!==-1?r:(r=cr.call(this._weekdaysParse,s),r!==-1?r:(r=cr.call(this._minWeekdaysParse,s),r!==-1?r:null))):(r=cr.call(this._minWeekdaysParse,s),r!==-1?r:(r=cr.call(this._weekdaysParse,s),r!==-1?r:(r=cr.call(this._shortWeekdaysParse,s),r!==-1?r:null)))}function It(t,e,n){var i,r,o;if(this._weekdaysParseExact)return At.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(r=c([2e3,1]).day(i),n&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(r,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(r,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(r,"").replace(".",".?")+"$","i")),this._weekdaysParse[i]||(o="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[i]=new RegExp(o.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[i].test(t))return i;if(n&&"ddd"===e&&this._shortWeekdaysParse[i].test(t))return i;if(n&&"dd"===e&&this._minWeekdaysParse[i].test(t))return i;if(!n&&this._weekdaysParse[i].test(t))return i}}function Wt(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Ct(t,this.localeData()),this.add(t-e,"d")):e}function Nt(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function zt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Pt(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function Ft(t){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(u(this,"_weekdaysRegex")||(this._weekdaysRegex=br),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function jt(t){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(u(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Sr),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Gt(t){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Bt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(u(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Tr),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Bt(){function t(t,e){return e.length-t.length}var e,n,i,r,o,s=[],a=[],h=[],u=[];for(e=0;e<7;e++)n=c([2e3,1]).day(e),i=this.weekdaysMin(n,""),r=this.weekdaysShort(n,""),o=this.weekdays(n,""),s.push(i),a.push(r),h.push(o),u.push(i),u.push(r),u.push(o);for(s.sort(t),a.sort(t),h.sort(t),u.sort(t),e=0;e<7;e++)a[e]=et(a[e]),h[e]=et(h[e]),u[e]=et(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Vt(){return this.hours()%12||12}function Ut(){return this.hours()||24}function Ht(t,e){X(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Xt(t,e){return e._meridiemParse}function Zt(t){return"p"===(t+"").toLowerCase().charAt(0)}function qt(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"}function $t(t){return t?t.toLowerCase().replace("_","-"):t}function Qt(t){for(var e,n,i,r,o=0;o0;){if(i=Jt(r.slice(0,e).join("-")))return i;if(n&&n.length>=e&&b(r,n,!0)>=e-1)break;e--}o++}return null}function Jt(e){var n=null;if(!Er[e]&&"undefined"!=typeof t&&t&&t.exports)try{n=Dr._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Kt(n)}catch(t){}return Er[e]}function Kt(t,e){var n;return t&&(n=v(e)?ne(t):te(t,e),n&&(Dr=n)),Dr._abbr}function te(t,e){if(null!==e){var n=Or;if(e.abbr=t,null!=Er[t])D("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=Er[t]._config;else if(null!=e.parentLocale){if(null==Er[e.parentLocale])return Cr[e.parentLocale]||(Cr[e.parentLocale]=[]),Cr[e.parentLocale].push({name:t,config:e}),null;n=Er[e.parentLocale]._config}return Er[t]=new E(O(n,e)),Cr[t]&&Cr[t].forEach(function(t){te(t.name,t.config)}),Kt(t),Er[t]}return delete Er[t],null}function ee(t,e){if(null!=e){var n,i=Or;null!=Er[t]&&(i=Er[t]._config),e=O(i,e),n=new E(e),n.parentLocale=Er[t],Er[t]=n,Kt(t)}else null!=Er[t]&&(null!=Er[t].parentLocale?Er[t]=Er[t].parentLocale:null!=Er[t]&&delete Er[t]);return Er[t]}function ne(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Dr;if(!i(t)){if(e=Jt(t))return e;t=[t]}return Qt(t)}function ie(){return Ti(Er)}function re(t){var e,n=t._a;return n&&d(t).overflow===-2&&(e=n[ir]<0||n[ir]>11?ir:n[rr]<1||n[rr]>ot(n[nr],n[ir])?rr:n[or]<0||n[or]>24||24===n[or]&&(0!==n[sr]||0!==n[ar]||0!==n[hr])?or:n[sr]<0||n[sr]>59?sr:n[ar]<0||n[ar]>59?ar:n[hr]<0||n[hr]>999?hr:-1,d(t)._overflowDayOfYear&&(err)&&(e=rr),d(t)._overflowWeeks&&e===-1&&(e=ur),d(t)._overflowWeekday&&e===-1&&(e=lr),d(t).overflow=e),t}function oe(t){var e,n,i,r,o,s,a=t._i,h=Pr.exec(a)||Lr.exec(a);if(h){for(d(t).iso=!0,e=0,n=Rr.length;evt(r)&&(d(t)._overflowDayOfYear=!0),n=wt(r,0,t._dayOfYear),t._a[ir]=n.getUTCMonth(),t._a[rr]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=o[e]=i[e];for(;e<7;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[or]&&0===t._a[sr]&&0===t._a[ar]&&0===t._a[hr]&&(t._nextDay=!0,t._a[or]=0),t._d=(t._useUTC?wt:_t).apply(null,o),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[or]=24)}}function le(t){var e,n,i,r,o,s,a,h;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)o=1,s=4,n=ae(e.GG,t._a[nr],St(_e(),1,4).year),i=ae(e.W,1),r=ae(e.E,1),(r<1||r>7)&&(h=!0);else{o=t._locale._week.dow,s=t._locale._week.doy;var u=St(_e(),o,s);n=ae(e.gg,t._a[nr],u.year),i=ae(e.w,u.week),null!=e.d?(r=e.d,(r<0||r>6)&&(h=!0)):null!=e.e?(r=e.e+o,(e.e<0||e.e>6)&&(h=!0)):r=o}i<1||i>Tt(n,o,s)?d(t)._overflowWeeks=!0:null!=h?d(t)._overflowWeekday=!0:(a=bt(n,i,r,o,s),t._a[nr]=a.year,t._dayOfYear=a.dayOfYear)}function ce(t){if(t._f===e.ISO_8601)return void oe(t);t._a=[],d(t).empty=!0;var n,i,r,o,s,a=""+t._i,h=a.length,u=0;for(r=Q(t._f,t._locale).match(Yi)||[],n=0;n0&&d(t).unusedInput.push(s),a=a.slice(a.indexOf(i)+i.length),u+=i.length),Ii[o]?(i?d(t).empty=!1:d(t).unusedTokens.push(o),rt(o,i,t)):t._strict&&!i&&d(t).unusedTokens.push(o);d(t).charsLeftOver=h-u,a.length>0&&d(t).unusedInput.push(a),t._a[or]<=12&&d(t).bigHour===!0&&t._a[or]>0&&(d(t).bigHour=void 0),d(t).parsedDateParts=t._a.slice(0),d(t).meridiem=t._meridiem,t._a[or]=fe(t._locale,t._a[or],t._meridiem),ue(t),re(t)}function fe(t,e,n){var i;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?(i=t.isPM(n),i&&e<12&&(e+=12),i||12!==e||(e=0),e):e}function de(t){var e,n,i,r,o;if(0===t._f.length)return d(t).invalidFormat=!0,void(t._d=new Date(NaN));for(r=0;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function We(){if(!v(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),t=ve(t),t._a){var e=t._isUTC?c(t._a):_e(t._a);this._isDSTShifted=this.isValid()&&b(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Ne(){return!!this.isValid()&&!this._isUTC}function ze(){return!!this.isValid()&&this._isUTC}function Fe(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function je(t,e){var n,i,r,o=t,a=null;return Te(t)?o={ms:t._milliseconds,d:t._days,M:t._months}:s(t)?(o={},e?o[e]=t:o.milliseconds=t):(a=jr.exec(t))?(n="-"===a[1]?-1:1,o={y:0,d:x(a[rr])*n,h:x(a[or])*n,m:x(a[sr])*n,s:x(a[ar])*n,ms:x(De(1e3*a[hr]))*n}):(a=Gr.exec(t))?(n="-"===a[1]?-1:1,o={y:Ge(a[2],n),M:Ge(a[3],n),w:Ge(a[4],n),d:Ge(a[5],n),h:Ge(a[6],n),m:Ge(a[7],n),s:Ge(a[8],n)}):null==o?o={}:"object"==typeof o&&("from"in o||"to"in o)&&(r=Ve(_e(o.from),_e(o.to)),o={},o.ms=r.milliseconds,o.M=r.months),i=new Se(o),Te(t)&&u(t,"_locale")&&(i._locale=t._locale),i}function Ge(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Be(t,e){var n={milliseconds:0,months:0};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function Ve(t,e){var n;return t.isValid()&&e.isValid()?(e=Oe(e,t),t.isBefore(e)?n=Be(t,e):(n=Be(e,t),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Ue(t,e){return function(n,i){var r,o;return null===i||isNaN(+i)||(D(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),o=n,n=i,i=o),n="string"==typeof n?+n:n,r=je(n,i),He(this,r,t),this}}function He(t,n,i,r){var o=n._milliseconds,s=De(n._days),a=De(n._months);t.isValid()&&(r=null==r||r,o&&t._d.setTime(t._d.valueOf()+o*i),s&&B(t,"Date",G(t,"Date")+s*i),a&<(t,G(t,"Month")+a*i),r&&e.updateOffset(t,s||a))}function Xe(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"}function Ze(t,n){var i=t||_e(),r=Oe(i,this).startOf("day"),o=e.calendarFormat(this,r)||"sameElse",s=n&&(M(n[o])?n[o].call(this,i):n[o]);return this.format(s||this.localeData().calendar(o,this,_e(i)))}function qe(){return new g(this)}function $e(t,e){var n=_(t)?t:_e(t);return!(!this.isValid()||!n.isValid())&&(e=W(v(e)?"millisecond":e),"millisecond"===e?this.valueOf()>n.valueOf():n.valueOf()o&&(e=o),Yn.call(this,t,e,n,i,r))}function Yn(t,e,n,i,r){var o=bt(t,e,n,i,r),s=wt(o.year,0,o.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}function Rn(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function An(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function In(t,e){e[hr]=x(1e3*("0."+t))}function Wn(){return this._isUTC?"UTC":""}function Nn(){return this._isUTC?"Coordinated Universal Time":""}function zn(t){return _e(1e3*t)}function Fn(){return _e.apply(null,arguments).parseZone()}function jn(t){return t}function Gn(t,e,n,i){var r=ne(),o=c().set(i,e);return r[n](o,t)}function Bn(t,e,n){if(s(t)&&(e=t,t=void 0),t=t||"",null!=e)return Gn(t,e,n,"month");var i,r=[];for(i=0;i<12;i++)r[i]=Gn(t,i,n,"month");return r}function Vn(t,e,n,i){"boolean"==typeof t?(s(e)&&(n=e,e=void 0),e=e||""):(e=t,n=e,t=!1,s(e)&&(n=e,e=void 0),e=e||"");var r=ne(),o=t?r._week.dow:0;if(null!=n)return Gn(e,(n+o)%7,i,"day");var a,h=[];for(a=0;a<7;a++)h[a]=Gn(e,(a+o)%7,i,"day");return h}function Un(t,e){return Bn(t,e,"months")}function Hn(t,e){return Bn(t,e,"monthsShort")}function Xn(t,e,n){return Vn(t,e,n,"weekdays")}function Zn(t,e,n){return Vn(t,e,n,"weekdaysShort")}function qn(t,e,n){return Vn(t,e,n,"weekdaysMin")}function $n(){var t=this._data;return this._milliseconds=Kr(this._milliseconds),this._days=Kr(this._days),this._months=Kr(this._months),t.milliseconds=Kr(t.milliseconds),t.seconds=Kr(t.seconds),t.minutes=Kr(t.minutes),t.hours=Kr(t.hours),t.months=Kr(t.months),t.years=Kr(t.years),this}function Qn(t,e,n,i){var r=je(e,n);return t._milliseconds+=i*r._milliseconds,t._days+=i*r._days,t._months+=i*r._months,t._bubble()}function Jn(t,e){return Qn(this,t,e,1)}function Kn(t,e){return Qn(this,t,e,-1)}function ti(t){return t<0?Math.floor(t):Math.ceil(t)}function ei(){var t,e,n,i,r,o=this._milliseconds,s=this._days,a=this._months,h=this._data;return o>=0&&s>=0&&a>=0||o<=0&&s<=0&&a<=0||(o+=864e5*ti(ii(a)+s),s=0,a=0),h.milliseconds=o%1e3,t=w(o/1e3),h.seconds=t%60,e=w(t/60),h.minutes=e%60,n=w(e/60),h.hours=n%24,s+=w(n/24),r=w(ni(s)),a+=r,s-=ti(ii(r)),i=w(a/12),a%=12,h.days=s,h.months=a,h.years=i,this}function ni(t){return 4800*t/146097}function ii(t){return 146097*t/4800}function ri(t){var e,n,i=this._milliseconds;if(t=W(t),"month"===t||"year"===t)return e=this._days+i/864e5,n=this._months+ni(e),"month"===t?n:n/12;switch(e=this._days+Math.round(ii(this._months)),t){case"week":return e/7+i/6048e5;case"day":return e+i/864e5;case"hour": +return 24*e+i/36e5;case"minute":return 1440*e+i/6e4;case"second":return 86400*e+i/1e3;case"millisecond":return Math.floor(864e5*e)+i;default:throw new Error("Unknown unit "+t)}}function oi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*x(this._months/12)}function si(t){return function(){return this.as(t)}}function ai(t){return t=W(t),this[t+"s"]()}function hi(t){return function(){return this._data[t]}}function ui(){return w(this.days()/7)}function li(t,e,n,i,r){return r.relativeTime(e||1,!!n,t,i)}function ci(t,e,n){var i=je(t).abs(),r=vo(i.as("s")),o=vo(i.as("m")),s=vo(i.as("h")),a=vo(i.as("d")),h=vo(i.as("M")),u=vo(i.as("y")),l=r0,l[4]=n,li.apply(null,l)}function fi(t){return void 0===t?vo:"function"==typeof t&&(vo=t,!0)}function di(t,e){return void 0!==yo[t]&&(void 0===e?yo[t]:(yo[t]=e,!0))}function pi(t){var e=this.localeData(),n=ci(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)}function mi(){var t,e,n,i=go(this._milliseconds)/1e3,r=go(this._days),o=go(this._months);t=w(i/60),e=w(t/60),i%=60,t%=60,n=w(o/12),o%=12;var s=n,a=o,h=r,u=e,l=t,c=i,f=this.asSeconds();return f?(f<0?"-":"")+"P"+(s?s+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(u||l||c?"T":"")+(u?u+"H":"")+(l?l+"M":"")+(c?c+"S":""):"P0D"}var vi,yi;yi=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,i=0;i68?1900:2e3)};var yr=j("FullYear",!0);X("w",["ww",2],"wo","week"),X("W",["WW",2],"Wo","isoWeek"),I("week","w"),I("isoWeek","W"),z("week",5),z("isoWeek",5),J("w",Gi),J("ww",Gi,Ni),J("W",Gi),J("WW",Gi,Ni),it(["w","ww","W","WW"],function(t,e,n,i){e[i.substr(0,1)]=x(t)});var gr={dow:0,doy:6};X("d",0,"do","day"),X("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),X("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),X("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),X("e",0,0,"weekday"),X("E",0,0,"isoWeekday"),I("day","d"),I("weekday","e"),I("isoWeekday","E"),z("day",11),z("weekday",11),z("isoWeekday",11),J("d",Gi),J("e",Gi),J("E",Gi),J("dd",function(t,e){return e.weekdaysMinRegex(t)}),J("ddd",function(t,e){return e.weekdaysShortRegex(t)}),J("dddd",function(t,e){return e.weekdaysRegex(t)}),it(["dd","ddd","dddd"],function(t,e,n,i){var r=n._locale.weekdaysParse(t,i,n._strict);null!=r?e.d=r:d(n).invalidWeekday=t}),it(["d","e","E"],function(t,e,n,i){e[i]=x(t)});var _r="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),wr="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xr="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),br=Ki,Sr=Ki,Tr=Ki;X("H",["HH",2],0,"hour"),X("h",["hh",2],0,Vt),X("k",["kk",2],0,Ut),X("hmm",0,0,function(){return""+Vt.apply(this)+H(this.minutes(),2)}),X("hmmss",0,0,function(){return""+Vt.apply(this)+H(this.minutes(),2)+H(this.seconds(),2)}),X("Hmm",0,0,function(){return""+this.hours()+H(this.minutes(),2)}),X("Hmmss",0,0,function(){return""+this.hours()+H(this.minutes(),2)+H(this.seconds(),2)}),Ht("a",!0),Ht("A",!1),I("hour","h"),z("hour",13),J("a",Xt),J("A",Xt),J("H",Gi),J("h",Gi),J("HH",Gi,Ni),J("hh",Gi,Ni),J("hmm",Bi),J("hmmss",Vi),J("Hmm",Bi),J("Hmmss",Vi),nt(["H","HH"],or),nt(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),nt(["h","hh"],function(t,e,n){e[or]=x(t),d(n).bigHour=!0}),nt("hmm",function(t,e,n){var i=t.length-2;e[or]=x(t.substr(0,i)),e[sr]=x(t.substr(i)),d(n).bigHour=!0}),nt("hmmss",function(t,e,n){var i=t.length-4,r=t.length-2;e[or]=x(t.substr(0,i)),e[sr]=x(t.substr(i,2)),e[ar]=x(t.substr(r)),d(n).bigHour=!0}),nt("Hmm",function(t,e,n){var i=t.length-2;e[or]=x(t.substr(0,i)),e[sr]=x(t.substr(i))}),nt("Hmmss",function(t,e,n){var i=t.length-4,r=t.length-2;e[or]=x(t.substr(0,i)),e[sr]=x(t.substr(i,2)),e[ar]=x(t.substr(r))});var Dr,Mr=/[ap]\.?m?\.?/i,kr=j("Hours",!0),Or={calendar:Di,longDateFormat:Mi,invalidDate:ki,ordinal:Oi,ordinalParse:Ei,relativeTime:Ci,months:dr,monthsShort:pr,week:gr,weekdays:_r,weekdaysMin:xr,weekdaysShort:wr,meridiemParse:Mr},Er={},Cr={},Pr=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Lr=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Yr=/Z|[+-]\d\d(?::?\d\d)?/,Rr=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ar=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ir=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=T("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),e.ISO_8601=function(){};var Wr=T("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=_e.apply(null,arguments);return this.isValid()&&t.isValid()?tthis?this:t:m()}),zr=function(){return Date.now?Date.now():+new Date};Me("Z",":"),Me("ZZ",""),J("Z",Qi),J("ZZ",Qi),nt(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=ke(Qi,t)});var Fr=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var jr=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Gr=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;je.fn=Se.prototype;var Br=Ue(1,"add"),Vr=Ue(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Ur=T("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});X(0,["gg",2],0,function(){return this.weekYear()%100}),X(0,["GG",2],0,function(){return this.isoWeekYear()%100}),kn("gggg","weekYear"),kn("ggggg","weekYear"),kn("GGGG","isoWeekYear"),kn("GGGGG","isoWeekYear"),I("weekYear","gg"),I("isoWeekYear","GG"),z("weekYear",1),z("isoWeekYear",1),J("G",qi),J("g",qi),J("GG",Gi,Ni),J("gg",Gi,Ni),J("GGGG",Hi,Fi),J("gggg",Hi,Fi),J("GGGGG",Xi,ji),J("ggggg",Xi,ji),it(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,i){e[i.substr(0,2)]=x(t)}),it(["gg","GG"],function(t,n,i,r){n[r]=e.parseTwoDigitYear(t)}),X("Q",0,"Qo","quarter"),I("quarter","Q"),z("quarter",7),J("Q",Wi),nt("Q",function(t,e){e[ir]=3*(x(t)-1)}),X("D",["DD",2],"Do","date"),I("date","D"),z("date",9),J("D",Gi),J("DD",Gi,Ni),J("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),nt(["D","DD"],rr),nt("Do",function(t,e){e[rr]=x(t.match(Gi)[0],10)});var Hr=j("Date",!0);X("DDD",["DDDD",3],"DDDo","dayOfYear"),I("dayOfYear","DDD"),z("dayOfYear",4),J("DDD",Ui),J("DDDD",zi),nt(["DDD","DDDD"],function(t,e,n){n._dayOfYear=x(t)}),X("m",["mm",2],0,"minute"),I("minute","m"),z("minute",14),J("m",Gi),J("mm",Gi,Ni),nt(["m","mm"],sr);var Xr=j("Minutes",!1);X("s",["ss",2],0,"second"),I("second","s"),z("second",15),J("s",Gi),J("ss",Gi,Ni),nt(["s","ss"],ar);var Zr=j("Seconds",!1);X("S",0,0,function(){return~~(this.millisecond()/100)}),X(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),X(0,["SSS",3],0,"millisecond"),X(0,["SSSS",4],0,function(){return 10*this.millisecond()}),X(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),X(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),X(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),X(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),X(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),I("millisecond","ms"),z("millisecond",16),J("S",Ui,Wi),J("SS",Ui,Ni),J("SSS",Ui,zi);var qr;for(qr="SSSS";qr.length<=9;qr+="S")J(qr,Zi);for(qr="S";qr.length<=9;qr+="S")nt(qr,In);var $r=j("Milliseconds",!1);X("z",0,0,"zoneAbbr"),X("zz",0,0,"zoneName");var Qr=g.prototype;Qr.add=Br,Qr.calendar=Ze,Qr.clone=qe,Qr.diff=nn,Qr.endOf=vn,Qr.format=hn,Qr.from=un,Qr.fromNow=ln,Qr.to=cn,Qr.toNow=fn,Qr.get=V,Qr.invalidAt=Dn,Qr.isAfter=$e,Qr.isBefore=Qe,Qr.isBetween=Je,Qr.isSame=Ke,Qr.isSameOrAfter=tn,Qr.isSameOrBefore=en,Qr.isValid=Sn,Qr.lang=Ur,Qr.locale=dn,Qr.localeData=pn,Qr.max=Nr,Qr.min=Wr,Qr.parsingFlags=Tn,Qr.set=U,Qr.startOf=mn,Qr.subtract=Vr,Qr.toArray=wn,Qr.toObject=xn,Qr.toDate=_n,Qr.toISOString=sn,Qr.inspect=an,Qr.toJSON=bn,Qr.toString=on,Qr.unix=gn,Qr.valueOf=yn,Qr.creationData=Mn,Qr.year=yr,Qr.isLeapYear=gt,Qr.weekYear=On,Qr.isoWeekYear=En,Qr.quarter=Qr.quarters=Rn,Qr.month=ct,Qr.daysInMonth=ft,Qr.week=Qr.weeks=Ot,Qr.isoWeek=Qr.isoWeeks=Et,Qr.weeksInYear=Pn,Qr.isoWeeksInYear=Cn,Qr.date=Hr,Qr.day=Qr.days=Wt,Qr.weekday=Nt,Qr.isoWeekday=zt,Qr.dayOfYear=An,Qr.hour=Qr.hours=kr,Qr.minute=Qr.minutes=Xr,Qr.second=Qr.seconds=Zr,Qr.millisecond=Qr.milliseconds=$r,Qr.utcOffset=Ce,Qr.utc=Le,Qr.local=Ye,Qr.parseZone=Re,Qr.hasAlignedHourOffset=Ae,Qr.isDST=Ie,Qr.isLocal=Ne,Qr.isUtcOffset=ze,Qr.isUtc=Fe,Qr.isUTC=Fe,Qr.zoneAbbr=Wn,Qr.zoneName=Nn,Qr.dates=T("dates accessor is deprecated. Use date instead.",Hr),Qr.months=T("months accessor is deprecated. Use month instead",ct),Qr.years=T("years accessor is deprecated. Use year instead",yr),Qr.zone=T("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Pe),Qr.isDSTShifted=T("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",We);var Jr=E.prototype;Jr.calendar=C,Jr.longDateFormat=P,Jr.invalidDate=L,Jr.ordinal=Y,Jr.preparse=jn,Jr.postformat=jn,Jr.relativeTime=R,Jr.pastFuture=A,Jr.set=k,Jr.months=st,Jr.monthsShort=at,Jr.monthsParse=ut,Jr.monthsRegex=pt,Jr.monthsShortRegex=dt,Jr.week=Dt,Jr.firstDayOfYear=kt,Jr.firstDayOfWeek=Mt,Jr.weekdays=Lt,Jr.weekdaysMin=Rt,Jr.weekdaysShort=Yt,Jr.weekdaysParse=It,Jr.weekdaysRegex=Ft,Jr.weekdaysShortRegex=jt,Jr.weekdaysMinRegex=Gt,Jr.isPM=Zt,Jr.meridiem=qt,Kt("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,n=1===x(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n}}),e.lang=T("moment.lang is deprecated. Use moment.locale instead.",Kt),e.langData=T("moment.langData is deprecated. Use moment.localeData instead.",ne);var Kr=Math.abs,to=si("ms"),eo=si("s"),no=si("m"),io=si("h"),ro=si("d"),oo=si("w"),so=si("M"),ao=si("y"),ho=hi("milliseconds"),uo=hi("seconds"),lo=hi("minutes"),co=hi("hours"),fo=hi("days"),po=hi("months"),mo=hi("years"),vo=Math.round,yo={s:45,m:45,h:22,d:26,M:11},go=Math.abs,_o=Se.prototype;return _o.abs=$n,_o.add=Jn,_o.subtract=Kn,_o.as=ri,_o.asMilliseconds=to,_o.asSeconds=eo,_o.asMinutes=no,_o.asHours=io,_o.asDays=ro,_o.asWeeks=oo,_o.asMonths=so,_o.asYears=ao,_o.valueOf=oi,_o._bubble=ei,_o.get=ai,_o.milliseconds=ho,_o.seconds=uo,_o.minutes=lo,_o.hours=co,_o.days=fo,_o.weeks=ui,_o.months=po,_o.years=mo,_o.humanize=pi,_o.toISOString=mi,_o.toString=mi,_o.toJSON=mi,_o.locale=dn,_o.localeData=pn,_o.toIsoString=T("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",mi),_o.lang=Ur,X("X",0,0,"unix"),X("x",0,0,"valueOf"),J("x",qi),J("X",Ji),nt("X",function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))}),nt("x",function(t,e,n){n._d=new Date(x(t))}),e.version="2.17.1",n(_e),e.fn=Qr,e.min=xe,e.max=be,e.now=zr,e.utc=c,e.unix=zn,e.months=Un,e.isDate=a,e.locale=Kt,e.invalid=m,e.duration=je,e.isMoment=_,e.weekdays=Xn,e.parseZone=Fn,e.localeData=ne,e.isDuration=Te,e.monthsShort=Hn,e.weekdaysMin=qn,e.defineLocale=te,e.updateLocale=ee,e.locales=ie,e.weekdaysShort=Zn,e.normalizeUnits=W,e.relativeTimeRounding=fi,e.relativeTimeThreshold=di,e.calendarFormat=Xe,e.prototype=Qr,e})}).call(e,n(84)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function n(t){throw new Error("Cannot find module '"+t+"'.")}n.keys=function(){return[]},n.resolve=n,t.exports=n,n.id=85},function(t,e){(function(e){function n(t,e,n){var i=e&&n||0,r=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){r<16&&(e[i+r++]=c[t])});r<16;)e[i+r++]=0;return e}function i(t,e){var n=e||0,i=l;return i[t[n++]]+i[t[n++]]+i[t[n++]]+i[t[n++]]+"-"+i[t[n++]]+i[t[n++]]+"-"+i[t[n++]]+i[t[n++]]+"-"+i[t[n++]]+i[t[n++]]+"-"+i[t[n++]]+i[t[n++]]+i[t[n++]]+i[t[n++]]+i[t[n++]]+i[t[n++]]}function r(t,e,n){var r=e&&n||0,o=e||[];t=t||{};var s=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:y+1,u=a-v+(h-y)/1e4;if(u<0&&void 0===t.clockseq&&(s=s+1&16383),(u<0||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,y=h,m=s,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;o[r++]=l>>>24&255,o[r++]=l>>>16&255,o[r++]=l>>>8&255,o[r++]=255&l;var c=a/4294967296*1e4&268435455;o[r++]=c>>>8&255,o[r++]=255&c,o[r++]=c>>>24&15|16,o[r++]=c>>>16&255,o[r++]=s>>>8|128,o[r++]=255&s;for(var f=t.node||p,d=0;d<6;d++)o[r+d]=f[d];return e?e:i(o)}function o(t,e,n){var r=e&&n||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var o=t.random||(t.rng||s)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,e)for(var a=0;a<16;a++)e[r+a]=o[a];return e||i(o)}var s,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);s=function(){return crypto.getRandomValues(h),h}}if(!s){var u=new Array(16);s=function(){for(var t,e=0;e<16;e++)0===(3&e)&&(t=4294967296*Math.random()),u[e]=t>>>((3&e)<<3)&255;return u}}for(var l=[],c={},f=0;f<256;f++)l[f]=(f+256).toString(16).substr(1),c[l[f]]=f;var d=s(),p=[1|d[0],d[1],d[2],d[3],d[4],d[5]],m=16383&(d[6]<<8|d[7]),v=0,y=0,g=o;g.v1=r,g.v4=o,g.parse=n,g.unparse=i,t.exports=g}).call(e,function(){return this}())},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var n=0;n0?(i=e[t].redundant[0],e[t].redundant.shift()):(i=document.createElementNS("http://www.w3.org/2000/svg",t),n.appendChild(i)):(i=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},n.appendChild(i)),e[t].used.push(i),i},e.getDOMElement=function(t,e,n,i){var r;return e.hasOwnProperty(t)?e[t].redundant.length>0?(r=e[t].redundant[0],e[t].redundant.shift()):(r=document.createElement(t),void 0!==i?n.insertBefore(r,i):n.appendChild(r)):(r=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==i?n.insertBefore(r,i):n.appendChild(r)),e[t].used.push(r),r},e.drawPoint=function(t,n,i,r,o,s){var a;if("circle"==i.style?(a=e.getSVGElement("circle",r,o),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",n),a.setAttributeNS(null,"r",.5*i.size)):(a=e.getSVGElement("rect",r,o),a.setAttributeNS(null,"x",t-.5*i.size),a.setAttributeNS(null,"y",n-.5*i.size),a.setAttributeNS(null,"width",i.size),a.setAttributeNS(null,"height",i.size)),void 0!==i.styles&&a.setAttributeNS(null,"style",i.styles),a.setAttributeNS(null,"class",i.className+" vis-point"),s){var h=e.getSVGElement("text",r,o);s.xOffset&&(t+=s.xOffset),s.yOffset&&(n+=s.yOffset),s.content&&(h.textContent=s.content),s.className&&h.setAttributeNS(null,"class",s.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",n)}return a},e.drawBar=function(t,n,i,r,o,s,a,h){if(0!=r){r<0&&(r*=-1,n-=r);var u=e.getSVGElement("rect",s,a);u.setAttributeNS(null,"x",t-.5*i),u.setAttributeNS(null,"y",n),u.setAttributeNS(null,"width",i),u.setAttributeNS(null,"height",r),u.setAttributeNS(null,"class",o),h&&u.setAttributeNS(null,"style",h)}}},function(t,e,n){function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var n=(0,l.default)(this._options.type),i=0,r=n.length;ir?1:is)&&(o=h,s=u)}return o},r.prototype.min=function(t){var e,n,i=this._data,r=(0,l.default)(i),o=null,s=null;for(e=0,n=r.length;ethis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},n.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=n},function(t,e,n){function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var n=this;this.listener=function(){n._onEvent.apply(n,arguments)},this.setData(t)}var o=n(58),s=i(o),a=n(1),h=n(88);r.prototype.setData=function(t){var e,n,i,r,o;if(this._data){for(this._data.off&&this._data.off("*",this.listener),e=this._data.getIds({filter:this._options&&this._options.filter}),o=[],i=0,r=e.length;io)&&(i=o)}return i},r.prototype.getColumnRange=function(t,e){for(var n=new g,i=0;i0&&(h[i-1].pointNext=s),h.push(s);return h},r.prototype.create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);this.frame=document.createElement("div"),this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas);var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t),this.frame.filter=document.createElement("div"),this.frame.filter.style.position="absolute",this.frame.filter.style.bottom="0px",this.frame.filter.style.left="0px",this.frame.filter.style.width="100%",this.frame.appendChild(this.frame.filter);var e=this,n=function(t){e._onMouseDown(t)},i=function(t){e._onTouchStart(t)},r=function(t){e._onWheel(t)},o=function(t){e._onTooltip(t)},s=function(t){e._onClick(t)};f.addEventListener(this.frame.canvas,"mousedown",n),f.addEventListener(this.frame.canvas,"touchstart",i),f.addEventListener(this.frame.canvas,"mousewheel",r),f.addEventListener(this.frame.canvas,"mousemove",o),f.addEventListener(this.frame.canvas,"click",s),this.containerElement.appendChild(this.frame)},r.prototype._setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this._resizeCanvas()},r.prototype._resizeCanvas=function(){this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.frame.filter.style.width=this.frame.canvas.clientWidth-20+"px"},r.prototype.animationStart=function(){if(!this.frame.filter||!this.frame.filter.slider)throw new Error("No animation available");this.frame.filter.slider.play()},r.prototype.animationStop=function(){this.frame.filter&&this.frame.filter.slider&&this.frame.filter.slider.stop()},r.prototype._resizeCenter=function(){"%"===this.xCenter.charAt(this.xCenter.length-1)?this.currentXCenter=parseFloat(this.xCenter)/100*this.frame.canvas.clientWidth:this.currentXCenter=parseFloat(this.xCenter),"%"===this.yCenter.charAt(this.yCenter.length-1)?this.currentYCenter=parseFloat(this.yCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight):this.currentYCenter=parseFloat(this.yCenter)},r.prototype.getCameraPosition=function(){var t=this.camera.getArmRotation();return t.distance=this.camera.getArmLength(),t},r.prototype._readData=function(t){this._dataInitialize(t,this.style),this.dataFilter?this.dataPoints=this.dataFilter._getDataPoints():this.dataPoints=this._getDataPoints(this.dataTable),this._redrawFilter()},r.prototype.setData=function(t){this._readData(t),this.redraw(),this.animationAutoStart&&this.dataFilter&&this.animationStart()},r.prototype.setOptions=function(t){this.animationStop(),_.setOptions(t,this),this.setPointDrawingMethod(),this._setSize(this.width,this.height),this.dataTable&&this.setData(this.dataTable),this.animationAutoStart&&this.dataFilter&&this.animationStart()},r.prototype.setPointDrawingMethod=function(){var t=void 0;switch(this.style){case r.STYLE.BAR:t=r.prototype._redrawBarGraphPoint;break;case r.STYLE.BARCOLOR:t=r.prototype._redrawBarColorGraphPoint;break;case r.STYLE.BARSIZE:t=r.prototype._redrawBarSizeGraphPoint;break;case r.STYLE.DOT:t=r.prototype._redrawDotGraphPoint;break;case r.STYLE.DOTLINE:t=r.prototype._redrawDotLineGraphPoint;break;case r.STYLE.DOTCOLOR:t=r.prototype._redrawDotColorGraphPoint;break;case r.STYLE.DOTSIZE:t=r.prototype._redrawDotSizeGraphPoint;break;case r.STYLE.SURFACE:t=r.prototype._redrawSurfaceGraphPoint;break;case r.STYLE.GRID:t=r.prototype._redrawGridGraphPoint;break;case r.STYLE.LINE:t=r.prototype._redrawLineGraphPoint;break;default:throw new Error("Can not determine point drawing method for graph style '"+this.style+"'")}this._pointDrawingMethod=t},r.prototype.redraw=function(){if(void 0===this.dataPoints)throw new Error("Graph data not initialized");this._resizeCanvas(),this._resizeCenter(),this._redrawSlider(),this._redrawClear(),this._redrawAxis(),this._redrawDataGraph(),this._redrawInfo(),this._redrawLegend()},r.prototype._getContext=function(){var t=this.frame.canvas,e=t.getContext("2d");return e.lineJoin="round",e.lineCap="round",e},r.prototype._redrawClear=function(){var t=this.frame.canvas,e=t.getContext("2d");e.clearRect(0,0,t.width,t.height)},r.prototype._dotSize=function(){return this.frame.clientWidth*this.dotSizeRatio},r.prototype._getLegendWidth=function(){var t;if(this.style===r.STYLE.DOTSIZE){var e=this._dotSize();t=e/2+2*e}else t=this.style===r.STYLE.BARSIZE?this.xBarWidth:20;return t},r.prototype._redrawLegend=function(){if(this.showLegend===!0&&this.style!==r.STYLE.LINE&&this.style!==r.STYLE.BARSIZE){var t=this.style===r.STYLE.BARSIZE||this.style===r.STYLE.DOTSIZE,e=this.style===r.STYLE.DOTSIZE||this.style===r.STYLE.DOTCOLOR||this.style===r.STYLE.BARCOLOR,n=Math.max(.25*this.frame.clientHeight,100),i=this.margin,o=this._getLegendWidth(),s=this.frame.clientWidth-this.margin,a=s-o,h=i+n,u=this._getContext();if(u.lineWidth=1,u.font="14px arial",t===!1){var l,c=0,f=n;for(l=c;l0?(t.textAlign="center",t.textBaseline="top",o.y+=r):Math.sin(2*i)<0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(n,o.x,o.y)},r.prototype.drawAxisLabelY=function(t,e,n,i,r){void 0===r&&(r=0);var o=this._convert3Dto2D(e);Math.cos(2*i)<0?(t.textAlign="center",t.textBaseline="top",o.y+=r):Math.sin(2*i)>0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(n,o.x,o.y)},r.prototype.drawAxisLabelZ=function(t,e,n,i){void 0===i&&(i=0);var r=this._convert3Dto2D(e);t.textAlign="right",t.textBaseline="middle",t.fillStyle=this.axisColor,t.fillText(n,r.x-i,r.y)},r.prototype._line3d=function(t,e,n,i){var r=this._convert3Dto2D(e),o=this._convert3Dto2D(n);this._line(t,r,o,i)},r.prototype._redrawAxis=function(){var t,e,n,i,r,o,s,a,h,u,l,c=this._getContext();c.font=24/this.camera.getArmLength()+"px arial";var f=.025/this.scale.x,m=.025/this.scale.y,v=5/this.camera.getArmLength(),g=this.camera.getArmRotation().horizontal,_=new p(Math.cos(g),Math.sin(g)),w=this.xRange,x=this.yRange,b=this.zRange;for(c.lineWidth=1,i=void 0===this.defaultXStep,n=new y(w.min,w.max,this.xStep,i),n.start(!0);!n.end();){var S=n.getCurrent();if(this.showGrid?(t=new d(S,x.min,b.min),e=new d(S,x.max,b.min),this._line3d(c,t,e,this.gridColor)):this.showXAxis&&(t=new d(S,x.min,b.min),e=new d(S,x.min+f,b.min),this._line3d(c,t,e,this.axisColor),t=new d(S,x.max,b.min),e=new d(S,x.max-f,b.min),this._line3d(c,t,e,this.axisColor)),this.showXAxis){s=_.x>0?x.min:x.max;var T=new d(S,s,b.min),D=" "+this.xValueLabel(S)+" ";this.drawAxisLabelX(c,T,D,g,v)}n.next()}for(c.lineWidth=1,i=void 0===this.defaultYStep,n=new y(x.min,x.max,this.yStep,i),n.start(!0);!n.end();){var M=n.getCurrent();if(this.showGrid?(t=new d(w.min,M,b.min),e=new d(w.max,M,b.min),this._line3d(c,t,e,this.gridColor)):this.showYAxis&&(t=new d(w.min,M,b.min),e=new d(w.min+m,M,b.min),this._line3d(c,t,e,this.axisColor),t=new d(w.max,M,b.min),e=new d(w.max-m,M,b.min),this._line3d(c,t,e,this.axisColor)),this.showYAxis){o=_.y>0?w.min:w.max,T=new d(o,M,b.min);var D=" "+this.yValueLabel(M)+" ";this.drawAxisLabelY(c,T,D,g,v)}n.next()}if(this.showZAxis){for(c.lineWidth=1,i=void 0===this.defaultZStep,n=new y(b.min,b.max,this.zStep,i),n.start(!0),o=_.x>0?w.min:w.max,s=_.y<0?x.min:x.max;!n.end();){var k=n.getCurrent(),O=new d(o,s,k),E=this._convert3Dto2D(O);e=new p(E.x-v,E.y),this._line(c,E,e,this.axisColor);var D=this.zValueLabel(k)+" ";this.drawAxisLabelZ(c,O,D,5),n.next()}c.lineWidth=1,t=new d(o,s,b.min),e=new d(o,s,b.max),this._line3d(c,t,e,this.axisColor)}if(this.showXAxis){var C,P;c.lineWidth=1,C=new d(w.min,x.min,b.min),P=new d(w.max,x.min,b.min),this._line3d(c,C,P,this.axisColor),C=new d(w.min,x.max,b.min),P=new d(w.max,x.max,b.min),this._line3d(c,C,P,this.axisColor)}this.showYAxis&&(c.lineWidth=1,t=new d(w.min,x.min,b.min),e=new d(w.min,x.max,b.min),this._line3d(c,t,e,this.axisColor),t=new d(w.max,x.min,b.min),e=new d(w.max,x.max,b.min),this._line3d(c,t,e,this.axisColor));var L=this.xLabel;L.length>0&&this.showXAxis&&(l=.1/this.scale.y,o=(w.max+3*w.min)/4,s=_.x>0?x.min-l:x.max+l,r=new d(o,s,b.min),this.drawAxisLabelX(c,r,L,g));var Y=this.yLabel;Y.length>0&&this.showYAxis&&(u=.1/this.scale.x,o=_.y>0?w.min-u:w.max+u,s=(x.max+3*x.min)/4,r=new d(o,s,b.min),this.drawAxisLabelY(c,r,Y,g));var R=this.zLabel;R.length>0&&this.showZAxis&&(h=30,o=_.x>0?w.min:w.max,s=_.y<0?x.min:x.max,a=(b.max+3*b.min)/4,r=new d(o,s,a),this.drawAxisLabelZ(c,r,R,h))},r.prototype._hsv2rgb=function(t,e,n){var i,r,o,s,a,h;switch(s=n*e,a=Math.floor(t/60),h=s*(1-Math.abs(t/60%2-1)),a){case 0:i=s,r=h,o=0;break;case 1:i=h,r=s,o=0;break;case 2:i=0,r=s,o=h;break;case 3:i=0,r=h,o=s;break;case 4:i=h,r=0,o=s;break;case 5:i=s,r=0,o=h;break;default:i=0,r=0,o=0}return"RGB("+parseInt(255*i)+","+parseInt(255*r)+","+parseInt(255*o)+")"},r.prototype._getStrokeWidth=function(t){return void 0!==t?this.showPerspective?1/-t.trans.z*this.dataColor.strokeWidth:-(this.eye.z/this.camera.getArmLength())*this.dataColor.strokeWidth:this.dataColor.strokeWidth},r.prototype._redrawBar=function(t,e,n,i,r,o){var s,a,h=this,u=e.point,l=this.zRange.min,c=[{point:new d(u.x-n,u.y-i,u.z)},{point:new d(u.x+n,u.y-i,u.z)},{point:new d(u.x+n,u.y+i,u.z)},{point:new d(u.x-n,u.y+i,u.z)}],f=[{point:new d(u.x-n,u.y-i,l)},{point:new d(u.x+n,u.y-i,l)},{point:new d(u.x+n,u.y+i,l)},{point:new d(u.x-n,u.y+i,l)}];c.forEach(function(t){t.screen=h._convert3Dto2D(t.point)}),f.forEach(function(t){t.screen=h._convert3Dto2D(t.point)});var p=[{corners:c,center:d.avg(f[0].point,f[2].point)},{corners:[c[0],c[1],f[1],f[0]],center:d.avg(f[1].point,f[0].point)},{corners:[c[1],c[2],f[2],f[1]],center:d.avg(f[2].point,f[1].point)},{corners:[c[2],c[3],f[3],f[2]],center:d.avg(f[3].point,f[2].point)},{corners:[c[3],c[0],f[0],f[3]],center:d.avg(f[0].point,f[3].point)}];for(e.surfaces=p,s=0;s0}if(a){var f,p=(e.point.z+n.point.z+i.point.z+r.point.z)/4,m=240*(1-(p-this.zRange.min)*this.scale.z/this.verticalRatio),v=1;this.showShadow?(f=Math.min(1+l.x/c/2,1),o=this._hsv2rgb(m,v,f),s=o):(f=1,o=this._hsv2rgb(m,v,f),s=this.axisColor)}else o="gray",s=this.axisColor;t.lineWidth=this._getStrokeWidth(e);var y=[e,n,r,i];this._polygon(t,y,o,s)}},r.prototype._drawGridLine=function(t,e,n){if(void 0!==e&&void 0!==n){var i=(e.point.z+n.point.z)/2,r=240*(1-(i-this.zRange.min)*this.scale.z/this.verticalRatio);t.lineWidth=2*this._getStrokeWidth(e),t.strokeStyle=this._hsv2rgb(r,1,1),this._line(t,e.screen,n.screen)}},r.prototype._redrawGridGraphPoint=function(t,e){this._drawGridLine(t,e,e.pointRight),this._drawGridLine(t,e,e.pointTop)},r.prototype._redrawLineGraphPoint=function(t,e){void 0!==e.pointNext&&(t.lineWidth=this._getStrokeWidth(e),t.strokeStyle=this.dataColor.stroke,this._line(t,e.screen,e.pointNext.screen))},r.prototype._redrawDataGraph=function(){var t,e=this._getContext();if(!(void 0===this.dataPoints||this.dataPoints.length<=0))for(this._calcTranslations(this.dataPoints),t=0;t0?1:t<0?-1:0}var i=e[0],r=e[1],o=e[2],s=n((r.x-i.x)*(t.y-i.y)-(r.y-i.y)*(t.x-i.x)),a=n((o.x-r.x)*(t.y-r.y)-(o.y-r.y)*(t.x-r.x)),h=n((i.x-o.x)*(t.y-o.y)-(i.y-o.y)*(t.x-o.x));return!(0!=s&&0!=a&&s!=a||0!=a&&0!=h&&a!=h||0!=s&&0!=h&&s!=h)},r.prototype._dataPointFromXY=function(t,e){var n,i=100,o=null,s=null,a=null,h=new p(t,e);if(this.style===r.STYLE.BAR||this.style===r.STYLE.BARCOLOR||this.style===r.STYLE.BARSIZE)for(n=this.dataPoints.length-1;n>=0;n--){o=this.dataPoints[n];var u=o.surfaces;if(u)for(var l=u.length-1;l>=0;l--){var c=u[l],f=c.corners,d=[f[0].screen,f[1].screen,f[2].screen],m=[f[2].screen,f[3].screen,f[0].screen];if(this._insideTriangle(h,d)||this._insideTriangle(h,m))return o}}else for(n=0;n"+this.xLabel+":"+t.point.x+""+this.yLabel+":"+t.point.y+""+this.zLabel+":"+t.point.z+"",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(n),this.frame.appendChild(i);var r=e.offsetWidth,o=e.offsetHeight,s=n.offsetHeight,a=i.offsetWidth,u=i.offsetHeight,l=t.screen.x-r/2;l=Math.min(Math.max(l,10),this.frame.clientWidth-10-r),n.style.left=t.screen.x+"px",n.style.top=t.screen.y-s+"px",e.style.left=l+"px",e.style.top=t.screen.y-s-o+"px",i.style.left=t.screen.x-a/2+"px",i.style.top=t.screen.y-u/2+"px"},r.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},r.prototype.setCameraPosition=function(t){_.setCameraPosition(t,this),this.redraw()},r.prototype.setSize=function(t,e){this._setSize(t,e),this.redraw()},t.exports=r},function(t,e,n){t.exports={default:n(95),__esModule:!0}},function(t,e,n){n(96),t.exports=n(17).Object.assign},function(t,e,n){var i=n(15);i(i.S+i.F,"Object",{assign:n(97)})},function(t,e,n){var i=n(35),r=n(73),o=n(74),s=n(49),a=n(10),h=Object.assign;t.exports=!h||n(26)(function(){var t={},e={},n=Symbol(),i="abcdefghijklmnopqrst";return t[n]=7,i.split("").forEach(function(t){e[t]=t}),7!=h({},t)[n]||Object.keys(h({},e)).join("")!=i})?function(t,e){for(var n=s(t),h=arguments.length,u=1,l=r.f,c=o.f;h>u;)for(var f,d=a(arguments[u++]),p=l?i(d).concat(l(d)):i(d),m=p.length,v=0;m>v;)c.call(d,f=p[v++])&&(n[f]=d[f]);return n}:h},function(t,e){function n(t){if(t)return i(t)}function i(t){for(var e in n.prototype)t[e]=n.prototype[e];return t}t.exports=n,n.prototype.on=n.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},n.prototype.once=function(t,e){function n(){i.off(t,n),e.apply(this,arguments)}var i=this;return this._callbacks=this._callbacks||{},n.fn=e,this.on(t,n),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks[t];if(!n)return this;if(1==arguments.length)return delete this._callbacks[t], +this;for(var i,r=0;ro&&(t=i(t)*o),n(e)>o&&(e=i(e)*o),this.cameraOffset.x=t,this.cameraOffset.y=e,this.calculateCameraOrientation()},r.prototype.getOffset=function(t,e){return this.cameraOffset},r.prototype.setArmLocation=function(t,e,n){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=n,this.calculateCameraOrientation()},r.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),void 0===t&&void 0===e||this.calculateCameraOrientation()},r.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},r.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.setOffset(this.cameraOffset.x,this.cameraOffset.y),this.calculateCameraOrientation())},r.prototype.getArmLength=function(){return this.armLength},r.prototype.getCameraLocation=function(){return this.cameraLocation},r.prototype.getCameraRotation=function(){return this.cameraRotation},r.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal;var t=this.cameraRotation.x,e=(this.cameraRotation.y,this.cameraRotation.z),n=this.cameraOffset.x,i=this.cameraOffset.y,r=Math.sin,o=Math.cos;this.cameraLocation.x=this.cameraLocation.x+n*o(e)+i*-r(e)*o(t),this.cameraLocation.y=this.cameraLocation.y+n*r(e)+i*o(e)*o(t),this.cameraLocation.z=this.cameraLocation.z+i*r(t)},t.exports=r},function(t,e,n){t.exports={default:n(103),__esModule:!0}},function(t,e,n){n(104),t.exports=n(17).Math.sign},function(t,e,n){var i=n(15);i(i.S,"Math",{sign:n(105)})},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,n){function i(t,e,n){this.data=t,this.column=e,this.graph=n,this.index=void 0,this.value=void 0,this.values=n.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:t0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,n.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var r=n(92);i.prototype.isLoaded=function(){return this.loaded},i.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},i.prototype.getLabel=function(){return this.graph.filterLabel},i.prototype.getColumn=function(){return this.column},i.prototype.getSelectedValue=function(){if(void 0!==this.index)return this.values[this.index]},i.prototype.getValues=function(){return this.values},i.prototype.getValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");return this.values[t]},i.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var n={};n.column=this.column,n.value=this.values[t];var i=new r(this.data,{filter:function(t){return t[n.column]==n.value}}).get();e=this.graph._getDataPoints(i),this.dataPoints[t]=e}return e},i.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},i.prototype.selectValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");this.index=t,this.value=this.values[t]},i.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},i.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},i.prototype.setIndex=function(t){if(!(tthis.values.length-1&&(i=this.values.length-1),i},i.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,n=t/(this.values.length-1)*e,i=n+3;return i},i.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,n=this.startSlideX+e,i=this.leftToIndex(n);this.setIndex(i),r.preventDefault()},i.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",r.removeEventListener(document,"mousemove",this.onmousemove),r.removeEventListener(document,"mouseup",this.onmouseup),r.preventDefault()},t.exports=i},function(t,e){function n(t,e,n,i){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,n,i)}n.prototype.isNumeric=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},n.prototype.setRange=function(t,e,n,i){if(!this.isNumeric(t))throw new Error("Parameter 'start' is not numeric; value: "+t);if(!this.isNumeric(e))throw new Error("Parameter 'end' is not numeric; value: "+t);if(!this.isNumeric(n))throw new Error("Parameter 'step' is not numeric; value: "+t);this._start=t?t:0,this._end=e?e:0,this.setStep(n,i)},n.prototype.setStep=function(t,e){void 0===t||t<=0||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=n.calculatePrettyStep(t):this._step=t)},n.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},n=Math.pow(10,Math.round(e(t))),i=2*Math.pow(10,Math.round(e(t/2))),r=5*Math.pow(10,Math.round(e(t/5))),o=n;return Math.abs(i-t)<=Math.abs(o-t)&&(o=i),Math.abs(r-t)<=Math.abs(o-t)&&(o=r),o<=0&&(o=1),o},n.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},n.prototype.getStep=function(){return this._step},n.prototype.start=function(t){void 0===t&&(t=!1),this._current=this._start-this._start%this._step,t&&this.getCurrent()this._end},t.exports=n},function(t,e){function n(){this.min=void 0,this.max=void 0}n.prototype.adjust=function(t){void 0!==t&&((void 0===this.min||this.min>t)&&(this.min=t),(void 0===this.max||this.maxn)throw new Error("Passed expansion value makes range invalid");this.min=e,this.max=n}},n.prototype.range=function(){return this.max-this.min},n.prototype.center=function(){return(this.min+this.max)/2},t.exports=n},function(t,e,n){function i(t){return t&&t.__esModule?t:{default:t}}function r(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function o(t){return void 0===t||""===t||"string"!=typeof t?t:t.charAt(0).toUpperCase()+t.slice(1)}function s(t,e){return void 0===t||""===t?e:t+o(e)}function a(t,e,n,i){var r,o;for(var a in n)r=n[a],o=s(i,r),e[o]=t[r]}function h(t,e,n,i){var r,o;for(var a in n)r=n[a],void 0!==t[r]&&(o=s(i,r),e[o]=t[r])}function u(t,e){if(void 0===t||r(t))throw new Error("No DEFAULTS passed");if(void 0===e)throw new Error("No dst passed");O=t,a(t,e,M),a(t,e,k,"default"),c(t,e),e.margin=10,e.showGrayBottom=!1,e.showTooltip=!1,e.onclick_callback=null,e.eye=new S(0,0,-1)}function l(t,e){if(void 0!==t){if(void 0===e)throw new Error("No dst passed");if(void 0===O||r(O))throw new Error("DEFAULTS not set for module Settings");h(t,e,M),h(t,e,k,"default"),c(t,e)}}function c(t,e){void 0!==t.backgroundColor&&v(t.backgroundColor,e),y(t.dataColor,e),m(t.style,e),f(t.showLegend,e),g(t.cameraPosition,e),void 0!==t.tooltip&&(e.showTooltip=t.tooltip),void 0!=t.onclick&&(e.onclick_callback=t.onclick),void 0!==t.tooltipStyle&&x.selectiveDeepExtend(["tooltipStyle"],e,t)}function f(t,e){if(void 0===t){var n=void 0===O.showLegend;if(n){var i=e.style===T.DOTCOLOR||e.style===T.DOTSIZE;e.showLegend=i}}else e.showLegend=t}function d(t){var e=D[t];return void 0===e?-1:e}function p(t){var e=!1;for(var n in T)if(T[n]===t){e=!0;break}return e}function m(t,e){if(void 0!==t){var n;if("string"==typeof t){if(n=d(t),n===-1)throw new Error("Style '"+t+"' is invalid")}else{if(!p(t))throw new Error("Style '"+t+"' is invalid");n=t}e.style=n}}function v(t,e){var n="white",i="gray",r=1;if("string"==typeof t)n=t,i="none",r=0;else{if("object"!==("undefined"==typeof t?"undefined":(0,w.default)(t)))throw new Error("Unsupported type of backgroundColor");void 0!==t.fill&&(n=t.fill),void 0!==t.stroke&&(i=t.stroke),void 0!==t.strokeWidth&&(r=t.strokeWidth)}e.frame.style.backgroundColor=n,e.frame.style.borderColor=i,e.frame.style.borderWidth=r+"px",e.frame.style.borderStyle="solid"}function y(t,e){void 0!==t&&(void 0===e.dataColor&&(e.dataColor={}),"string"==typeof t?(e.dataColor.fill=t,e.dataColor.stroke=t):(t.fill&&(e.dataColor.fill=t.fill),t.stroke&&(e.dataColor.stroke=t.stroke),void 0!==t.strokeWidth&&(e.dataColor.strokeWidth=t.strokeWidth)))}function g(t,e){var n=t;void 0!==n&&(void 0===e.camera&&(e.camera=new b),e.camera.setArmRotation(n.horizontal,n.vertical),e.camera.setArmLength(n.distance))}var _=n(62),w=i(_),x=n(1),b=n(101),S=n(99),T={BAR:0,BARCOLOR:1,BARSIZE:2,DOT:3,DOTLINE:4,DOTCOLOR:5,DOTSIZE:6,GRID:7,LINE:8,SURFACE:9},D={dot:T.DOT,"dot-line":T.DOTLINE,"dot-color":T.DOTCOLOR,"dot-size":T.DOTSIZE,line:T.LINE,grid:T.GRID,surface:T.SURFACE,bar:T.BAR,"bar-color":T.BARCOLOR,"bar-size":T.BARSIZE},M=["width","height","filterLabel","legendLabel","xLabel","yLabel","zLabel","xValueLabel","yValueLabel","zValueLabel","showXAxis","showYAxis","showZAxis","showGrid","showPerspective","showShadow","keepAspectRatio","verticalRatio","dotSizeRatio","showAnimationControls","animationInterval","animationPreload","animationAutoStart","axisColor","gridColor","xCenter","yCenter"],k=["xBarWidth","yBarWidth","valueMin","valueMax","xMin","xMax","xStep","yMin","yMax","yStep","zMin","zMax","zStep"],O=void 0;t.exports.STYLE=T,t.exports.setDefaults=u,t.exports.setOptions=l,t.exports.setCameraPosition=g},function(t,e,n){if("undefined"!=typeof window){var i=n(112),r=window.Hammer||n(113);t.exports=i(r,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,n){var i,r,o;!function(n){r=[],i=n,o="function"==typeof i?i.apply(e,r):i,!(void 0!==o&&(t.exports=o))}(function(){var t=null;return function e(n,i){function r(t){return t.match(/[^ ]+/g)}function o(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var n=!1;e.stopPropagation=function(){n=!0};var i=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof i&&(e.srcEvent.stopPropagation=function(){i(),e.stopPropagation()}),e.firstTarget=t;for(var r=t;r&&!n;){var o=r.hammer;if(o)for(var s,a=0;a0?u._handlers[t]=i:(n.off(t,o),delete u._handlers[t]))}),u},u.emit=function(e,i){t=i.target,n.emit(e,i)},u.destroy=function(){var t=n.element.hammer,e=t.indexOf(u);e!==-1&&t.splice(e,1),t.length||delete n.element.hammer,u._handlers={},n.destroy()},u}})},function(t,e,n){var i;/*! Hammer.JS - v2.0.7 - 2016-04-22 * http://hammerjs.github.io/ * * Copyright (c) 2016 Jorik Tangelder; * Licensed under the MIT license */ -!function(r,o,s,a){function h(t,e,n){return setTimeout(d(t,n),e)}function u(t,e,n){return!!Array.isArray(t)&&(l(t,n[e],n),!0)}function l(t,e,n){var i;if(t)if(t.forEach)t.forEach(e,n);else if(t.length!==a)for(i=0;i\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",o=r.console&&(r.console.warn||r.console.log);return o&&o.call(r.console,i,n),t.apply(this,arguments)}}function f(t,e,n){var i,r=e.prototype;i=t.prototype=Object.create(r),i.constructor=t,i._super=r,n&&mt(i,n)}function d(t,e){return function(){return t.apply(e,arguments)}}function p(t,e){return typeof t==gt?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function v(t,e,n){l(w(e),function(e){t.addEventListener(e,n,!1)})}function y(t,e,n){l(w(e),function(e){t.removeEventListener(e,n,!1)})}function g(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function _(t,e){return t.indexOf(e)>-1}function w(t){return t.trim().split(/\s+/g)}function x(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;in[e]}):i.sort()),i}function T(t,e){for(var n,i,r=e[0].toUpperCase()+e.slice(1),o=0;o1&&!n.firstMultiple?n.firstMultiple=Y(e):1===r&&(n.firstMultiple=!1);var o=n.firstInput,s=n.firstMultiple,a=s?s.center:o.center,h=e.center=R(i);e.timeStamp=xt(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=W(a,h),e.distance=N(a,h),P(n,e),e.offsetDirection=I(e.deltaX,e.deltaY);var u=A(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=u.x,e.overallVelocityY=u.y,e.overallVelocity=wt(u.x)>wt(u.y)?u.x:u.y,e.scale=s?F(s.pointers,i):1,e.rotation=s?z(s.pointers,i):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,L(n,e);var l=t.element;g(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var n=e.center,i=t.offsetDelta||{},r=t.prevDelta||{},o=t.prevInput||{};e.eventType!==Rt&&o.eventType!==It||(r=t.prevDelta={x:o.deltaX||0,y:o.deltaY||0},i=t.offsetDelta={x:n.x,y:n.y}),e.deltaX=r.x+(n.x-i.x),e.deltaY=r.y+(n.y-i.y)}function L(t,e){var n,i,r,o,s=t.lastInterval||e,h=e.timeStamp-s.timeStamp;if(e.eventType!=Nt&&(h>Yt||s.velocity===a)){var u=e.deltaX-s.deltaX,l=e.deltaY-s.deltaY,c=A(h,u,l);i=c.x,r=c.y,n=wt(c.x)>wt(c.y)?c.x:c.y,o=I(u,l),t.lastInterval=e}else n=s.velocity,i=s.velocityX,r=s.velocityY,o=s.direction;e.velocity=n,e.velocityX=i,e.velocityY=r,e.direction=o}function Y(t){for(var e=[],n=0;n=wt(e)?t<0?zt:Ft:e<0?jt:Gt}function N(t,e,n){n||(n=Ht);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return Math.sqrt(i*i+r*r)}function W(t,e,n){n||(n=Ht);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return 180*Math.atan2(r,i)/Math.PI}function z(t,e){return W(e[1],e[0],Xt)+W(t[1],t[0],Xt)}function F(t,e){return N(e[0],e[1],Xt)/N(t[0],t[1],Xt)}function j(){this.evEl=qt,this.evWin=$t,this.pressed=!1,k.apply(this,arguments)}function G(){this.evEl=Kt,this.evWin=te,k.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function B(){this.evTarget=ne,this.evWin=ie,this.started=!1,k.apply(this,arguments)}function V(t,e){var n=b(t.touches),i=b(t.changedTouches);return e&(It|Nt)&&(n=S(n.concat(i),"identifier",!0)),[n,i]}function U(){this.evTarget=oe,this.targetIds={},k.apply(this,arguments)}function H(t,e){var n=b(t.touches),i=this.targetIds;if(e&(Rt|At)&&1===n.length)return i[n[0].identifier]=!0,[n,n];var r,o,s=b(t.changedTouches),a=[],h=this.target;if(o=n.filter(function(t){return g(t.target,h)}),e===Rt)for(r=0;r-1&&i.splice(t,1)};setTimeout(r,se)}}function $(t){for(var e=t.srcEvent.clientX,n=t.srcEvent.clientY,i=0;i-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){n.manager.emit(e,t)}var n=this,i=this.state;i=we&&e(n.options.event+et(i))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=Se)},canEmit:function(){for(var t=0;te.threshold&&r&e.direction},attrTest:function(t){return rt.prototype.attrTest.call(this,t)&&(this.state&ge||!(this.state&ge)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=nt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),f(st,rt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[de]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ge)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),f(at,tt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[ce]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distancee.time;if(this._input=t,!i||!n||t.eventType&(It|Nt)&&!r)this.reset();else if(t.eventType&Rt)this.reset(),this._timer=h(function(){this.state=xe,this.tryEmit()},e.time,this);else if(t.eventType&It)return xe;return Se},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===xe&&(t&&t.eventType&It?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=xt(),this.manager.emit(this.options.event,this._input)))}}),f(ht,rt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[de]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ge)}}),f(ut,rt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Bt|Vt,pointers:1},getTouchAction:function(){return ot.prototype.getTouchAction.call(this)},attrTest:function(t){var e,n=this.options.direction;return n&(Bt|Vt)?e=t.overallVelocity:n&Bt?e=t.overallVelocityX:n&Vt&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&wt(e)>this.options.velocity&&t.eventType&It},emit:function(t){var e=nt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),f(lt,tt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[fe]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",o=r.console&&(r.console.warn||r.console.log);return o&&o.call(r.console,i,n),t.apply(this,arguments)}}function f(t,e,n){var i,r=e.prototype;i=t.prototype=Object.create(r),i.constructor=t,i._super=r,n&&mt(i,n)}function d(t,e){return function(){return t.apply(e,arguments)}}function p(t,e){return typeof t==gt?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function v(t,e,n){l(w(e),function(e){t.addEventListener(e,n,!1)})}function y(t,e,n){l(w(e),function(e){t.removeEventListener(e,n,!1)})}function g(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function _(t,e){return t.indexOf(e)>-1}function w(t){return t.trim().split(/\s+/g)}function x(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;in[e]}):i.sort()),i}function T(t,e){for(var n,i,r=e[0].toUpperCase()+e.slice(1),o=0;o1&&!n.firstMultiple?n.firstMultiple=Y(e):1===r&&(n.firstMultiple=!1);var o=n.firstInput,s=n.firstMultiple,a=s?s.center:o.center,h=e.center=R(i);e.timeStamp=xt(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=N(a,h),e.distance=W(a,h),P(n,e),e.offsetDirection=I(e.deltaX,e.deltaY);var u=A(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=u.x,e.overallVelocityY=u.y,e.overallVelocity=wt(u.x)>wt(u.y)?u.x:u.y,e.scale=s?F(s.pointers,i):1,e.rotation=s?z(s.pointers,i):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,L(n,e);var l=t.element;g(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var n=e.center,i=t.offsetDelta||{},r=t.prevDelta||{},o=t.prevInput||{};e.eventType!==Rt&&o.eventType!==It||(r=t.prevDelta={x:o.deltaX||0,y:o.deltaY||0},i=t.offsetDelta={x:n.x,y:n.y}),e.deltaX=r.x+(n.x-i.x),e.deltaY=r.y+(n.y-i.y)}function L(t,e){var n,i,r,o,s=t.lastInterval||e,h=e.timeStamp-s.timeStamp;if(e.eventType!=Wt&&(h>Yt||s.velocity===a)){var u=e.deltaX-s.deltaX,l=e.deltaY-s.deltaY,c=A(h,u,l);i=c.x,r=c.y,n=wt(c.x)>wt(c.y)?c.x:c.y,o=I(u,l),t.lastInterval=e}else n=s.velocity,i=s.velocityX,r=s.velocityY,o=s.direction;e.velocity=n,e.velocityX=i,e.velocityY=r,e.direction=o}function Y(t){for(var e=[],n=0;n=wt(e)?t<0?zt:Ft:e<0?jt:Gt}function W(t,e,n){n||(n=Ht);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return Math.sqrt(i*i+r*r)}function N(t,e,n){n||(n=Ht);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return 180*Math.atan2(r,i)/Math.PI}function z(t,e){return N(e[1],e[0],Xt)+N(t[1],t[0],Xt)}function F(t,e){return W(e[0],e[1],Xt)/W(t[0],t[1],Xt)}function j(){this.evEl=qt,this.evWin=$t,this.pressed=!1,k.apply(this,arguments)}function G(){this.evEl=Kt,this.evWin=te,k.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function B(){this.evTarget=ne,this.evWin=ie,this.started=!1,k.apply(this,arguments)}function V(t,e){var n=b(t.touches),i=b(t.changedTouches);return e&(It|Wt)&&(n=S(n.concat(i),"identifier",!0)),[n,i]}function U(){this.evTarget=oe,this.targetIds={},k.apply(this,arguments)}function H(t,e){var n=b(t.touches),i=this.targetIds;if(e&(Rt|At)&&1===n.length)return i[n[0].identifier]=!0,[n,n];var r,o,s=b(t.changedTouches),a=[],h=this.target;if(o=n.filter(function(t){return g(t.target,h)}),e===Rt)for(r=0;r-1&&i.splice(t,1)};setTimeout(r,se)}}function $(t){for(var e=t.srcEvent.clientX,n=t.srcEvent.clientY,i=0;i-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){n.manager.emit(e,t)}var n=this,i=this.state;i=we&&e(n.options.event+et(i))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=Se)},canEmit:function(){for(var t=0;te.threshold&&r&e.direction},attrTest:function(t){return rt.prototype.attrTest.call(this,t)&&(this.state&ge||!(this.state&ge)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=nt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),f(st,rt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[de]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ge)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),f(at,tt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[ce]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distancee.time;if(this._input=t,!i||!n||t.eventType&(It|Wt)&&!r)this.reset();else if(t.eventType&Rt)this.reset(),this._timer=h(function(){this.state=xe,this.tryEmit()},e.time,this);else if(t.eventType&It)return xe;return Se},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===xe&&(t&&t.eventType&It?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=xt(),this.manager.emit(this.options.event,this._input)))}}),f(ht,rt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[de]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ge)}}),f(ut,rt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Bt|Vt,pointers:1},getTouchAction:function(){return ot.prototype.getTouchAction.call(this)},attrTest:function(t){var e,n=this.options.direction;return n&(Bt|Vt)?e=t.overallVelocity:n&Bt?e=t.overallVelocityX:n&Vt&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&wt(e)>this.options.velocity&&t.eventType&It},emit:function(t){var e=nt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),f(lt,tt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[fe]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance2&&void 0!==arguments[2]&&arguments[2];for(var n in t)void 0!==i[n]&&("object"!==(0,u.default)(i[n])?void 0!==i[n]&&null!==i[n]||void 0===t[n]||o!==!0?t[n]=i[n]:delete t[n]:"object"===(0,u.default)(t[n])&&e.fillIfDefined(t[n],i[n],o))},e.protoExtend=function(t,e){for(var i=1;i3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&t.indexOf(s)==-1)if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(t.indexOf("rgba")!=-1)return t;if(t.indexOf("rgb")!=-1){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),d=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:d,border:a},hover:{background:d,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,d=(n-o)/n,h=n;return{h:a,s:d,v:h}};var y={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return(0,h.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=y.split(t.style.cssText),n=y.split(i),s=e.extend(o,n);t.style.cssText=y.join(s)},e.removeCssText=function(t,e){var i=y.split(t.style.cssText),o=y.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=y.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,d=i*(1-e),h=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=d;break;case 1:o=h,n=i,s=d;break;case 2:o=d,n=i,s=l;break;case 3:o=d,n=h,s=i;break;case 4:o=l,n=d,s=i;break;case 5:o=i,n=d,s=h}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==("undefined"==typeof i?"undefined":(0,u.default)(i))){for(var o=(0,a.default)(i),n=0;n0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=(arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{});if(null===e[i])t[i]=(0,a.default)(o[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var n in e[i])e[i].hasOwnProperty(n)&&(t[i][n]=e[i][n])}},e.binarySearchCustom=function(t,e,i,o){for(var n=1e4,s=0,r=0,a=t.length-1;r<=a&&s0)return"before"==o?Math.max(0,d-1):d;if(n(r,e)<0&&n(a,e)>0)return"before"==o?d:Math.min(t.length-1,d+1);n(r,e)<0?u=d+1:c=d-1,l++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var i=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return i==o&&(o=e.clientWidth),document.body.removeChild(e),i-o},e.topMost=function(t,e){var i=void 0;Array.isArray(e)||(e=[e]);var o=!0,n=!1,r=void 0;try{for(var a,d=(0,s.default)(t);!(o=(a=d.next()).done);o=!0){var h=a.value;if(h){i=h[e[0]];for(var l=1;l=t.length?(this._t=void 0,n(1)):"keys"==e?n(0,i):"values"==e?n(0,t[i]):n(0,[i,t[i]])},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,i){var o=i(10),n=i(12);t.exports=function(t){return o(n(t))}},function(t,e,i){var o=i(11);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},function(t,e){var i={}.toString;t.exports=function(t){return i.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,i){var o=i(14),n=i(15),s=i(30),r=i(20),a=i(31),d=i(8),h=i(32),l=i(46),u=i(48),c=i(47)("iterator"),f=!([].keys&&"next"in[].keys()),p="@@iterator",v="keys",g="values",y=function(){return this};t.exports=function(t,e,i,m,b,_,w){h(i,e,m);var k,x,O,M=function(t){if(!f&&t in C)return C[t];switch(t){case v:return function(){return new i(this,t)};case g:return function(){return new i(this,t)}}return function(){return new i(this,t)}},S=e+" Iterator",E=b==g,D=!1,C=t.prototype,T=C[c]||C[p]||b&&C[b],P=T||M(b),B=b?E?M("entries"):P:void 0,F="Array"==e?C.entries||T:T;if(F&&(O=u(F.call(new t)),O!==Object.prototype&&(l(O,S,!0),o||a(O,c)||r(O,c,y))),E&&T&&T.name!==g&&(D=!0,P=function(){return T.call(this)}),o&&!w||!f&&!D&&C[c]||r(C,c,P),d[e]=P,d[S]=y,b)if(k={values:E?P:M(g),keys:_?P:M(v),entries:B},w)for(x in k)x in C||s(C,x,k[x]);else n(n.P+n.F*(f||D),e,k);return k}},function(t,e){t.exports=!0},function(t,e,i){var o=i(16),n=i(17),s=i(18),r=i(20),a="prototype",d=function(t,e,i){var h,l,u,c=t&d.F,f=t&d.G,p=t&d.S,v=t&d.P,g=t&d.B,y=t&d.W,m=f?n:n[e]||(n[e]={}),b=m[a],_=f?o:p?o[e]:(o[e]||{})[a];f&&(i=e);for(h in i)l=!c&&_&&void 0!==_[h],l&&h in m||(u=l?_[h]:i[h],m[h]=f&&"function"!=typeof _[h]?i[h]:g&&l?s(u,o):y&&_[h]==u?function(t){var e=function(e,i,o){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,i)}return new t(e,i,o)}return t.apply(this,arguments)};return e[a]=t[a],e}(u):v&&"function"==typeof u?s(Function.call,u):u,v&&((m.virtual||(m.virtual={}))[h]=u,t&d.R&&b&&!b[h]&&r(b,h,u)))};d.F=1,d.G=2,d.S=4,d.P=8,d.B=16,d.W=32,d.U=64,d.R=128,t.exports=d},function(t,e){var i=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(t,e){var i=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=i)},function(t,e,i){var o=i(19);t.exports=function(t,e,i){if(o(t),void 0===e)return t;switch(i){case 1:return function(i){return t.call(e,i)};case 2:return function(i,o){return t.call(e,i,o)};case 3:return function(i,o,n){return t.call(e,i,o,n)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,i){var o=i(21),n=i(29);t.exports=i(25)?function(t,e,i){return o.f(t,e,n(1,i))}:function(t,e,i){return t[e]=i,t}},function(t,e,i){var o=i(22),n=i(24),s=i(28),r=Object.defineProperty;e.f=i(25)?Object.defineProperty:function(t,e,i){if(o(t),e=s(e,!0),o(i),n)try{return r(t,e,i)}catch(t){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(t[e]=i.value),t}},function(t,e,i){var o=i(23);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,i){t.exports=!i(25)&&!i(26)(function(){return 7!=Object.defineProperty(i(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,i){t.exports=!i(26)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,i){var o=i(23),n=i(16).document,s=o(n)&&o(n.createElement);t.exports=function(t){return s?n.createElement(t):{}}},function(t,e,i){var o=i(23);t.exports=function(t,e){if(!o(t))return t;var i,n;if(e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;if("function"==typeof(i=t.valueOf)&&!o(n=i.call(t)))return n;if(!e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,i){t.exports=i(20)},function(t,e){var i={}.hasOwnProperty;t.exports=function(t,e){return i.call(t,e)}},function(t,e,i){var o=i(33),n=i(29),s=i(46),r={};i(20)(r,i(47)("iterator"),function(){return this}),t.exports=function(t,e,i){t.prototype=o(r,{next:n(1,i)}),s(t,e+" Iterator")}},function(t,e,i){var o=i(22),n=i(34),s=i(44),r=i(41)("IE_PROTO"),a=function(){},d="prototype",h=function(){var t,e=i(27)("iframe"),o=s.length,n="<",r=">";for(e.style.display="none",i(45).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(n+"script"+r+"document.F=Object"+n+"/script"+r),t.close(),h=t.F;o--;)delete h[d][s[o]];return h()};t.exports=Object.create||function(t,e){var i;return null!==t?(a[d]=o(t),i=new a,a[d]=null,i[r]=t):i=h(),void 0===e?i:n(i,e)}},function(t,e,i){var o=i(21),n=i(22),s=i(35);t.exports=i(25)?Object.defineProperties:function(t,e){n(t);for(var i,r=s(e),a=r.length,d=0;a>d;)o.f(t,i=r[d++],e[i]);return t}},function(t,e,i){var o=i(36),n=i(44);t.exports=Object.keys||function(t){return o(t,n)}},function(t,e,i){var o=i(31),n=i(9),s=i(37)(!1),r=i(41)("IE_PROTO");t.exports=function(t,e){var i,a=n(t),d=0,h=[];for(i in a)i!=r&&o(a,i)&&h.push(i);for(;e.length>d;)o(a,i=e[d++])&&(~s(h,i)||h.push(i));return h}},function(t,e,i){var o=i(9),n=i(38),s=i(40);t.exports=function(t){return function(e,i,r){var a,d=o(e),h=n(d.length),l=s(r,h);if(t&&i!=i){for(;h>l;)if(a=d[l++],a!=a)return!0}else for(;h>l;l++)if((t||l in d)&&d[l]===i)return t||l||0;return!t&&-1}}},function(t,e,i){var o=i(39),n=Math.min;t.exports=function(t){return t>0?n(o(t),9007199254740991):0}},function(t,e){var i=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:i)(t)}},function(t,e,i){var o=i(39),n=Math.max,s=Math.min;t.exports=function(t,e){return t=o(t),t<0?n(t+e,0):s(t,e)}},function(t,e,i){var o=i(42)("keys"),n=i(43);t.exports=function(t){return o[t]||(o[t]=n(t))}},function(t,e,i){var o=i(16),n="__core-js_shared__",s=o[n]||(o[n]={});t.exports=function(t){return s[t]||(s[t]={})}},function(t,e){var i=0,o=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++i+o).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,i){t.exports=i(16).document&&document.documentElement},function(t,e,i){var o=i(21).f,n=i(31),s=i(47)("toStringTag");t.exports=function(t,e,i){t&&!n(t=i?t:t.prototype,s)&&o(t,s,{configurable:!0,value:e})}},function(t,e,i){var o=i(42)("wks"),n=i(43),s=i(16).Symbol,r="function"==typeof s,a=t.exports=function(t){return o[t]||(o[t]=r&&s[t]||(r?s:n)("Symbol."+t))};a.store=o},function(t,e,i){var o=i(31),n=i(49),s=i(41)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=n(t),o(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,i){var o=i(12);t.exports=function(t){return Object(o(t))}},function(t,e,i){var o=i(51)(!0);i(13)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,i=this._i;return i>=e.length?{value:void 0,done:!0}:(t=o(e,i),this._i+=t.length,{value:t,done:!1})})},function(t,e,i){var o=i(39),n=i(12);t.exports=function(t){return function(e,i){var s,r,a=String(n(e)),d=o(i),h=a.length;return d<0||d>=h?t?"":void 0:(s=a.charCodeAt(d),s<55296||s>56319||d+1===h||(r=a.charCodeAt(d+1))<56320||r>57343?t?a.charAt(d):s:t?a.slice(d,d+2):(s-55296<<10)+(r-56320)+65536)}}},function(t,e,i){var o=i(22),n=i(53);t.exports=i(17).getIterator=function(t){var e=n(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return o(e.call(t))}},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).getIteratorMethod=function(t){if(void 0!=t)return t[n]||t["@@iterator"]||s[o(t)]}},function(t,e,i){var o=i(11),n=i(47)("toStringTag"),s="Arguments"==o(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,i,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=r(e=Object(t),n))?i:s?o(e):"Object"==(a=o(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,i){t.exports={default:i(56),__esModule:!0}},function(t,e,i){i(57);var o=i(17).Object;t.exports=function(t,e){return o.create(t,e)}},function(t,e,i){var o=i(15);o(o.S,"Object",{create:i(33)})},function(t,e,i){t.exports={default:i(59),__esModule:!0}},function(t,e,i){i(60),t.exports=i(17).Object.keys},function(t,e,i){var o=i(49),n=i(35);i(61)("keys",function(){return function(t){return n(o(t))}})},function(t,e,i){var o=i(15),n=i(17),s=i(26);t.exports=function(t,e){var i=(n.Object||{})[t]||Object[t],r={};r[t]=e(i),o(o.S+o.F*s(function(){i(1)}),"Object",r)}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(63),s=o(n),r=i(66),a=o(r),d="function"==typeof a.default&&"symbol"==typeof s.default?function(t){return typeof t}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":typeof t};e.default="function"==typeof a.default&&"symbol"===d(s.default)?function(t){return"undefined"==typeof t?"undefined":d(t)}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":"undefined"==typeof t?"undefined":d(t)}},function(t,e,i){t.exports={default:i(64),__esModule:!0}},function(t,e,i){i(50),i(4),t.exports=i(65).f("iterator")},function(t,e,i){e.f=i(47)},function(t,e,i){t.exports={default:i(67),__esModule:!0}},function(t,e,i){i(68),i(79),i(80),i(81),t.exports=i(17).Symbol},function(t,e,i){var o=i(16),n=i(31),s=i(25),r=i(15),a=i(30),d=i(69).KEY,h=i(26),l=i(42),u=i(46),c=i(43),f=i(47),p=i(65),v=i(70),g=i(71),y=i(72),m=i(75),b=i(22),_=i(9),w=i(28),k=i(29),x=i(33),O=i(76),M=i(78),S=i(21),E=i(35),D=M.f,C=S.f,T=O.f,P=o.Symbol,B=o.JSON,F=B&&B.stringify,I="prototype",z=f("_hidden"),N=f("toPrimitive"),R={}.propertyIsEnumerable,A=l("symbol-registry"),j=l("symbols"),H=l("op-symbols"),L=Object[I],W="function"==typeof P,Y=o.QObject,U=!Y||!Y[I]||!Y[I].findChild,V=s&&h(function(){return 7!=x(C({},"a",{get:function(){return C(this,"a",{value:7}).a}})).a})?function(t,e,i){var o=D(L,e);o&&delete L[e],C(t,e,i),o&&t!==L&&C(L,e,o)}:C,q=function(t){var e=j[t]=x(P[I]);return e._k=t,e},G=W&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},X=function(t,e,i){return t===L&&X(H,e,i),b(t),e=w(e,!0),b(i),n(j,e)?(i.enumerable?(n(t,z)&&t[z][e]&&(t[z][e]=!1),i=x(i,{enumerable:k(0,!1)})):(n(t,z)||C(t,z,k(1,{})),t[z][e]=!0),V(t,e,i)):C(t,e,i)},K=function(t,e){b(t);for(var i,o=y(e=_(e)),n=0,s=o.length;s>n;)X(t,i=o[n++],e[i]);return t},Z=function(t,e){return void 0===e?x(t):K(x(t),e)},Q=function(t){var e=R.call(this,t=w(t,!0));return!(this===L&&n(j,t)&&!n(H,t))&&(!(e||!n(this,t)||!n(j,t)||n(this,z)&&this[z][t])||e)},J=function(t,e){if(t=_(t),e=w(e,!0),t!==L||!n(j,e)||n(H,e)){var i=D(t,e);return!i||!n(j,e)||n(t,z)&&t[z][e]||(i.enumerable=!0),i}},$=function(t){for(var e,i=T(_(t)),o=[],s=0;i.length>s;)n(j,e=i[s++])||e==z||e==d||o.push(e);return o},tt=function(t){for(var e,i=t===L,o=T(i?H:_(t)),s=[],r=0;o.length>r;)!n(j,e=o[r++])||i&&!n(L,e)||s.push(j[e]);return s};W||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=c(arguments.length>0?arguments[0]:void 0),e=function(i){this===L&&e.call(H,i),n(this,z)&&n(this[z],t)&&(this[z][t]=!1),V(this,t,k(1,i))};return s&&U&&V(L,t,{configurable:!0,set:e}),q(t)},a(P[I],"toString",function(){return this._k}),M.f=J,S.f=X,i(77).f=O.f=$,i(74).f=Q,i(73).f=tt,s&&!i(14)&&a(L,"propertyIsEnumerable",Q,!0),p.f=function(t){return q(f(t))}),r(r.G+r.W+r.F*!W,{Symbol:P});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),it=0;et.length>it;)f(et[it++]);for(var et=E(f.store),it=0;et.length>it;)v(et[it++]);r(r.S+r.F*!W,"Symbol",{for:function(t){return n(A,t+="")?A[t]:A[t]=P(t)},keyFor:function(t){if(G(t))return g(A,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){U=!0},useSimple:function(){U=!1}}),r(r.S+r.F*!W,"Object",{create:Z,defineProperty:X,defineProperties:K,getOwnPropertyDescriptor:J,getOwnPropertyNames:$,getOwnPropertySymbols:tt}),B&&r(r.S+r.F*(!W||h(function(){var t=P();return"[null]"!=F([t])||"{}"!=F({a:t})||"{}"!=F(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!G(t)){for(var e,i,o=[t],n=1;arguments.length>n;)o.push(arguments[n++]);return e=o[1],"function"==typeof e&&(i=e),!i&&m(e)||(e=function(t,e){if(i&&(e=i.call(this,t,e)),!G(e))return e}),o[1]=e,F.apply(B,o)}}}),P[I][N]||i(20)(P[I],N,P[I].valueOf),u(P,"Symbol"),u(Math,"Math",!0),u(o.JSON,"JSON",!0)},function(t,e,i){var o=i(43)("meta"),n=i(23),s=i(31),r=i(21).f,a=0,d=Object.isExtensible||function(){return!0},h=!i(26)(function(){return d(Object.preventExtensions({}))}),l=function(t){r(t,o,{value:{i:"O"+ ++a,w:{}}})},u=function(t,e){if(!n(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!s(t,o)){if(!d(t))return"F";if(!e)return"E";l(t)}return t[o].i},c=function(t,e){if(!s(t,o)){if(!d(t))return!0;if(!e)return!1;l(t)}return t[o].w},f=function(t){return h&&p.NEED&&d(t)&&!s(t,o)&&l(t),t},p=t.exports={KEY:o,NEED:!1,fastKey:u,getWeak:c,onFreeze:f}},function(t,e,i){var o=i(16),n=i(17),s=i(14),r=i(65),a=i(21).f;t.exports=function(t){var e=n.Symbol||(n.Symbol=s?{}:o.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:r.f(t)})}},function(t,e,i){var o=i(35),n=i(9);t.exports=function(t,e){for(var i,s=n(t),r=o(s),a=r.length,d=0;a>d;)if(s[i=r[d++]]===e)return i}},function(t,e,i){var o=i(35),n=i(73),s=i(74);t.exports=function(t){var e=o(t),i=n.f;if(i)for(var r,a=i(t),d=s.f,h=0;a.length>h;)d.call(t,r=a[h++])&&e.push(r);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,i){var o=i(11);t.exports=Array.isArray||function(t){return"Array"==o(t)}},function(t,e,i){var o=i(9),n=i(77).f,s={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return n(t)}catch(t){return r.slice()}};t.exports.f=function(t){return r&&"[object Window]"==s.call(t)?a(t):n(o(t))}},function(t,e,i){var o=i(36),n=i(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return o(t,n)}},function(t,e,i){var o=i(74),n=i(29),s=i(9),r=i(28),a=i(31),d=i(24),h=Object.getOwnPropertyDescriptor;e.f=i(25)?h:function(t,e){if(t=s(t),e=r(e,!0),d)try{return h(t,e)}catch(t){}if(a(t,e))return n(!o.f.call(t,e),t[e])}},function(t,e){},function(t,e,i){i(70)("asyncIterator")},function(t,e,i){i(70)("observable")},function(t,e,i){t.exports={default:i(83),__esModule:!0}},function(t,e,i){var o=i(17),n=o.JSON||(o.JSON={stringify:JSON.stringify});t.exports=function(t){return n.stringify.apply(n,arguments)}},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(85)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return go.apply(null,arguments)}function i(t){go=t}function o(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function n(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){var e;for(e in t)return!1;return!0}function r(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function a(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function d(t,e){var i,o=[];for(i=0;i0)for(i in bo)o=bo[i],n=e[o],g(n)||(t[o]=n);return t}function m(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),_o===!1&&(_o=!0,e.updateOffset(this),_o=!1)}function b(t){return t instanceof m||null!=t&&null!=t._isAMomentObject}function _(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=_(e)),i}function k(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;o0?"future":"past"];return S(i)?i(e):i.replace(/%s/i,e)}function N(t,e){var i=t.toLowerCase();Po[i]=Po[i+"s"]=Po[e]=t}function R(t){return"string"==typeof t?Po[t]||Po[t.toLowerCase()]:void 0}function A(t){var e,i,o={};for(i in t)h(t,i)&&(e=R(i),e&&(o[e]=t[i]));return o}function j(t,e){Bo[t]=e}function H(t){var e=[];for(var i in t)e.push({unit:i,priority:Bo[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}function L(t,i){return function(o){return null!=o?(Y(this,t,o),e.updateOffset(this,i),this):W(this,t)}}function W(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Y(t,e,i){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](i)}function U(t){return t=R(t),S(this[t])?this[t]():this}function V(t,e){if("object"==typeof t){t=A(t);for(var i=H(t),o=0;o=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function G(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(No[t]=n),e&&(No[e[0]]=function(){return q(n.apply(this,arguments),e[1],e[2])}),i&&(No[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function X(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function K(t){var e,i,o=t.match(Fo);for(e=0,i=o.length;e=0&&Io.test(t);)t=t.replace(Io,i),Io.lastIndex=0,o-=1;return t}function J(t,e,i){tn[t]=S(e)?e:function(t,o){return t&&i?i:e}}function $(t,e){return h(tn,t)?tn[t](e._strict,e._locale):new RegExp(tt(t))}function tt(t){return et(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function et(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function it(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),r(e)&&(o=function(t,i){i[e]=w(t)}),i=0;i=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function _t(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function wt(t,e,i){var o=7+e-i,n=(7+_t(t,0,o).getUTCDay()-e)%7;return-n+o-1}function kt(t,e,i,o,n){var s,r,a=(7+i-o)%7,d=wt(t,o,n),h=1+7*(e-1)+a+d;return h<=0?(s=t-1,r=gt(s)+h):h>gt(t)?(s=t+1,r=h-gt(t)):(s=t,r=h),{year:s,dayOfYear:r}}function xt(t,e,i){var o,n,s=wt(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return r<1?(n=t.year()-1,o=r+Ot(n,e,i)):r>Ot(t.year(),e,i)?(o=r-Ot(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function Ot(t,e,i){var o=wt(t,e,i),n=wt(t+1,e,i);return(gt(t)-o+n)/7}function Mt(t){return xt(t,this._week.dow,this._week.doy).week}function St(){return this._week.dow}function Et(){return this._week.doy}function Dt(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Ct(t){var e=xt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Tt(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Pt(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function Bt(t,e){return t?o(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:this._weekdays}function Ft(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function It(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function zt(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;o<7;++o)s=u([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=cn.call(this._weekdaysParse,r),n!==-1?n:null):"ddd"===e?(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:null):(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null):"dddd"===e?(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null))):"ddd"===e?(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null))):(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:null)))}function Nt(t,e,i){var o,n,s;if(this._weekdaysParseExact)return zt.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;o<7;o++){if(n=u([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function Rt(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Tt(t,this.localeData()),this.add(t-e,"d")):e}function At(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function jt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Pt(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function Ht(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=xn),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function Lt(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=On),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Wt(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Mn),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Yt(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],d=[],h=[];for(e=0;e<7;e++)i=u([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),d.push(s),h.push(o),h.push(n),h.push(s);for(r.sort(t),a.sort(t),d.sort(t),h.sort(t),e=0;e<7;e++)a[e]=et(a[e]),d[e]=et(d[e]),h[e]=et(h[e]);this._weekdaysRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Ut(){return this.hours()%12||12}function Vt(){return this.hours()||24}function qt(t,e){G(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Gt(t,e){return e._meridiemParse}function Xt(t){return"p"===(t+"").toLowerCase().charAt(0)}function Kt(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Zt(t){return t?t.toLowerCase().replace("_","-"):t}function Qt(t){for(var e,i,o,n,s=0;s0;){if(o=Jt(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&k(n,i,!0)>=e-1)break;e--}s++}return null}function Jt(e){var i=null;if(!Tn[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Sn._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),$t(i)}catch(t){}return Tn[e]}function $t(t,e){var i;return t&&(i=g(e)?ie(t):te(t,e),i&&(Sn=i)),Sn._abbr}function te(t,e){if(null!==e){var i=Cn;if(e.abbr=t,null!=Tn[t])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=Tn[t]._config;else if(null!=e.parentLocale){if(null==Tn[e.parentLocale])return Pn[e.parentLocale]||(Pn[e.parentLocale]=[]),Pn[e.parentLocale].push({name:t,config:e}),null;i=Tn[e.parentLocale]._config}return Tn[t]=new C(D(i,e)),Pn[t]&&Pn[t].forEach(function(t){te(t.name,t.config)}),$t(t),Tn[t]}return delete Tn[t],null}function ee(t,e){if(null!=e){var i,o=Cn;null!=Tn[t]&&(o=Tn[t]._config),e=D(o,e),i=new C(e),i.parentLocale=Tn[t],Tn[t]=i,$t(t)}else null!=Tn[t]&&(null!=Tn[t].parentLocale?Tn[t]=Tn[t].parentLocale:null!=Tn[t]&&delete Tn[t]);return Tn[t]}function ie(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Sn;if(!o(t)){if(e=Jt(t))return e;t=[t]}return Qt(t)}function oe(){return Oo(Tn)}function ne(t){var e,i=t._a;return i&&f(t).overflow===-2&&(e=i[nn]<0||i[nn]>11?nn:i[sn]<1||i[sn]>st(i[on],i[nn])?sn:i[rn]<0||i[rn]>24||24===i[rn]&&(0!==i[an]||0!==i[dn]||0!==i[hn])?rn:i[an]<0||i[an]>59?an:i[dn]<0||i[dn]>59?dn:i[hn]<0||i[hn]>999?hn:-1,f(t)._overflowDayOfYear&&(esn)&&(e=sn),f(t)._overflowWeeks&&e===-1&&(e=ln),f(t)._overflowWeekday&&e===-1&&(e=un),f(t).overflow=e),t}function se(t){var e,i,o,n,s,r,a=t._i,d=Bn.exec(a)||Fn.exec(a);if(d){for(f(t).iso=!0,e=0,i=zn.length;egt(n)&&(f(t)._overflowDayOfYear=!0),i=_t(n,0,t._dayOfYear),t._a[nn]=i.getUTCMonth(),t._a[sn]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[rn]&&0===t._a[an]&&0===t._a[dn]&&0===t._a[hn]&&(t._nextDay=!0,t._a[rn]=0),t._d=(t._useUTC?_t:bt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[rn]=24)}}function le(t){var e,i,o,n,s,r,a,d;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)s=1,r=4,i=ae(e.GG,t._a[on],xt(be(),1,4).year),o=ae(e.W,1),n=ae(e.E,1),(n<1||n>7)&&(d=!0);else{s=t._locale._week.dow,r=t._locale._week.doy;var h=xt(be(),s,r);i=ae(e.gg,t._a[on],h.year),o=ae(e.w,h.week),null!=e.d?(n=e.d,(n<0||n>6)&&(d=!0)):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(d=!0)):n=s}o<1||o>Ot(i,s,r)?f(t)._overflowWeeks=!0:null!=d?f(t)._overflowWeekday=!0:(a=kt(i,o,n,s,r),t._a[on]=a.year,t._dayOfYear=a.dayOfYear)}function ue(t){if(t._f===e.ISO_8601)return void se(t);t._a=[],f(t).empty=!0;var i,o,n,s,r,a=""+t._i,d=a.length,h=0;for(n=Q(t._f,t._locale).match(Fo)||[],i=0;i0&&f(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),h+=o.length),No[s]?(o?f(t).empty=!1:f(t).unusedTokens.push(s),nt(s,o,t)):t._strict&&!o&&f(t).unusedTokens.push(s);f(t).charsLeftOver=d-h,a.length>0&&f(t).unusedInput.push(a),t._a[rn]<=12&&f(t).bigHour===!0&&t._a[rn]>0&&(f(t).bigHour=void 0),f(t).parsedDateParts=t._a.slice(0),f(t).meridiem=t._meridiem,t._a[rn]=ce(t._locale,t._a[rn],t._meridiem),he(t),ne(t)}function ce(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&e<12&&(e+=12),o||12!==e||(e=0),e):e}function fe(t){var e,i,o,n,s;if(0===t._f.length)return f(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Re(){if(!g(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),t=ge(t),t._a){var e=t._isUTC?u(t._a):be(t._a);this._isDSTShifted=this.isValid()&&k(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Ae(){return!!this.isValid()&&!this._isUTC}function je(){return!!this.isValid()&&this._isUTC}function He(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Le(t,e){var i,o,n,s=t,a=null;return Oe(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:r(t)?(s={},e?s[e]=t:s.milliseconds=t):(a=Wn.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:w(a[sn])*i,h:w(a[rn])*i,m:w(a[an])*i,s:w(a[dn])*i,ms:w(Me(1e3*a[hn]))*i}):(a=Yn.exec(t))?(i="-"===a[1]?-1:1,s={y:We(a[2],i),M:We(a[3],i),w:We(a[4],i),d:We(a[5],i),h:We(a[6],i),m:We(a[7],i),s:We(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Ue(be(s.from),be(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new xe(s),Oe(t)&&h(t,"_locale")&&(o._locale=t._locale),o}function We(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Ye(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Ue(t,e){var i;return t.isValid()&&e.isValid()?(e=De(e,t),t.isBefore(e)?i=Ye(t,e):(i=Ye(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function Ve(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(M(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=Le(i,o),qe(this,n,t),this}}function qe(t,i,o,n){var s=i._milliseconds,r=Me(i._days),a=Me(i._months);t.isValid()&&(n=null==n||n,s&&t._d.setTime(t._d.valueOf()+s*o),r&&Y(t,"Date",W(t,"Date")+r*o),a&<(t,W(t,"Month")+a*o),n&&e.updateOffset(t,r||a))}function Ge(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"}function Xe(t,i){var o=t||be(),n=De(o,this).startOf("day"),s=e.calendarFormat(this,n)||"sameElse",r=i&&(S(i[s])?i[s].call(this,o):i[s]);return this.format(r||this.localeData().calendar(s,this,be(o)))}function Ke(){return new m(this)}function Ze(t,e){var i=b(t)?t:be(t);return!(!this.isValid()||!i.isValid())&&(e=R(g(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()s&&(e=s),Bi.call(this,t,e,i,o,n))}function Bi(t,e,i,o,n){var s=kt(t,e,i,o,n),r=_t(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Fi(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Ii(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function zi(t,e){e[hn]=w(1e3*("0."+t))}function Ni(){return this._isUTC?"UTC":""}function Ri(){return this._isUTC?"Coordinated Universal Time":""}function Ai(t){return be(1e3*t)}function ji(){return be.apply(null,arguments).parseZone()}function Hi(t){return t}function Li(t,e,i,o){var n=ie(),s=u().set(o,e);return n[i](s,t)}function Wi(t,e,i){if(r(t)&&(e=t,t=void 0),t=t||"",null!=e)return Li(t,e,i,"month");var o,n=[];for(o=0;o<12;o++)n[o]=Li(t,o,i,"month");return n}function Yi(t,e,i,o){"boolean"==typeof t?(r(e)&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,r(e)&&(i=e,e=void 0),e=e||"");var n=ie(),s=t?n._week.dow:0;if(null!=i)return Li(e,(i+s)%7,o,"day");var a,d=[];for(a=0;a<7;a++)d[a]=Li(e,(a+s)%7,o,"day");return d}function Ui(t,e){return Wi(t,e,"months")}function Vi(t,e){return Wi(t,e,"monthsShort")}function qi(t,e,i){return Yi(t,e,i,"weekdays")}function Gi(t,e,i){return Yi(t,e,i,"weekdaysShort")}function Xi(t,e,i){return Yi(t,e,i,"weekdaysMin")}function Ki(){var t=this._data;return this._milliseconds=ts(this._milliseconds),this._days=ts(this._days),this._months=ts(this._months),t.milliseconds=ts(t.milliseconds),t.seconds=ts(t.seconds),t.minutes=ts(t.minutes),t.hours=ts(t.hours),t.months=ts(t.months),t.years=ts(t.years),this}function Zi(t,e,i,o){var n=Le(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function Qi(t,e){return Zi(this,t,e,1)}function Ji(t,e){return Zi(this,t,e,-1)}function $i(t){return t<0?Math.floor(t):Math.ceil(t)}function to(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,d=this._data;return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*$i(io(a)+r),r=0,a=0),d.milliseconds=s%1e3,t=_(s/1e3),d.seconds=t%60,e=_(t/60),d.minutes=e%60, -i=_(e/60),d.hours=i%24,r+=_(i/24),n=_(eo(r)),a+=n,r-=$i(io(n)),o=_(a/12),a%=12,d.days=r,d.months=a,d.years=o,this}function eo(t){return 4800*t/146097}function io(t){return 146097*t/4800}function oo(t){var e,i,o=this._milliseconds;if(t=R(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+eo(e),"month"===t?i:i/12;switch(e=this._days+Math.round(io(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function no(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12)}function so(t){return function(){return this.as(t)}}function ro(t){return t=R(t),this[t+"s"]()}function ao(t){return function(){return this._data[t]}}function ho(){return _(this.days()/7)}function lo(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function uo(t,e,i){var o=Le(t).abs(),n=gs(o.as("s")),s=gs(o.as("m")),r=gs(o.as("h")),a=gs(o.as("d")),d=gs(o.as("M")),h=gs(o.as("y")),l=n0,l[4]=i,lo.apply(null,l)}function co(t){return void 0===t?gs:"function"==typeof t&&(gs=t,!0)}function fo(t,e){return void 0!==ys[t]&&(void 0===e?ys[t]:(ys[t]=e,!0))}function po(t){var e=this.localeData(),i=uo(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function vo(){var t,e,i,o=ms(this._milliseconds)/1e3,n=ms(this._days),s=ms(this._months);t=_(o/60),e=_(t/60),o%=60,t%=60,i=_(s/12),s%=12;var r=i,a=s,d=n,h=e,l=t,u=o,c=this.asSeconds();return c?(c<0?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(d?d+"D":"")+(h||l||u?"T":"")+(h?h+"H":"")+(l?l+"M":"")+(u?u+"S":""):"P0D"}var go,yo;yo=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;o68?1900:2e3)};var mn=L("FullYear",!0);G("w",["ww",2],"wo","week"),G("W",["WW",2],"Wo","isoWeek"),N("week","w"),N("isoWeek","W"),j("week",5),j("isoWeek",5),J("w",Wo),J("ww",Wo,Ao),J("W",Wo),J("WW",Wo,Ao),ot(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=w(t)});var bn={dow:0,doy:6};G("d",0,"do","day"),G("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),G("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),G("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),G("e",0,0,"weekday"),G("E",0,0,"isoWeekday"),N("day","d"),N("weekday","e"),N("isoWeekday","E"),j("day",11),j("weekday",11),j("isoWeekday",11),J("d",Wo),J("e",Wo),J("E",Wo),J("dd",function(t,e){return e.weekdaysMinRegex(t)}),J("ddd",function(t,e){return e.weekdaysShortRegex(t)}),J("dddd",function(t,e){return e.weekdaysRegex(t)}),ot(["dd","ddd","dddd"],function(t,e,i,o){var n=i._locale.weekdaysParse(t,o,i._strict);null!=n?e.d=n:f(i).invalidWeekday=t}),ot(["d","e","E"],function(t,e,i,o){e[o]=w(t)});var _n="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),wn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),kn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),xn=$o,On=$o,Mn=$o;G("H",["HH",2],0,"hour"),G("h",["hh",2],0,Ut),G("k",["kk",2],0,Vt),G("hmm",0,0,function(){return""+Ut.apply(this)+q(this.minutes(),2)}),G("hmmss",0,0,function(){return""+Ut.apply(this)+q(this.minutes(),2)+q(this.seconds(),2)}),G("Hmm",0,0,function(){return""+this.hours()+q(this.minutes(),2)}),G("Hmmss",0,0,function(){return""+this.hours()+q(this.minutes(),2)+q(this.seconds(),2)}),qt("a",!0),qt("A",!1),N("hour","h"),j("hour",13),J("a",Gt),J("A",Gt),J("H",Wo),J("h",Wo),J("HH",Wo,Ao),J("hh",Wo,Ao),J("hmm",Yo),J("hmmss",Uo),J("Hmm",Yo),J("Hmmss",Uo),it(["H","HH"],rn),it(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),it(["h","hh"],function(t,e,i){e[rn]=w(t),f(i).bigHour=!0}),it("hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o)),f(i).bigHour=!0}),it("hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[dn]=w(t.substr(n)),f(i).bigHour=!0}),it("Hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o))}),it("Hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[dn]=w(t.substr(n))});var Sn,En=/[ap]\.?m?\.?/i,Dn=L("Hours",!0),Cn={calendar:Mo,longDateFormat:So,invalidDate:Eo,ordinal:Do,ordinalParse:Co,relativeTime:To,months:pn,monthsShort:vn,week:bn,weekdays:_n,weekdaysMin:kn,weekdaysShort:wn,meridiemParse:En},Tn={},Pn={},Bn=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Fn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,In=/Z|[+-]\d\d(?::?\d\d)?/,zn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Nn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Rn=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=O("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),e.ISO_8601=function(){};var An=O("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=be.apply(null,arguments);return this.isValid()&&t.isValid()?tthis?this:t:v()}),Hn=function(){return Date.now?Date.now():+new Date};Se("Z",":"),Se("ZZ",""),J("Z",Qo),J("ZZ",Qo),it(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Ee(Qo,t)});var Ln=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var Wn=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Yn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Le.fn=xe.prototype;var Un=Ve(1,"add"),Vn=Ve(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var qn=O("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});G(0,["gg",2],0,function(){return this.weekYear()%100}),G(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Si("gggg","weekYear"),Si("ggggg","weekYear"),Si("GGGG","isoWeekYear"),Si("GGGGG","isoWeekYear"),N("weekYear","gg"),N("isoWeekYear","GG"),j("weekYear",1),j("isoWeekYear",1),J("G",Ko),J("g",Ko),J("GG",Wo,Ao),J("gg",Wo,Ao),J("GGGG",qo,Ho),J("gggg",qo,Ho),J("GGGGG",Go,Lo),J("ggggg",Go,Lo),ot(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=w(t)}),ot(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),G("Q",0,"Qo","quarter"),N("quarter","Q"),j("quarter",7),J("Q",Ro),it("Q",function(t,e){e[nn]=3*(w(t)-1)}),G("D",["DD",2],"Do","date"),N("date","D"),j("date",9),J("D",Wo),J("DD",Wo,Ao),J("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),it(["D","DD"],sn),it("Do",function(t,e){e[sn]=w(t.match(Wo)[0],10)});var Gn=L("Date",!0);G("DDD",["DDDD",3],"DDDo","dayOfYear"),N("dayOfYear","DDD"),j("dayOfYear",4),J("DDD",Vo),J("DDDD",jo),it(["DDD","DDDD"],function(t,e,i){i._dayOfYear=w(t)}),G("m",["mm",2],0,"minute"),N("minute","m"),j("minute",14),J("m",Wo),J("mm",Wo,Ao),it(["m","mm"],an);var Xn=L("Minutes",!1);G("s",["ss",2],0,"second"),N("second","s"),j("second",15),J("s",Wo),J("ss",Wo,Ao),it(["s","ss"],dn);var Kn=L("Seconds",!1);G("S",0,0,function(){return~~(this.millisecond()/100)}),G(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),G(0,["SSS",3],0,"millisecond"),G(0,["SSSS",4],0,function(){return 10*this.millisecond()}),G(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),G(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),G(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),G(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),G(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),N("millisecond","ms"),j("millisecond",16),J("S",Vo,Ro),J("SS",Vo,Ao),J("SSS",Vo,jo);var Zn;for(Zn="SSSS";Zn.length<=9;Zn+="S")J(Zn,Xo);for(Zn="S";Zn.length<=9;Zn+="S")it(Zn,zi);var Qn=L("Milliseconds",!1);G("z",0,0,"zoneAbbr"),G("zz",0,0,"zoneName");var Jn=m.prototype;Jn.add=Un,Jn.calendar=Xe,Jn.clone=Ke,Jn.diff=ii,Jn.endOf=vi,Jn.format=ai,Jn.from=di,Jn.fromNow=hi,Jn.to=li,Jn.toNow=ui,Jn.get=U,Jn.invalidAt=Oi,Jn.isAfter=Ze,Jn.isBefore=Qe,Jn.isBetween=Je,Jn.isSame=$e,Jn.isSameOrAfter=ti,Jn.isSameOrBefore=ei,Jn.isValid=ki,Jn.lang=qn,Jn.locale=ci,Jn.localeData=fi,Jn.max=jn,Jn.min=An,Jn.parsingFlags=xi,Jn.set=V,Jn.startOf=pi,Jn.subtract=Vn,Jn.toArray=bi,Jn.toObject=_i,Jn.toDate=mi,Jn.toISOString=si,Jn.inspect=ri,Jn.toJSON=wi,Jn.toString=ni,Jn.unix=yi,Jn.valueOf=gi,Jn.creationData=Mi,Jn.year=mn,Jn.isLeapYear=mt,Jn.weekYear=Ei,Jn.isoWeekYear=Di,Jn.quarter=Jn.quarters=Fi,Jn.month=ut,Jn.daysInMonth=ct,Jn.week=Jn.weeks=Dt,Jn.isoWeek=Jn.isoWeeks=Ct,Jn.weeksInYear=Ti,Jn.isoWeeksInYear=Ci,Jn.date=Gn,Jn.day=Jn.days=Rt,Jn.weekday=At,Jn.isoWeekday=jt,Jn.dayOfYear=Ii,Jn.hour=Jn.hours=Dn,Jn.minute=Jn.minutes=Xn,Jn.second=Jn.seconds=Kn,Jn.millisecond=Jn.milliseconds=Qn,Jn.utcOffset=Te,Jn.utc=Be,Jn.local=Fe,Jn.parseZone=Ie,Jn.hasAlignedHourOffset=ze,Jn.isDST=Ne,Jn.isLocal=Ae,Jn.isUtcOffset=je,Jn.isUtc=He,Jn.isUTC=He,Jn.zoneAbbr=Ni,Jn.zoneName=Ri,Jn.dates=O("dates accessor is deprecated. Use date instead.",Gn),Jn.months=O("months accessor is deprecated. Use month instead",ut),Jn.years=O("years accessor is deprecated. Use year instead",mn),Jn.zone=O("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Pe),Jn.isDSTShifted=O("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Re);var $n=C.prototype;$n.calendar=T,$n.longDateFormat=P,$n.invalidDate=B,$n.ordinal=F,$n.preparse=Hi,$n.postformat=Hi,$n.relativeTime=I,$n.pastFuture=z,$n.set=E,$n.months=rt,$n.monthsShort=at,$n.monthsParse=ht,$n.monthsRegex=pt,$n.monthsShortRegex=ft,$n.week=Mt,$n.firstDayOfYear=Et,$n.firstDayOfWeek=St,$n.weekdays=Bt,$n.weekdaysMin=It,$n.weekdaysShort=Ft,$n.weekdaysParse=Nt,$n.weekdaysRegex=Ht,$n.weekdaysShortRegex=Lt,$n.weekdaysMinRegex=Wt,$n.isPM=Xt,$n.meridiem=Kt,$t("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=O("moment.lang is deprecated. Use moment.locale instead.",$t),e.langData=O("moment.langData is deprecated. Use moment.localeData instead.",ie);var ts=Math.abs,es=so("ms"),is=so("s"),os=so("m"),ns=so("h"),ss=so("d"),rs=so("w"),as=so("M"),ds=so("y"),hs=ao("milliseconds"),ls=ao("seconds"),us=ao("minutes"),cs=ao("hours"),fs=ao("days"),ps=ao("months"),vs=ao("years"),gs=Math.round,ys={s:45,m:45,h:22,d:26,M:11},ms=Math.abs,bs=xe.prototype;return bs.abs=Ki,bs.add=Qi,bs.subtract=Ji,bs.as=oo,bs.asMilliseconds=es,bs.asSeconds=is,bs.asMinutes=os,bs.asHours=ns,bs.asDays=ss,bs.asWeeks=rs,bs.asMonths=as,bs.asYears=ds,bs.valueOf=no,bs._bubble=to,bs.get=ro,bs.milliseconds=hs,bs.seconds=ls,bs.minutes=us,bs.hours=cs,bs.days=fs,bs.weeks=ho,bs.months=ps,bs.years=vs,bs.humanize=po,bs.toISOString=vo,bs.toString=vo,bs.toJSON=vo,bs.locale=ci,bs.localeData=fi,bs.toIsoString=O("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",vo),bs.lang=qn,G("X",0,0,"unix"),G("x",0,0,"valueOf"),J("x",Ko),J("X",Jo),it("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),it("x",function(t,e,i){i._d=new Date(w(t))}),e.version="2.17.1",i(be),e.fn=Jn,e.min=we,e.max=ke,e.now=Hn,e.utc=u,e.unix=Ai,e.months=Ui,e.isDate=a,e.locale=$t,e.invalid=v,e.duration=Le,e.isMoment=b,e.weekdays=qi,e.parseZone=ji,e.localeData=ie,e.isDuration=Oe,e.monthsShort=Vi,e.weekdaysMin=Xi,e.defineLocale=te,e.updateLocale=ee,e.locales=oe,e.weekdaysShort=Gi,e.normalizeUnits=R,e.relativeTimeRounding=co,e.relativeTimeThreshold=fo,e.calendarFormat=Ge,e.prototype=Jn,e})}).call(e,i(86)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=87},function(t,e){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){n<16&&(e[o+n++]=u[t])});n<16;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:v,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),d=void 0!==t.nsecs?t.nsecs:y+1,h=a-g+(d-y)/1e4;if(h<0&&void 0===t.clockseq&&(r=r+1&16383),(h<0||a>g)&&void 0===t.nsecs&&(d=0),d>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");g=a,y=d,v=r,a+=122192928e5;var l=(1e4*(268435455&a)+d)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||p,f=0;f<6;f++)s[n+f]=c[f];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;a<16;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var d=new Uint8Array(16);r=function(){return crypto.getRandomValues(d),d}}if(!r){var h=new Array(16);r=function(){for(var t,e=0;e<16;e++)0===(3&e)&&(t=4294967296*Math.random()),h[e]=t>>>((3&e)<<3)&255;return h}}for(var l=[],u={},c=0;c<256;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var f=r(),p=[1|f[0],f[1],f[2],f[3],f[4],f[5]],v=16383&(f[6]<<8|f[7]),g=0,y=0,m=s;m.v1=n,m.v4=s,m.parse=i,m.unparse=o,t.exports=m}).call(e,function(){return this}())},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var d=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(d.textContent=r.content),r.className&&d.setAttributeNS(null,"class",r.className+" vis-label"),d.setAttributeNS(null,"x",t),d.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,d){if(0!=n){n<0&&(n*=-1,i-=n);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*o),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",o),h.setAttributeNS(null,"height",n),h.setAttributeNS(null,"class",s),d&&h.setAttributeNS(null,"style",d)}}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=(0,l.default)(this._options.type),o=0,n=i.length;on?1:or)&&(s=d,r=h)}return s},n.prototype.min=function(t){var e,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(e=0,i=n.length;ethis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var s=i(58),r=o(s),a=i(1),d=i(90);n.prototype.setData=function(t){var e,i,o,n,s;if(this._data){for(this._data.off&&this._data.off("*",this.listener),e=this._data.getIds({filter:this._options&&this._options.filter}),s=[],o=0,n=e.length;o0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var o=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[o],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e.default=h},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(95),s=o(n),r=i(96),a=o(r),d=i(102),h=o(d),l=i(103),u=o(l),c=i(1),f=i(90),p=i(92),v=function(){function t(e,i,o,n){var r=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.layoutEngine=n,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(t,e){r.add(e.items)},update:function(t,e){r.update(e.items,e.data)},remove:function(t,e){r.remove(e.items)}},this.options={},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1},size:25,title:void 0,value:void 0,x:void 0,y:void 0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){c.forEach(t.nodesListeners,function(e,i){t.body.data.nodes&&t.body.data.nodes.off(i,e)}),delete t.body.functions.createNode,delete t.nodesListeners.add,delete t.nodesListeners.update,delete t.nodesListeners.remove,delete t.nodesListeners})}},{key:"setOptions",value:function(t){if(this.nodeOptions=t,void 0!==t){if(h.default.parseOptions(this.options,t),void 0!==t.shape)for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&this.body.nodes[e].updateShape();if(void 0!==t.font){u.default.parseOptions(this.options.font,t);for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&(this.body.nodes[i].updateLabelModule(),this.body.nodes[i]._reset())}if(void 0!==t.size)for(var o in this.body.nodes)this.body.nodes.hasOwnProperty(o)&&this.body.nodes[o]._reset();void 0===t.hidden&&void 0===t.physics||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.nodes;if(t instanceof f||t instanceof p)this.body.data.nodes=t;else if(Array.isArray(t))this.body.data.nodes=new f,this.body.data.nodes.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new f}o&&c.forEach(this.nodesListeners,function(t,e){o.off(e,t)}),this.body.nodes={},this.body.data.nodes&&!function(){var t=e;c.forEach(e.nodesListeners,function(e,i){t.body.data.nodes.on(i,e)});var i=e.body.data.nodes.getIds();e.add(i,!0)}(),i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:h.default;return new e(t,this.body,this.images,this.groups,this.options,this.defaultOptions,this.nodeOptions)}},{key:"refresh",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.body.nodes;for(var i in e){var o=void 0;e.hasOwnProperty(i)&&(o=e[i]);var n=this.body.data.nodes._data[i];void 0!==o&&void 0!==n&&(t===!0&&o.setOptions({x:null,y:null}),o.setOptions({fixed:!1}),o.setOptions(n))}}},{key:"getPositions",value:function(t){var e={};if(void 0!==t){if(Array.isArray(t)===!0){for(var i=0;it.left&&this.shape.topt.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top; -}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=["color","font","fixed","shadow"];if(L.selectiveNotDeepExtend(n,t,e,i),L.mergeOptions(t,e,"shadow",i,o),void 0!==e.color&&null!==e.color){var s=L.parseColor(e.color);L.fillIfDefined(t.color,s)}else i===!0&&null===e.color&&(t.color=L.bridgeObject(o.color));void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y))),void 0!==e.font&&null!==e.font?u.default.parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=L.bridgeObject(o.font)),void 0!==e.scaling&&L.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)}}]),t}();e.default=W},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(104),s=o(n),r=i(2),a=o(r),d=i(62),h=o(d),l=i(95),u=o(l),c=i(96),f=o(c),p=i(1),v=function(){function t(e,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,u.default)(this,t),this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=o}return(0,f.default)(t,[{key:"setOptions",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.elementOptions=e,this.fontOptions=p.deepExtend({},e.font,!0),void 0!==e.label&&(this.labelDirty=!0),void 0!==e.font&&(t.parseOptions(this.fontOptions,e,i),"string"==typeof e.font?this.baseSize=this.fontOptions.size:"object"===(0,h.default)(e.font)&&void 0!==e.font.size&&(this.baseSize=e.font.size))}},{key:"constrain",value:function(t,e,i){this.fontOptions.constrainWidth=!1,this.fontOptions.maxWdt=-1,this.fontOptions.minWdt=-1;var o=[e,t,i],n=p.topMost(o,"widthConstraint");if("number"==typeof n)this.fontOptions.maxWdt=Number(n),this.fontOptions.minWdt=Number(n);else if("object"===("undefined"==typeof n?"undefined":(0,h.default)(n))){var s=p.topMost(o,["widthConstraint","maximum"]);"number"==typeof s&&(this.fontOptions.maxWdt=Number(s));var r=p.topMost(o,["widthConstraint","minimum"]);"number"==typeof r&&(this.fontOptions.minWdt=Number(r))}this.fontOptions.constrainHeight=!1,this.fontOptions.minHgt=-1,this.fontOptions.valign="middle";var a=p.topMost(o,"heightConstraint");if("number"==typeof a)this.fontOptions.minHgt=Number(a);else if("object"===("undefined"==typeof a?"undefined":(0,h.default)(a))){var d=p.topMost(o,["heightConstraint","minimum"]);"number"==typeof d&&(this.fontOptions.minHgt=Number(d));var l=p.topMost(o,["heightConstraint","valign"]);"string"==typeof l&&("top"!==l&&"bottom"!==l||(this.fontOptions.valign=l))}}},{key:"choosify",value:function(t,e,i){this.fontOptions.chooser=!0;var o=[e,t,i],n=p.topMost(o,"chosen");if("boolean"==typeof n)this.fontOptions.chooser=n;else if("object"===("undefined"==typeof n?"undefined":(0,h.default)(n))){var s=p.topMost(o,["chosen","label"]);"boolean"!=typeof s&&"function"!=typeof s||(this.fontOptions.chooser=s)}}},{key:"adjustSizes",value:function(t){var e=t?t.right+t.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=e,this.fontOptions.minWdt-=e);var i=t?t.top+t.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}},{key:"propagateFonts",value:function(t,e,i){if(this.fontOptions.multi){var o=["bold","ital","boldital","mono"],n=!0,s=!1,r=void 0;try{for(var d,h=(0,a.default)(o);!(n=(d=h.next()).done);n=!0){var l=d.value,u=void 0;if(t.font&&(u=t.font[l]),"string"==typeof u){var c=u.split(" ");this.fontOptions[l].size=c[0].replace("px",""),this.fontOptions[l].face=c[1],this.fontOptions[l].color=c[2],this.fontOptions[l].vadjust=this.fontOptions.vadjust,this.fontOptions[l].mod=i.font[l].mod}else{if(u&&u.hasOwnProperty("face")?this.fontOptions[l].face=u.face:e.font&&e.font[l]&&e.font[l].hasOwnProperty("face")?this.fontOptions[l].face=e.font[l].face:"mono"===l?this.fontOptions[l].face=i.font[l].face:e.font&&e.font.hasOwnProperty("face")?this.fontOptions[l].face=e.font.face:this.fontOptions[l].face=this.fontOptions.face,u&&u.hasOwnProperty("color")?this.fontOptions[l].color=u.color:e.font&&e.font[l]&&e.font[l].hasOwnProperty("color")?this.fontOptions[l].color=e.font[l].color:e.font&&e.font.hasOwnProperty("color")?this.fontOptions[l].color=e.font.color:this.fontOptions[l].color=this.fontOptions.color,u&&u.hasOwnProperty("mod")?this.fontOptions[l].mod=u.mod:e.font&&e.font[l]&&e.font[l].hasOwnProperty("mod")?this.fontOptions[l].mod=e.font[l].mod:e.font&&e.font.hasOwnProperty("mod")?this.fontOptions[l].mod=e.font.mod:this.fontOptions[l].mod=i.font[l].mod,u&&u.hasOwnProperty("size"))this.fontOptions[l].size=u.size;else if(e.font&&e.font[l]&&e.font[l].hasOwnProperty("size"))this.fontOptions[l].size=e.font[l].size;else if(this.fontOptions[l].face===i.font[l].face&&this.fontOptions.face===i.font.face){var f=this.fontOptions.size/Number(i.font.size);this.fontOptions[l].size=i.font[l].size*f}else e.font&&e.font.hasOwnProperty("size")?this.fontOptions[l].size=e.font.size:this.fontOptions[l].size=this.fontOptions.size;if(u&&u.hasOwnProperty("vadjust"))this.fontOptions[l].vadjust=u.vadjust;else if(e.font&&e.font[l]&&e.font[l].hasOwnProperty("vadjust"))this.fontOptions[l].vadjust=e.font[l].vadjust;else if(this.fontOptions[l].face===i.font[l].face&&this.fontOptions.face===i.font.face){var p=this.fontOptions.size/Number(i.font.size);this.fontOptions[l].vadjust=i.font[l].vadjust*Math.round(p)}else e.font&&e.font.hasOwnProperty("vadjust")?this.fontOptions[l].vadjust=e.font.vadjust:this.fontOptions[l].vadjust=this.fontOptions.vadjust}this.fontOptions[l].size=Number(this.fontOptions[l].size),this.fontOptions[l].vadjust=Number(this.fontOptions[l].vadjust)}}catch(t){s=!0,r=t}finally{try{!n&&h.return&&h.return()}finally{if(s)throw r}}}}},{key:"draw",value:function(t,e,i,o,n){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";if(void 0!==this.elementOptions.label){var r=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&r5&&void 0!==arguments[5]?arguments[5]:"middle",a=this.fontOptions.size,d=a*this.body.view.scale;d>=this.elementOptions.scaling.label.maxVisible&&(a=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale);var h=this.size.yLine,l=this._setAlignment(t,o,h,r),u=(0,s.default)(l,2);o=u[0],h=u[1],t.textAlign="left",o-=this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&("top"===this.fontOptions.valign&&(h-=(this.size.height-this.size.labelHeight)/2),"bottom"===this.fontOptions.valign&&(h+=(this.size.height-this.size.labelHeight)/2));for(var c=0;c0&&(t.lineWidth=v.strokeWidth,t.strokeStyle=b,t.lineJoin="round"),t.fillStyle=m,v.strokeWidth>0&&t.strokeText(v.text,o+f,h+v.vadjust),t.fillText(v.text,o+f,h+v.vadjust),f+=v.width}h+=this.lines[c].height}}},{key:"_setAlignment",value:function(t,e,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&this.pointToSelf===!1){e=0,i=0;var n=2;"top"===this.fontOptions.align?(t.textBaseline="alphabetic",i-=2*n):"bottom"===this.fontOptions.align?(t.textBaseline="hanging",i+=2*n):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t,e,i){var o=t||"#000000",n=i||"#ffffff";if(e<=this.elementOptions.scaling.label.drawThreshold){var s=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-e)));o=p.overrideOpacity(o,s),n=p.overrideOpacity(n,s)}return[o,n]}},{key:"getTextSize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._processLabel(t,e,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:"calculateLabelSize",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";this.labelDirty===!0&&this._processLabel(t,e,i),this.size.left=o-.5*this.size.width,this.size.top=n-.5*this.size.height,this.size.yLine=n+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===s&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"decodeMarkupSystem",value:function(t){var e="none";return"markdown"===t||"md"===t?e="markdown":t!==!0&&"html"!==t||(e="html"),e}},{key:"splitBlocks",value:function(t,e){var i=this.decodeMarkupSystem(e);return"none"===i?[{text:t,mod:"normal"}]:"markdown"===i?this.splitMarkdownBlocks(t):"html"===i?this.splitHtmlBlocks(t):void 0}},{key:"splitMarkdownBlocks",value:function(t){var e=[],i={bold:!1,ital:!1,mono:!1,beginable:!0,spacing:!1,position:0,buffer:"",modStack:[]};for(i.mod=function(){return 0===this.modStack.length?"normal":this.modStack[0]},i.modName=function(){return 0===this.modStack.length?"normal":"mono"===this.modStack[0]?"mono":i.bold&&i.ital?"boldital":i.bold?"bold":i.ital?"ital":void 0},i.emitBlock=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position/.test(t.substr(i.position,3))?i.mono||i.ital||!//.test(t.substr(i.position,3))?!i.mono&&//.test(t.substr(i.position,6))?(i.emitBlock(),i.mono=!0,i.modStack.unshift("mono"),i.position+=5):!i.mono&&"bold"===i.mod()&&/<\/b>/.test(t.substr(i.position,4))?(i.emitBlock(),i.bold=!1,i.modStack.shift(),i.position+=3):!i.mono&&"ital"===i.mod()&&/<\/i>/.test(t.substr(i.position,4))?(i.emitBlock(),i.ital=!1,i.modStack.shift(),i.position+=3):"mono"===i.mod()&&/<\/code>/.test(t.substr(i.position,7))?(i.emitBlock(),i.mono=!1,i.modStack.shift(),i.position+=6):i.add(o):(i.emitBlock(),i.ital=!0,i.modStack.unshift("ital"),i.position+=2):(i.emitBlock(),i.bold=!0,i.modStack.unshift("bold"),i.position+=2):/&/.test(o)?/</.test(t.substr(i.position,4))?(i.add("<"),i.position+=3):/&/.test(t.substr(i.position,5))?(i.add("&"),i.position+=4):i.add("&"):i.add(o),i.position++}return i.emitBlock(),e}},{key:"getFormattingValues",value:function(t,e,i,o){var n={color:"normal"===o?this.fontOptions.color:this.fontOptions[o].color,size:"normal"===o?this.fontOptions.size:this.fontOptions[o].size,face:"normal"===o?this.fontOptions.face:this.fontOptions[o].face,mod:"normal"===o?"":this.fontOptions[o].mod,vadjust:"normal"===o?this.fontOptions.vadjust:this.fontOptions[o].vadjust,strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};return"normal"===o?(e||i)&&(this.fontOptions.chooser===!0&&this.elementOptions.labelHighlightBold?n.mod="bold":"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(t,n,this.elementOptions.id,e,i)):(e||i)&&"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(t,n,this.elementOptions.id,e,i),t.font=(n.mod+" "+n.size+"px "+n.face).replace(/"/g,""),n.font=t.font,n.height=n.size,n}},{key:"differentState",value:function(t,e){return t!==this.fontOptions.selectedState&&e!==this.fontOptions.hoverState}},{key:"_processLabel",value:function(t,e,i){var o=0,n=0,s=[],r=0;if(s.add=function(t,e,i,o,n,s,r,a,d,h){this.length==t&&(this[t]={width:0,height:0,blocks:[]}),this[t].blocks.push({text:e,font:i,color:o,width:n,height:s,vadjust:r,mod:a,strokeWidth:d,strokeColor:h})},s.accumulate=function(t,e,i){this[t].width+=e,this[t].height=i>this[t].height?i:this[t].height},s.addAndAccumulate=function(t,e,i,o,n,s,r,a,d,h){this.add(t,e,i,o,n,s,r,a,d,h),this.accumulate(t,n,s)},void 0!==this.elementOptions.label){var a=String(this.elementOptions.label).split("\n"),d=a.length;if(this.elementOptions.font.multi)for(var h=0;h0)for(var v=this.getFormattingValues(t,e,i,l[p].mod),g=l[p].text.split(" "),y=!0,m="",b={width:0},_=void 0,w=0;wthis.fontOptions.maxWdt&&0!=_.width?(c=v.height>c?v.height:c,s.add(r,m,v.font,v.color,_.width,v.height,v.vadjust,l[p].mod,v.strokeWidth,v.strokeColor),s.accumulate(r,_.width,c),m="",y=!0,u=0,o=s[r].width>o?s[r].width:o,n+=s[r].height,r++):(m=m+k+g[w],w===g.length-1&&(c=v.height>c?v.height:c,u+=b.width,s.add(r,m,v.font,v.color,b.width,v.height,v.vadjust,l[p].mod,v.strokeWidth,v.strokeColor),s.accumulate(r,b.width,c),p===l.length-1&&(o=s[r].width>o?s[r].width:o,n+=s[r].height,r++)),w++,y=!1)}else{var x=this.getFormattingValues(t,e,i,l[p].mod),O=t.measureText(l[p].text);s.addAndAccumulate(r,l[p].text,x.font,x.color,O.width,x.height,x.vadjust,l[p].mod,x.strokeWidth,x.strokeColor),o=s[r].width>o?s[r].width:o,l.length-1===p&&(n+=s[r].height,r++)}}}else for(var M=0;M0)for(var E=a[M].split(" "),D="",C={width:0},T=void 0,P=0;Pthis.fontOptions.maxWdt&&0!=T.width?(s.addAndAccumulate(r,D,S.font,S.color,T.width,S.size,S.vadjust,"normal",S.strokeWidth,S.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,D="",r++):(D=D+B+E[P],P===E.length-1&&(s.addAndAccumulate(r,D,S.font,S.color,C.width,S.size,S.vadjust,"normal",S.strokeWidth,S.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,r++),P++)}else{var F=a[M],I=t.measureText(F);s.addAndAccumulate(r,F,S.font,S.color,I.width,S.size,S.vadjust,"normal",S.strokeWidth,S.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,r++}}}this.fontOptions.minWdt>0&&o0&&n2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e.font){var o=e.font.split(" ");t.size=o[0].replace("px",""),t.face=o[1],t.color=o[2],t.vadjust=0}else"object"===(0,h.default)(e.font)&&p.fillIfDefined(t,e.font,i);t.size=Number(t.size),t.vadjust=Number(t.vadjust)}}]),t}();e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(105),s=o(n),r=i(2),a=o(r);e.default=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,d=(0,a.default)(t);!(o=(r=d.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(t){n=!0,s=t}finally{try{!o&&d.return&&d.return()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if((0,s.default)(Object(e)))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(t,e,i){t.exports={default:i(106),__esModule:!0}},function(t,e,i){i(4),i(50),t.exports=i(107)},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).isIterable=function(t){var e=Object(t);return void 0!==e[n]||"@@iterator"in e||s.hasOwnProperty(o(e))}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;(void 0===this.width||this.labelModule.differentState(e,i))&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=this.width/2)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,t.strokeStyle=s.borderColor,t.lineWidth=s.borderWidth,t.lineWidth/=this.body.view.scale,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=s.color,t.roundRect(this.left,this.top,this.width,this.height,s.borderRadius),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),s.borderWidth>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2;var s=this.options.shapeProperties.borderRadius;this.boundingBox.left=this.left-s,this.boundingBox.top=this.top-s,this.boundingBox.bottom=this.top+this.height+s,this.boundingBox.right=this.left+this.width+s}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}}]),e}(v.default);e.default=g},function(t,e,i){t.exports={default:i(110),__esModule:!0}},function(t,e,i){i(111),t.exports=i(17).Object.getPrototypeOf},function(t,e,i){var o=i(49),n=i(48);i(61)("getPrototypeOf",function(){return function(t){return n(o(t))}})},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(62),s=o(n);e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==("undefined"==typeof e?"undefined":(0,s.default)(e))&&"function"!=typeof e?t:e}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(114),s=o(n),r=i(55),a=o(r),d=i(62),h=o(d);e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+("undefined"==typeof e?"undefined":(0,h.default)(e)));t.prototype=(0,a.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(s.default?(0,s.default)(t,e):t.__proto__=e)}},function(t,e,i){t.exports={default:i(115),__esModule:!0}},function(t,e,i){i(116),t.exports=i(17).Object.setPrototypeOf},function(t,e,i){var o=i(15);o(o.S,"Object",{setPrototypeOf:i(117).set})},function(t,e,i){var o=i(23),n=i(22),s=function(t,e){if(n(t),!o(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,o){try{o=i(18)(Function.call,i(78).f(Object.prototype,"__proto__").set,2),o(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,i){return s(t,i),e?t.__proto__=i:o(t,i),t}}({},!1):void 0),check:s}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(62),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=function(){function t(e,i,o){(0,a.default)(this,t),this.body=i,this.labelModule=o,this.setOptions(e),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.margin=void 0,this.boundingBox={top:0,left:0,right:0,bottom:0}}return(0,h.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"_setMargins",value:function(t){this.margin={},this.options.margin&&("object"==(0,s.default)(this.options.margin)?(this.margin.top=this.options.margin.top,this.margin.right=this.options.margin.right,this.margin.bottom=this.options.margin.bottom,this.margin.left=this.options.margin.left):(this.margin.top=this.options.margin,this.margin.right=this.options.margin,this.margin.bottom=this.options.margin,this.margin.left=this.options.margin)),t.adjustSizes(this.margin)}},{key:"_distanceToBorder",value:function(t,e){var i=this.options.borderWidth;return this.resize(t),Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}},{key:"enableShadow",value:function(t,e){e.shadow&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){e.shadow&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}},{key:"enableBorderDashes",value:function(t,e){if(e.borderDashes!==!1)if(void 0!==t.setLineDash){var i=e.borderDashes;i===!0&&(i=[5,15]),t.setLineDash(i)}else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1}},{key:"disableBorderDashes",value:function(t,e){e.borderDashes!==!1&&(void 0!==t.setLineDash?t.setLineDash([0]):(console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1))}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(120),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;arguments.length>3&&void 0!==arguments[3]?arguments[3]:{size:this.options.size};if(void 0===this.width||this.labelModule.differentState(e,i)){this.textSize=this.labelModule.getTextSize(t,e,i);var o=Math.max(this.textSize.width+this.margin.right+this.margin.left,this.textSize.height+this.margin.top+this.margin.bottom);this.options.size=o/2,this.width=o,this.height=o,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,o,n,s),this.boundingBox.top=i-s.size,this.boundingBox.left=e-s.size,this.boundingBox.right=e+s.size,this.boundingBox.bottom=i+s.size,this.updateBoundingBox(e,i),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,i,o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n.labelOffset=0,n.imageLoaded=!1,n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"setOptions",value:function(t,e){this.options=t,e&&(this.imageObj=e)}},{key:"_resizeImage",value:function(){var t=!1;if(this.imageObj.width&&this.imageObj.height?this.imageLoaded===!1&&(this.imageLoaded=!0,t=!0):this.imageLoaded=!1,!this.width||!this.height||t===!0){var e,i,o;this.imageObj.width&&this.imageObj.height&&(e=0,i=0),this.options.shapeProperties.useImageSize===!1?this.imageObj.width>this.imageObj.height?(o=this.imageObj.width/this.imageObj.height,e=2*this.options.size*o||this.imageObj.width,i=2*this.options.size||this.imageObj.height):(o=this.imageObj.width&&this.imageObj.height?this.imageObj.height/this.imageObj.width:1,e=2*this.options.size,i=2*this.options.size*o):(e=this.imageObj.width,i=this.imageObj.height),this.width=e,this.height=i,this.radius=.5*this.width}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.circle(e,i,s.size),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore()}},{key:"_drawImageAtPosition",value:function(t,e){if(0!=this.imageObj.width){t.globalAlpha=1,this.enableShadow(t,e);var i=this.imageObj.width/this.width/this.body.view.scale;if(i>2&&this.options.shapeProperties.interpolation===!0){var o=this.imageObj.width,n=this.imageObj.height,s=document.createElement("canvas");s.width=o,s.height=o;var r=s.getContext("2d");i*=.5,o*=.5,n*=.5,r.drawImage(this.imageObj,0,0,o,n);for(var a=0,d=1;i>2&&d<4;)r.drawImage(s,a,0,o,n,a+o,0,o/2,n/2),a+=o,i*=.5,o*=.5,n*=.5,d+=1;t.drawImage(s,a,0,o,n,this.left,this.top,this.width,this.height)}else t.drawImage(this.imageObj,this.left,this.top,this.width,this.height);this.disableShadow(t,e)}}},{key:"_drawImageLabel",value:function(t,e,i,o,n){var s,r=0;if(void 0!==this.height){r=.5*this.height;var a=this.labelModule.getTextSize(t,o,n);a.lineCount>=1&&(r+=a.height/2)}s=i+r,this.options.label&&(this.labelOffset=r),this.labelModule.draw(t,e,s,o,n,"hanging")}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(120),v=o(p),g=function(t){function e(t,i,o,n){(0,a.default)(this,e);var r=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return r.imageObj=n,r._swapToImageResizeWhenImageLoaded=!0,r}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height||this.labelModule.differentState(e,i)){var o=2*this.options.size;this.width=o,this.height=o,this._swapToImageResizeWhenImageLoaded=!0,this.radius=.5*this.width}else this._swapToImageResizeWhenImageLoaded&&(this.width=void 0,this.height=void 0,this._swapToImageResizeWhenImageLoaded=!1),this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(),this.left=e-this.width/2,this.top=i-this.height/2;Math.min(.5*this.height,.5*this.width);this._drawRawCircle(t,e,i,o,n,s),t.save(),t.clip(),this._drawImageAtPosition(t,s),t.restore(),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t,e,i){if(void 0===this.width||this.labelModule.differentState(e,i)){this.textSize=this.labelModule.getTextSize(t,e,i);var o=this.textSize.width+this.margin.right+this.margin.left;this.width=o,this.height=o,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2;var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.database(e-this.width/2,i-this.height/2,this.width,this.height),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-.5*this.width,this.top=e-.5*this.height, -this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments[3];this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"diamond",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"_resizeShape",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.selected,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.hover,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{size:this.options.size};if(void 0===this.width||this.labelModule.differentState(t,e)){var o=2*i.size;this.width=o,this.height=o,this.radius=.5*this.width}}},{key:"_drawShape",value:function(t,e,i,o,n,s,r,a){this._resizeShape(s,r,a),this.left=o-this.width/2,this.top=n-this.height/2;var d=a.borderWidth/this.body.view.scale;if(t.lineWidth=Math.min(this.width,d),t.strokeStyle=a.borderColor,t.fillStyle=a.color,t[e](o,n,a.size),this.enableShadow(t,a),t.fill(),this.disableShadow(t,a),t.save(),d>0&&(this.enableBorderDashes(t,a),t.stroke(),this.disableBorderDashes(t,a)),t.restore(),void 0!==this.options.label){var h=n+.5*this.height+3;this.labelModule.draw(t,o,h,s,r,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+3))}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments[3];this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"circle",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this.options.size}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.width||this.labelModule.differentState(e,i)){var o=this.labelModule.getTextSize(t,e,i);this.height=2*o.height,this.width=o.width+this.height,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-.5*this.width,this.top=i-.5*this.height;var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.ellipse(this.left,this.top,this.width,this.height),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,e,i,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t,e,i){(void 0===this.width||this.labelModule.differentState(e,i))&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(t,o,n),this.options.icon.size=this.options.icon.size||50,this.left=e-this.width/2,this.top=i-this.height/2,this._icon(t,e,i,o,n,s),void 0!==this.options.label){var r=5;this.labelModule.draw(t,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+r,o)}this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){var i=5;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+i)}}},{key:"_icon",value:function(t,e,i,o,n,s){var r=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=(o?"bold ":"")+r+"px "+this.options.icon.face,t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t,s),t.fillText(this.options.icon.code,e,i),this.disableShadow(t,s)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(120),v=o(p),g=function(t){function e(t,i,o,n){(0,a.default)(this,e);var r=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return r.imageObj=n,r}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(){this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,this.options.shapeProperties.useBorderWithImage===!0){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,d=(o?a:r)/this.body.view.scale;t.lineWidth=Math.min(this.width,d),t.beginPath(),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),t.fill(),t.save(),d>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),t.closePath()}this._drawImageAtPosition(t,s),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.resize(),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"square",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t,e,i,o){this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"star",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t,e,i){(void 0===this.width||this.labelModule.differentState(e,i))&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t,s),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n),this.disableShadow(t,s),this.updateBoundingBox(e,i,t,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangle",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangleDown",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.printStyle=void 0;var n=i(82),s=o(n),r=i(62),a=o(r),d=i(58),h=o(d),l=i(95),u=o(l),c=i(96),f=o(c),p=i(1),v=!1,g=void 0,y="background: #FFeeee; color: #dd0000",m=function(){function t(){(0,u.default)(this,t)}return(0,f.default)(t,null,[{key:"validate",value:function(e,i,o){v=!1,g=i;var n=i;return void 0!==o&&(n=i[o]),t.parse(e,n,[]),v}},{key:"parse",value:function(e,i,o){for(var n in e)e.hasOwnProperty(n)&&t.check(n,e,i,o)}},{key:"check",value:function(e,i,o,n){void 0===o[e]&&void 0===o.__any__?t.getSuggestion(e,o,n):void 0===o[e]&&void 0!==o.__any__?"object"===t.getType(i[e])&&void 0!==o.__any__.__type__?t.checkFields(e,i,o,"__any__",o.__any__.__type__,n):t.checkFields(e,i,o,"__any__",o.__any__,n):void 0!==o[e].__type__?t.checkFields(e,i,o,e,o[e].__type__,n):t.checkFields(e,i,o,e,o[e],n)}},{key:"checkFields",value:function(e,i,o,n,s,r){var a=t.getType(i[e]),d=s[a];void 0!==d?"array"===t.getType(d)&&d.indexOf(i[e])===-1?(console.log('%cInvalid option detected in "'+e+'". Allowed values are:'+t.print(d)+' not "'+i[e]+'". '+t.printLocation(r,e),y),v=!0):"object"===a&&"__any__"!==n&&(r=p.copyAndExtendArray(r,e),t.parse(i[e],o[n],r)):void 0===s.any&&(console.log('%cInvalid type received for "'+e+'". Expected: '+t.print((0,h.default)(s))+". Received ["+a+'] "'+i[e]+'"'+t.printLocation(r,e),y),v=!0)}},{key:"getType",value:function(t){var e="undefined"==typeof t?"undefined":(0,a.default)(t);return"object"===e?null===t?"null":t instanceof Boolean?"boolean":t instanceof Number?"number":t instanceof String?"string":Array.isArray(t)?"array":t instanceof Date?"date":void 0!==t.nodeType?"dom":t._isAMomentObject===!0?"moment":"object":"number"===e?"number":"boolean"===e?"boolean":"string"===e?"string":void 0===e?"undefined":e}},{key:"getSuggestion",value:function(e,i,o){var n=t.findInOptions(e,i,o,!1),s=t.findInOptions(e,g,[],!0),r=8,a=4;void 0!==n.indexMatch?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+'Perhaps it was incomplete? Did you mean: "'+n.indexMatch+'"?\n\n',y):s.distance<=a&&n.distance>s.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),y):n.distance<=r?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),y):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print((0,h.default)(i))+t.printLocation(o,e),y),v=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=1e9,r="",a=[],d=e.toLowerCase(),h=void 0;for(var l in i){var u=void 0;if(void 0!==i[l].__type__&&n===!0){var c=t.findInOptions(e,i[l],p.copyAndExtendArray(o,l));s>c.distance&&(r=c.closestMatch,a=c.path,s=c.distance,h=c.indexMatch)}else l.toLowerCase().indexOf(d)!==-1&&(h=l),u=t.levenshteinDistance(e,l),s>u&&(r=l,a=p.copyArray(o),s=u)}return{closestMatch:r,path:a,distance:s,indexMatch:h}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Problem value found at: \n",o="\n\n"+i+"options = {\n",n=0;n1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.edges;if(t instanceof f||t instanceof p)this.body.data.edges=t;else if(Array.isArray(t))this.body.data.edges=new f,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new f}if(o&&c.forEach(this.edgesListeners,function(t,e){o.off(e,t)}),this.body.edges={},this.body.data.edges){c.forEach(this.edgesListeners,function(t,i){e.body.data.edges.on(i,t)});var n=this.body.data.edges.getIds();this.add(n,!0)}i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;ni.shape.height?(r=i.x+.5*i.shape.width,a=i.y-d):(r=i.x+d,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,d,.125),this.labelModule.draw(t,s.x,s.y,n,this.hover)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top,d=this.edgeType.getDistanceToEdge(i,o,n,s,r,a);return d0&&i<0)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()} -}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=["arrowStrikethrough","id","from","hidden","hoverWidth","label","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width"];if(O.selectiveDeepExtend(n,t,e,i),O.mergeOptions(t,e,"smooth",i,o),O.mergeOptions(t,e,"shadow",i,o),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:i===!0&&null===e.dashes&&(t.dashes=(0,a.default)(o.dashes)),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),O.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)):i===!0&&null===e.scaling&&(t.scaling=(0,a.default)(o.scaling)),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var r=e.arrows.toLowerCase();t.arrows.to.enabled=r.indexOf("to")!=-1,t.arrows.middle.enabled=r.indexOf("middle")!=-1,t.arrows.from.enabled=r.indexOf("from")!=-1}else{if("object"!==(0,h.default)(e.arrows))throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+(0,s.default)(e.arrows));O.mergeOptions(t.arrows,e.arrows,"to",i,o.arrows),O.mergeOptions(t.arrows,e.arrows,"middle",i,o.arrows),O.mergeOptions(t.arrows,e.arrows,"from",i,o.arrows)}else i===!0&&null===e.arrows&&(t.arrows=(0,a.default)(o.arrows));if(void 0!==e.color&&null!==e.color)if(t.color=O.deepExtend({},t.color,!0),O.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var d=!1;void 0!==e.color.color&&(t.color.color=e.color.color,d=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,d=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,d=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&d===!0&&(t.color.inherit=!1)}else i===!0&&null===e.color&&(t.color=O.bridgeObject(o.color));void 0!==e.font&&null!==e.font?v.default.parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=O.bridgeObject(o.font))}}]),t}();e.default=M},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(104),s=o(n),r=i(109),a=o(r),d=i(95),h=o(d),l=i(96),u=o(l),c=i(112),f=o(c),p=i(113),v=o(p),g=i(138),y=o(g),m=function(t){function e(t,i,o){return(0,h.default)(this,e),(0,f.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o))}return(0,v.default)(e,t),(0,u.default)(e,[{key:"_line",value:function(t,e,i){var o=i[0],n=i[1];t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i||void 0===o.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.bezierCurveTo(o.x,o.y,n.x,n.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"_getViaCoordinates",value:function(){var t=this.from.x-this.to.x,e=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(t)>Math.abs(e)||this.options.smooth.forceDirection===!0||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates(),d=(0,s.default)(a,2),h=d[0],l=d[1];return this._getDistanceToBezierEdge(t,e,i,o,n,r,h,l)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=(0,s.default)(e,2),o=i[0],n=i[1],r=t,a=[];a[0]=Math.pow(1-r,3),a[1]=3*r*Math.pow(1-r,2),a[2]=3*Math.pow(r,2)*(1-r),a[3]=Math.pow(r,3);var d=a[0]*this.fromPoint.x+a[1]*o.x+a[2]*n.x+a[3]*this.toPoint.x,h=a[0]*this.fromPoint.y+a[1]*o.y+a[2]*n.y+a[3]*this.toPoint.y;return{x:d,y:h}}}]),e}(y.default);e.default=m},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(139),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r,a){var d=1e9,h=void 0,l=void 0,u=void 0,c=void 0,f=void 0,p=t,v=e,g=[0,0,0,0];for(l=1;l<10;l++)u=.1*l,g[0]=Math.pow(1-u,3),g[1]=3*u*Math.pow(1-u,2),g[2]=3*Math.pow(u,2)*(1-u),g[3]=Math.pow(u,3),c=g[0]*t+g[1]*r.x+g[2]*a.x+g[3]*i,f=g[0]*e+g[1]*r.y+g[2]*a.y+g[3]*o,l>0&&(h=this._getDistanceToLine(p,v,c,f,n,s),d=h2&&void 0!==arguments[2]?arguments[2]:this._getViaCoordinates(),d=10,h=0,l=0,u=1,c=.2,f=this.to,p=!1;for(t.id===this.from.id&&(f=this.from,p=!0);l<=u&&h0&&(d=this._getDistanceToLine(f,p,u,c,n,s),a=do.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,d=10,h=0,l=this.options.selfReferenceSize,u=void 0,c=void 0,f=void 0,p=void 0,v=void 0,g=.05,y=.5*(s+r);s<=r&&h0?a>0?s=y:r=y:a>0?r=y:s=y,h++;return u.t=y,u}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t,e,i,o){if(e.inheritsColor!==!1){if("both"===e.inheritsColor&&this.from.id!==this.to.id){var n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,r=void 0;return s=this.from.options.color.highlight.border,r=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(s=l.overrideOpacity(this.from.options.color.border,e.opacity),r=l.overrideOpacity(this.to.options.color.border,e.opacity)):this.from.selected===!0&&this.to.selected===!1?r=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,r),n}return"to"===e.inheritsColor?l.overrideOpacity(this.to.options.color.border,e.opacity):l.overrideOpacity(this.from.options.color.border,e.opacity)}return l.overrideOpacity(e.color,e.opacity)}},{key:"_circle",value:function(t,e,i,o,n){this.enableShadow(t,e),t.beginPath(),t.arc(i,o,n,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t,e)}},{key:"getDistanceToEdge",value:function(t,e,i,o,n,r,a,d){var h=0;if(this.from!=this.to)h=this._getDistanceToEdge(t,e,i,o,n,r,a);else{var l=this._getCircleData(void 0),u=(0,s.default)(l,3),c=u[0],f=u[1],p=u[2],v=c-n,g=f-r;h=Math.abs(Math.sqrt(v*v+g*g)-p)}return this.labelModule.size.leftn&&this.labelModule.size.topr?0:h}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,d=r*r+a*a,h=((n-t)*r+(s-e)*a)/d;h>1?h=1:h<0&&(h=0);var l=t+h*r,u=e+h*a,c=l-n,f=u-s;return Math.sqrt(c*c+f*f)}},{key:"getArrowData",value:function(t,e,i,o,n,r){var a=void 0,d=void 0,h=void 0,l=void 0,u=void 0,c=void 0,f=void 0,p=r.width;if("from"===e?(h=this.from,l=this.to,u=.1,c=r.fromArrowScale,f=r.fromArrowType):"to"===e?(h=this.to,l=this.from,u=-.1,c=r.toArrowScale,f=r.toArrowType):(h=this.to,l=this.from,c=r.middleArrowScale,f=r.middleArrowType),h!=l)if("middle"!==e)if(this.options.smooth.enabled===!0){d=this.findBorderPosition(h,t,{via:i});var v=this.getPoint(Math.max(0,Math.min(1,d.t+u)),i);a=Math.atan2(d.y-v.y,d.x-v.x)}else a=Math.atan2(h.y-l.y,h.x-l.x),d=this.findBorderPosition(h,t);else a=Math.atan2(h.y-l.y,h.x-l.x),d=this.getPoint(.5,i);else{var g=this._getCircleData(t),y=(0,s.default)(g,3),m=y[0],b=y[1],_=y[2];"from"===e?(d=this.findBorderPosition(this.from,t,{x:m,y:b,low:.25,high:.6,direction:-1}),a=d.t*-2*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(d=this.findBorderPosition(this.from,t,{x:m,y:b,low:.6,high:1,direction:1}),a=d.t*-2*Math.PI+1.5*Math.PI-1.1*Math.PI):(d=this._pointOnCircle(m,b,_,.175),a=3.9269908169872414)}var w=15*c+3*p,k=d.x-.9*w*Math.cos(a),x=d.y-.9*w*Math.sin(a),O={x:k,y:x};return{point:d,core:O,angle:a,length:w,type:f}}},{key:"drawArrowHead",value:function(t,e,i,o,n){t.strokeStyle=this.getColor(t,e,i,o),t.fillStyle=t.strokeStyle,t.lineWidth=e.width,n.type&&"circle"===n.type.toLowerCase()?t.circleEndpoint(n.point.x,n.point.y,n.angle,n.length):t.arrowEndpoint(n.point.x,n.point.y,n.angle,n.length),this.enableShadow(t,e),t.fill(),this.disableShadow(t,e)}},{key:"enableShadow",value:function(t,e){e.shadow===!0&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){e.shadow===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(104),s=o(n),r=i(109),a=o(r),d=i(95),h=o(d),l=i(96),u=o(l),c=i(112),f=o(c),p=i(113),v=o(p),g=i(139),y=o(g),m=function(t){function e(t,i,o){(0,h.default)(this,e);var n=(0,f.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o));return n._boundFunction=function(){n.positionBezierNode()},n.body.emitter.on("_repositionBezierNodes",n._boundFunction),n}return(0,v.default)(e,t),(0,u.default)(e,[{key:"setOptions",value:function(t){var e=!1;this.options.physics!==t.physics&&(e=!0),this.options=t,this.id=this.options.id,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.setupSupportNode(),this.connect(),e===!0&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}},{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],void 0===this.from||void 0===this.to||this.options.physics===!1?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}},{key:"cleanup",value:function(){return this.body.emitter.off("_repositionBezierNodes",this._boundFunction),void 0!==this.via&&(delete this.body.nodes[this.via.id],this.via=void 0,!0)}},{key:"setupSupportNode",value:function(){if(void 0===this.via){var t="edgeId:"+this.id,e=this.body.functions.createNode({id:t,shape:"circle",physics:!0,hidden:!0});this.body.nodes[t]=e,this.via=e,this.via.parentEdgeId=this.id,this.positionBezierNode()}}},{key:"positionBezierNode",value:function(){void 0!==this.via&&void 0!==this.from&&void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&&(this.via.x=0,this.via.y=0)}},{key:"_line",value:function(t,e,i){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){return this.via}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.via,i=t,o=void 0,n=void 0;if(this.from===this.to){var r=this._getCircleData(this.from),a=(0,s.default)(r,3),d=a[0],h=a[1],l=a[2],u=2*Math.PI*(1-i);o=d+l*Math.sin(u),n=h+l-l*(1-Math.cos(u))}else o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}]),e}(y.default);e.default=m},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(139),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"_line",value:function(t,e,i){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var t=void 0,e=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=nMath.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=sMath.abs(this.from.y-this.to.y)&&(t=this.from.x=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s,t=this.to.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.y2&&void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(t,e,i.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=t,o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(140),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"_line",value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}},{key:"_findBorderPosition",value:function(t,e){var i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),d=t.distanceToBorder(e,n),h=(a-d)/a,l={};return l.x=(1-h)*o.x+h*i.x,l.y=(1-h)*o.y+h*i.y,l}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(145),u=o(l),c=i(146),f=o(c),p=i(147),v=o(p),g=i(148),y=o(g),m=i(149),b=o(m),_=i(150),w=o(_),k=i(151),x=o(k),O=i(152),M=o(O),S=i(1),E=function(){function t(e){(0,a.default)(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},S.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return(0,h.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("initPhysics",function(){t.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){t.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){t.stopSimulation(),t.ready=!1}),this.body.emitter.on("disablePhysics",function(){t.physicsEnabled=!1,t.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){t.setOptions(t.options),t.ready===!0&&t.startSimulation()}),this.body.emitter.on("startSimulation",function(){t.ready===!0&&t.startSimulation()}),this.body.emitter.on("stopSimulation",function(){t.stopSimulation()}),this.body.emitter.on("destroy",function(){t.stopSimulation(!1),t.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){t.updatePhysicsData()})}},{key:"setOptions",value:function(t){void 0!==t&&(t===!1?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):(this.physicsEnabled=!0,S.selectiveNotDeepExtend(["stabilization"],this.options,t),S.mergeOptions(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),this.options.enabled===!1&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new x.default(this.body,this.physicsBody,t),this.edgesSolver=new y.default(this.body,this.physicsBody,t),this.gravitySolver=new M.default(this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new f.default(this.body,this.physicsBody,t),this.edgesSolver=new y.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new v.default(this.body,this.physicsBody,t),this.edgesSolver=new b.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new u.default(this.body,this.physicsBody,t),this.edgesSolver=new y.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)),this.modelOptions=t}},{key:"initPhysics",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?this.options.stabilization.enabled===!0?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.stabilized=!0,t===!0&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,t===!0&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var t=Date.now();this.physicsTick();var e=Date.now()-t;(e<.4*this.simulationInterval||this.runDoubleSpeed===!0)&&this.stabilized===!1&&(this.physicsTick(),this.runDoubleSpeed=!0),this.stabilized===!0&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||this.startedStabilization===!0)&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0},0)}},{key:"physicsTick",value:function(){if(this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilized===!1){if(this.adaptiveTimestep===!0&&this.adaptiveTimestepEnabled===!0){var t=1.2;this.adaptiveCounter%this.adaptiveInterval===0?(this.timestep=2*this.timestep,this.calculateForces(),this.moveNodes(),this.revert(),this.timestep=.5*this.timestep,this.calculateForces(),this.moveNodes(),this.calculateForces(),this.moveNodes(),this._evaluateStepQuality()===!0?this.timestep=t*this.timestep:this.timestep/ts))return!1;return!0}},{key:"moveNodes",value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=this.options.maxVelocity?this.options.maxVelocity:1e9,i=0,o=0,n=5,s=0;se?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var d=this.modelOptions.damping*s[t].y,h=(n[t].y-d)/i.options.mass;s[t].y+=h*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;var l=Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;return"number"!=typeof e&&(console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",this.options.stabilization.iterations),e=this.options.stabilization.iterations),0===this.physicsBody.physicsNodeIndices.length?void(this.ready=!0):(this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,void setTimeout(function(){return t._stabilizationBatch()},0))}},{key:"_stabilizationBatch",value:function(){this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0);for(var t=0;this.stabilized===!1&&t0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;s0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1,e=t),this.overlapAvoidanceFactor<1&&o.shape.radius&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,d=1;d0&&(hr&&(r=h),la&&(a=l))}var u=Math.abs(r-n)-Math.abs(a-s);u>0?(s-=.5*u,a+=.5*u):(n+=.5*u,r-=.5*u);var c=1e-5,f=Math.max(c,Math.abs(r-n)),p=.5*f,v=.5*(n+r),g=.5*(s+a),y={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:v-p,maxX:v+p,minY:g-p,maxY:g+p},size:f,calcSize:1/f,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(y.root);for(var m=0;m0&&this._placeInTree(y.root,i);return y}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=this.seededRandom(),e.y+=this.seededRandom()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e.default=d},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(95),s=o(n),r=i(96),a=o(r),d=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t,e,i,o,n,s,r,a,d=this.body.nodes,h=this.physicsBody.physicsNodeIndices,l=this.physicsBody.forces,u=this.options.nodeDistance,c=-2/3/u,f=4/3,p=0;p0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(62),a=o(r),d=i(95),h=o(d),l=i(96),u=o(l),c=i(154),f=o(c),p=i(155),v=o(p),g=i(1),y=function(){function t(e){var i=this;(0,h.default)(this,t),this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},g.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return(0,u.default)(t,[{key:"clusterByHubsize",value:function(t,e){void 0===t?t=this._getHubSize():"object"===("undefined"==typeof t?"undefined":(0,a.default)(t))&&(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],o=0;o=t&&i.push(n.id)}for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{},e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===t.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");t=this._checkOptions(t);for(var i={},o={},n=0;n2&&void 0!==arguments[2])||arguments[2];e=this._checkOptions(e);for(var o=[],n={},r=void 0,a=void 0,d=void 0,h=void 0,l=void 0,u=0;u0&&(0,s.default)(p).length>0&&g===!0&&o.push({nodes:c,edges:p})}}}for(var _=0;_1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:"clusterBridges",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:"clusterByConnection",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[t];e=this._checkOptions(e,o),void 0===e.clusterNodeProperties.x&&(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},r={},a=o.id,d=f.default.cloneOptions(o);n[a]=o;for(var h=0;h-1&&(r[y.id]=y)}this._cluster(n,r,e,i)}},{key:"_createClusterEdges",value:function(t,e,i,o){for(var n=void 0,r=void 0,a=void 0,d=void 0,h=void 0,l=void 0,u=(0,s.default)(t),c=[],p=0;p0&&void 0!==arguments[0]?arguments[0]:{};return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}},{key:"_cluster",value:function(t,e,i){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(0!=(0,s.default)(t).length&&(1!=(0,s.default)(t).length||1==i.clusterNodeProperties.allowSingleNodeCluster)){for(var n in t)if(t.hasOwnProperty(n)&&void 0!==this.clusteredNodes[n])return;var r=g.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var a=[];for(var d in t)if(t.hasOwnProperty(d)){var h=f.default.cloneOptions(t[d]);a.push(h)}var l=[];for(var u in e)if(e.hasOwnProperty(u)&&"clusterEdge:"!==u.substr(0,12)){var c=f.default.cloneOptions(e[u],"edge");l.push(c)}if(r=i.processProperties(r,a,l),!r)throw new Error("The processProperties function does not return properties!")}void 0===r.id&&(r.id="cluster:"+g.randomUUID());var p=r.id;void 0===r.label&&(r.label="cluster");var y=void 0;void 0===r.x&&(y=this._getClusterPosition(t),r.x=y.x),void 0===r.y&&(void 0===y&&(y=this._getClusterPosition(t)),r.y=y.y),r.id=p;var m=this.body.functions.createNode(r,v.default);m.isCluster=!0,m.containedNodes=t,m.containedEdges=e,m.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[r.id]=m,this._createClusterEdges(t,e,r,i.clusterEdgeProperties);for(var b in e)if(e.hasOwnProperty(b)&&void 0!==this.body.edges[b]){var _=this.body.edges[b];this._backupEdgeOptions(_),_.setOptions({physics:!1,hidden:!0})}for(var w in t)t.hasOwnProperty(w)&&(this.clusteredNodes[w]={clusterId:r.id,node:this.body.nodes[w]},this.body.nodes[w].setOptions({hidden:!0,physics:!1}));r.id=void 0,o===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"_backupEdgeOptions",value:function(t){void 0===this.clusteredEdges[t.id]&&(this.clusteredEdges[t.id]={physics:t.options.physics,hidden:t.options.hidden})}},{key:"_restoreEdge",value:function(t){var e=this.clusteredEdges[t.id];void 0!==e&&(t.setOptions({physics:e.physics,hidden:e.hidden}),delete this.clusteredEdges[t.id])}},{key:"isCluster",value:function(t){return void 0!==this.body.nodes[t]?this.body.nodes[t].isCluster===!0:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(t){for(var e=(0,s.default)(t),i=t[e[0]].x,o=t[e[0]].x,n=t[e[0]].y,r=t[e[0]].y,a=void 0,d=1;do?a.x:o,n=a.yr?a.y:r;return{x:.5*(i+o),y:.5*(n+r)}}},{key:"openCluster",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var o=this.body.nodes[t],n=o.containedNodes,s=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){var r={},a={x:o.x,y:o.y};for(var d in n)if(n.hasOwnProperty(d)){var h=this.body.nodes[d];r[d]={x:h.x,y:h.y}}var l=e.releaseFunction(a,r);for(var u in n)if(n.hasOwnProperty(u)){var c=this.body.nodes[u];void 0!==l[u]&&(c.x=void 0===l[u].x?o.x:l[u].x,c.y=void 0===l[u].y?o.y:l[u].y)}}else for(var p in n)if(n.hasOwnProperty(p)){var v=this.body.nodes[p];v=n[p],v.options.fixed.x===!1&&(v.x=o.x),v.options.fixed.y===!1&&(v.y=o.y)}for(var y in n)if(n.hasOwnProperty(y)){var m=this.body.nodes[y];m.vx=o.vx,m.vy=o.vy,m.setOptions({hidden:!1,physics:!0}),delete this.clusteredNodes[y]}for(var b=[],_=0;_o&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),d=Math.floor(t+2*a);return d>o&&(d=o),d}}]),t}();e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(95),s=o(n),r=i(96),a=o(r),d=i(1),h=function(){function t(){(0,s.default)(this,t)}return(0,a.default)(t,null,[{key:"getRange",value:function(t){var e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.shape.boundingBox.left&&(s=e.shape.boundingBox.left),re.shape.boundingBox.top&&(o=e.shape.boundingBox.top),n1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.x&&(s=e.x),re.y&&(o=e.y),n0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.allowRedraw=!1,t.renderingActive=!1,t.requiresTimeout===!0?clearTimeout(t.renderTimer):cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];d.selectiveDeepExtend(e,this.options,t)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var t=this;this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedraw===!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(function(){t._redraw(!1)},0):window.requestAnimationFrame(function(){t._redraw(!1)}))}},{key:"_redraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.allowRedraw===!0){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(e.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),t===!0&&e.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){var t=this.canvas.frame.canvas.getContext("2d");void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0),t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=20,a=this.canvas.DOMtoCanvas({x:-r,y:-r}),d=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+r,y:this.canvas.frame.canvas.clientHeight+r}),h={top:a.y,left:a.x,bottom:d.y,right:d.x},l=0;l0&&void 0!==arguments[0]?arguments[0]:this.pixelRatio;this.initialized===!0&&(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=t&&1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&&(i=this.cameraState.scale*e),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(t.indexOf("%")!==-1||t.indexOf("px")!==-1)return t;if(t.indexOf("%")===-1)return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var t=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new d(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:d.DIRECTION_ALL}),h.onTouch(this.hammer,function(e){t.body.eventListeners.onTouch(e)}),this.hammer.on("tap",function(e){t.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",function(e){t.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",function(e){t.body.eventListeners.onHold(e)}),this.hammer.on("panstart",function(e){t.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",function(e){t.body.eventListeners.onDrag(e)}),this.hammer.on("panend",function(e){t.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",function(e){t.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("mousewheel",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",function(e){t.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",function(e){t.body.eventListeners.onContext(e)}),this.hammerFrame=new d(this.frame),h.onRelease(this.hammerFrame,function(e){t.body.eventListeners.onRelease(e)})}},{key:"setSize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.width,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.height;t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.frame.canvas.getContext("2d"),r=this.pixelRatio;return this.pixelRatio=(window.devicePixelRatio||1)/(s.webkitBackingStorePixelRatio||s.mozBackingStorePixelRatio||s.msBackingStorePixelRatio||s.oBackingStorePixelRatio||s.backingStorePixelRatio||1),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e?(this._getCameraState(r),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0):(this.frame.canvas.width==Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&this.frame.canvas.height==Math.round(this.frame.canvas.clientHeight*this.pixelRatio)||this._getCameraState(r),this.frame.canvas.width!=Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&(this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),i=!0),this.frame.canvas.height!=Math.round(this.frame.canvas.clientHeight*this.pixelRatio)&&(this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),i=!0)),i===!0&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:"_XconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}},{key:"DOMtoCanvas",value:function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}]),t}();e.default=u},function(t,e,i){if("undefined"!=typeof window){var o=i(159),n=window.Hammer||i(160);t.exports=o(n,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null;return function e(i,o){function n(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0};var o=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof o&&(e.srcEvent.stopPropagation=function(){o(),e.stopPropagation()}),e.firstTarget=t;for(var n=t;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a0?h._handlers[t]=o:(i.off(t,s),delete h._handlers[t]))}),h},h.emit=function(e,o){t=o.target,i.emit(e,o)},h.destroy=function(){var t=i.element.hammer,e=t.indexOf(h);e!==-1&&t.splice(e,1),t.length||delete i.element.hammer,h._handlers={},i.destroy()},h}})},function(t,e,i){var o;/*! Hammer.JS - v2.0.7 - 2016-04-22 +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(87),e.DataSet=i(88),e.DataView=i(92),e.Queue=i(91),e.Network=i(93),e.network={Images:i(94),dotparser:i(177),gephiParser:i(178),allOptions:i(172)},e.network.convertDot=function(t){return e.network.dotparser.DOTToGraph(t)},e.network.convertGephi=function(t,i){return e.network.gephiParser.parseGephi(t,i)},e.moment=i(82),e.Hammer=i(158),e.keycharm=i(165)},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}var n=i(2),s=o(n),r=i(55),a=o(r),d=i(58),h=o(d),l=i(62),u=o(l),c=i(82),f=i(86);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=p.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return f.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!==(0,u.default)(t[i])&&(t[i]=e)},e.fillIfDefined=function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var n in t)void 0!==i[n]&&("object"!==(0,u.default)(i[n])?void 0!==i[n]&&null!==i[n]||void 0===t[n]||o!==!0?t[n]=i[n]:delete t[n]:"object"===(0,u.default)(t[n])&&e.fillIfDefined(t[n],i[n],o))},e.protoExtend=function(t,e){for(var i=1;i3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&t.indexOf(s)==-1)if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(t.indexOf("rgba")!=-1)return t;if(t.indexOf("rgb")!=-1){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),d=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:d,border:a},hover:{background:d,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,d=(n-o)/n,h=n;return{h:a,s:d,v:h}};var v={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return(0,h.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=v.split(t.style.cssText),n=v.split(i),s=e.extend(o,n);t.style.cssText=v.join(s)},e.removeCssText=function(t,e){var i=v.split(t.style.cssText),o=v.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=v.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,d=i*(1-e),h=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=d;break;case 1:o=h,n=i,s=d;break;case 2:o=d,n=i,s=l;break;case 3:o=d,n=h,s=i;break;case 4:o=l,n=d,s=i;break;case 5:o=i,n=d,s=h}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==("undefined"==typeof i?"undefined":(0,u.default)(i))){for(var o=(0,a.default)(i),n=0;n0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=(arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{});if(null===e[i])t[i]=(0,a.default)(o[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var n in e[i])e[i].hasOwnProperty(n)&&(t[i][n]=e[i][n])}},e.binarySearchCustom=function(t,e,i,o){for(var n=1e4,s=0,r=0,a=t.length-1;r<=a&&s0)return"before"==o?Math.max(0,d-1):d;if(n(r,e)<0&&n(a,e)>0)return"before"==o?d:Math.min(t.length-1,d+1);n(r,e)<0?u=d+1:c=d-1,l++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var i=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return i==o&&(o=e.clientWidth),document.body.removeChild(e),i-o},e.topMost=function(t,e){var i=void 0;Array.isArray(e)||(e=[e]);var o=!0,n=!1,r=void 0;try{for(var a,d=(0,s.default)(t);!(o=(a=d.next()).done);o=!0){var h=a.value;if(h){i=h[e[0]];for(var l=1;l=t.length?(this._t=void 0,n(1)):"keys"==e?n(0,i):"values"==e?n(0,t[i]):n(0,[i,t[i]])},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,i){var o=i(10),n=i(12);t.exports=function(t){return o(n(t))}},function(t,e,i){var o=i(11);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},function(t,e){var i={}.toString;t.exports=function(t){return i.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,i){var o=i(14),n=i(15),s=i(30),r=i(20),a=i(31),d=i(8),h=i(32),l=i(46),u=i(48),c=i(47)("iterator"),f=!([].keys&&"next"in[].keys()),p="@@iterator",v="keys",g="values",y=function(){return this};t.exports=function(t,e,i,m,b,_,w){h(i,e,m);var k,x,O,M=function(t){if(!f&&t in C)return C[t];switch(t){case v:return function(){return new i(this,t)};case g:return function(){return new i(this,t)}}return function(){return new i(this,t)}},S=e+" Iterator",E=b==g,D=!1,C=t.prototype,T=C[c]||C[p]||b&&C[b],P=T||M(b),B=b?E?M("entries"):P:void 0,F="Array"==e?C.entries||T:T;if(F&&(O=u(F.call(new t)),O!==Object.prototype&&(l(O,S,!0),o||a(O,c)||r(O,c,y))),E&&T&&T.name!==g&&(D=!0,P=function(){return T.call(this)}),o&&!w||!f&&!D&&C[c]||r(C,c,P),d[e]=P,d[S]=y,b)if(k={values:E?P:M(g),keys:_?P:M(v),entries:B},w)for(x in k)x in C||s(C,x,k[x]);else n(n.P+n.F*(f||D),e,k);return k}},function(t,e){t.exports=!0},function(t,e,i){var o=i(16),n=i(17),s=i(18),r=i(20),a="prototype",d=function(t,e,i){var h,l,u,c=t&d.F,f=t&d.G,p=t&d.S,v=t&d.P,g=t&d.B,y=t&d.W,m=f?n:n[e]||(n[e]={}),b=m[a],_=f?o:p?o[e]:(o[e]||{})[a];f&&(i=e);for(h in i)l=!c&&_&&void 0!==_[h],l&&h in m||(u=l?_[h]:i[h],m[h]=f&&"function"!=typeof _[h]?i[h]:g&&l?s(u,o):y&&_[h]==u?function(t){var e=function(e,i,o){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,i)}return new t(e,i,o)}return t.apply(this,arguments)};return e[a]=t[a],e}(u):v&&"function"==typeof u?s(Function.call,u):u,v&&((m.virtual||(m.virtual={}))[h]=u,t&d.R&&b&&!b[h]&&r(b,h,u)))};d.F=1,d.G=2,d.S=4,d.P=8,d.B=16,d.W=32,d.U=64,d.R=128,t.exports=d},function(t,e){var i=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(t,e){var i=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=i)},function(t,e,i){var o=i(19);t.exports=function(t,e,i){if(o(t),void 0===e)return t;switch(i){case 1:return function(i){return t.call(e,i)};case 2:return function(i,o){return t.call(e,i,o)};case 3:return function(i,o,n){return t.call(e,i,o,n)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,i){var o=i(21),n=i(29);t.exports=i(25)?function(t,e,i){return o.f(t,e,n(1,i))}:function(t,e,i){return t[e]=i,t}},function(t,e,i){var o=i(22),n=i(24),s=i(28),r=Object.defineProperty;e.f=i(25)?Object.defineProperty:function(t,e,i){if(o(t),e=s(e,!0),o(i),n)try{return r(t,e,i)}catch(t){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(t[e]=i.value),t}},function(t,e,i){var o=i(23);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,i){t.exports=!i(25)&&!i(26)(function(){return 7!=Object.defineProperty(i(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,i){t.exports=!i(26)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,i){var o=i(23),n=i(16).document,s=o(n)&&o(n.createElement);t.exports=function(t){return s?n.createElement(t):{}}},function(t,e,i){var o=i(23);t.exports=function(t,e){if(!o(t))return t;var i,n;if(e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;if("function"==typeof(i=t.valueOf)&&!o(n=i.call(t)))return n;if(!e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,i){t.exports=i(20)},function(t,e){var i={}.hasOwnProperty;t.exports=function(t,e){return i.call(t,e)}},function(t,e,i){var o=i(33),n=i(29),s=i(46),r={};i(20)(r,i(47)("iterator"),function(){return this}),t.exports=function(t,e,i){t.prototype=o(r,{next:n(1,i)}),s(t,e+" Iterator")}},function(t,e,i){var o=i(22),n=i(34),s=i(44),r=i(41)("IE_PROTO"),a=function(){},d="prototype",h=function(){var t,e=i(27)("iframe"),o=s.length,n="<",r=">";for(e.style.display="none",i(45).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(n+"script"+r+"document.F=Object"+n+"/script"+r),t.close(),h=t.F;o--;)delete h[d][s[o]];return h()};t.exports=Object.create||function(t,e){var i;return null!==t?(a[d]=o(t),i=new a,a[d]=null,i[r]=t):i=h(),void 0===e?i:n(i,e)}},function(t,e,i){var o=i(21),n=i(22),s=i(35);t.exports=i(25)?Object.defineProperties:function(t,e){n(t);for(var i,r=s(e),a=r.length,d=0;a>d;)o.f(t,i=r[d++],e[i]);return t}},function(t,e,i){var o=i(36),n=i(44);t.exports=Object.keys||function(t){return o(t,n)}},function(t,e,i){var o=i(31),n=i(9),s=i(37)(!1),r=i(41)("IE_PROTO");t.exports=function(t,e){var i,a=n(t),d=0,h=[];for(i in a)i!=r&&o(a,i)&&h.push(i);for(;e.length>d;)o(a,i=e[d++])&&(~s(h,i)||h.push(i));return h}},function(t,e,i){var o=i(9),n=i(38),s=i(40);t.exports=function(t){return function(e,i,r){var a,d=o(e),h=n(d.length),l=s(r,h);if(t&&i!=i){for(;h>l;)if(a=d[l++],a!=a)return!0}else for(;h>l;l++)if((t||l in d)&&d[l]===i)return t||l||0;return!t&&-1}}},function(t,e,i){var o=i(39),n=Math.min;t.exports=function(t){return t>0?n(o(t),9007199254740991):0}},function(t,e){var i=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:i)(t)}},function(t,e,i){var o=i(39),n=Math.max,s=Math.min;t.exports=function(t,e){return t=o(t),t<0?n(t+e,0):s(t,e)}},function(t,e,i){var o=i(42)("keys"),n=i(43);t.exports=function(t){return o[t]||(o[t]=n(t))}},function(t,e,i){var o=i(16),n="__core-js_shared__",s=o[n]||(o[n]={});t.exports=function(t){return s[t]||(s[t]={})}},function(t,e){var i=0,o=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++i+o).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,i){t.exports=i(16).document&&document.documentElement},function(t,e,i){var o=i(21).f,n=i(31),s=i(47)("toStringTag");t.exports=function(t,e,i){t&&!n(t=i?t:t.prototype,s)&&o(t,s,{configurable:!0,value:e})}},function(t,e,i){var o=i(42)("wks"),n=i(43),s=i(16).Symbol,r="function"==typeof s,a=t.exports=function(t){return o[t]||(o[t]=r&&s[t]||(r?s:n)("Symbol."+t))};a.store=o},function(t,e,i){var o=i(31),n=i(49),s=i(41)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=n(t),o(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,i){var o=i(12);t.exports=function(t){return Object(o(t))}},function(t,e,i){var o=i(51)(!0);i(13)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,i=this._i;return i>=e.length?{value:void 0,done:!0}:(t=o(e,i),this._i+=t.length,{value:t,done:!1})})},function(t,e,i){var o=i(39),n=i(12);t.exports=function(t){return function(e,i){var s,r,a=String(n(e)),d=o(i),h=a.length;return d<0||d>=h?t?"":void 0:(s=a.charCodeAt(d),s<55296||s>56319||d+1===h||(r=a.charCodeAt(d+1))<56320||r>57343?t?a.charAt(d):s:t?a.slice(d,d+2):(s-55296<<10)+(r-56320)+65536)}}},function(t,e,i){var o=i(22),n=i(53);t.exports=i(17).getIterator=function(t){var e=n(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return o(e.call(t))}},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).getIteratorMethod=function(t){if(void 0!=t)return t[n]||t["@@iterator"]||s[o(t)]}},function(t,e,i){var o=i(11),n=i(47)("toStringTag"),s="Arguments"==o(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,i,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=r(e=Object(t),n))?i:s?o(e):"Object"==(a=o(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,i){t.exports={default:i(56),__esModule:!0}},function(t,e,i){i(57);var o=i(17).Object;t.exports=function(t,e){return o.create(t,e)}},function(t,e,i){var o=i(15);o(o.S,"Object",{create:i(33)})},function(t,e,i){t.exports={default:i(59),__esModule:!0}},function(t,e,i){i(60),t.exports=i(17).Object.keys},function(t,e,i){var o=i(49),n=i(35);i(61)("keys",function(){return function(t){return n(o(t))}})},function(t,e,i){var o=i(15),n=i(17),s=i(26);t.exports=function(t,e){var i=(n.Object||{})[t]||Object[t],r={};r[t]=e(i),o(o.S+o.F*s(function(){i(1)}),"Object",r)}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(63),s=o(n),r=i(66),a=o(r),d="function"==typeof a.default&&"symbol"==typeof s.default?function(t){return typeof t}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":typeof t};e.default="function"==typeof a.default&&"symbol"===d(s.default)?function(t){return"undefined"==typeof t?"undefined":d(t)}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":"undefined"==typeof t?"undefined":d(t)}},function(t,e,i){t.exports={default:i(64),__esModule:!0}},function(t,e,i){i(50),i(4),t.exports=i(65).f("iterator")},function(t,e,i){e.f=i(47)},function(t,e,i){t.exports={default:i(67),__esModule:!0}},function(t,e,i){i(68),i(79),i(80),i(81),t.exports=i(17).Symbol},function(t,e,i){var o=i(16),n=i(31),s=i(25),r=i(15),a=i(30),d=i(69).KEY,h=i(26),l=i(42),u=i(46),c=i(43),f=i(47),p=i(65),v=i(70),g=i(71),y=i(72),m=i(75),b=i(22),_=i(9),w=i(28),k=i(29),x=i(33),O=i(76),M=i(78),S=i(21),E=i(35),D=M.f,C=S.f,T=O.f,P=o.Symbol,B=o.JSON,F=B&&B.stringify,I="prototype",z=f("_hidden"),N=f("toPrimitive"),R={}.propertyIsEnumerable,A=l("symbol-registry"),j=l("symbols"),H=l("op-symbols"),L=Object[I],W="function"==typeof P,Y=o.QObject,U=!Y||!Y[I]||!Y[I].findChild,V=s&&h(function(){return 7!=x(C({},"a",{get:function(){return C(this,"a",{value:7}).a}})).a})?function(t,e,i){var o=D(L,e);o&&delete L[e],C(t,e,i),o&&t!==L&&C(L,e,o)}:C,q=function(t){var e=j[t]=x(P[I]);return e._k=t,e},G=W&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},X=function(t,e,i){return t===L&&X(H,e,i),b(t),e=w(e,!0),b(i),n(j,e)?(i.enumerable?(n(t,z)&&t[z][e]&&(t[z][e]=!1),i=x(i,{enumerable:k(0,!1)})):(n(t,z)||C(t,z,k(1,{})),t[z][e]=!0),V(t,e,i)):C(t,e,i)},K=function(t,e){b(t);for(var i,o=y(e=_(e)),n=0,s=o.length;s>n;)X(t,i=o[n++],e[i]);return t},Z=function(t,e){return void 0===e?x(t):K(x(t),e)},Q=function(t){var e=R.call(this,t=w(t,!0));return!(this===L&&n(j,t)&&!n(H,t))&&(!(e||!n(this,t)||!n(j,t)||n(this,z)&&this[z][t])||e)},$=function(t,e){if(t=_(t),e=w(e,!0),t!==L||!n(j,e)||n(H,e)){var i=D(t,e);return!i||!n(j,e)||n(t,z)&&t[z][e]||(i.enumerable=!0),i}},J=function(t){for(var e,i=T(_(t)),o=[],s=0;i.length>s;)n(j,e=i[s++])||e==z||e==d||o.push(e);return o},tt=function(t){for(var e,i=t===L,o=T(i?H:_(t)),s=[],r=0;o.length>r;)!n(j,e=o[r++])||i&&!n(L,e)||s.push(j[e]);return s};W||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=c(arguments.length>0?arguments[0]:void 0),e=function(i){this===L&&e.call(H,i),n(this,z)&&n(this[z],t)&&(this[z][t]=!1),V(this,t,k(1,i))};return s&&U&&V(L,t,{configurable:!0,set:e}),q(t)},a(P[I],"toString",function(){return this._k}),M.f=$,S.f=X,i(77).f=O.f=J,i(74).f=Q,i(73).f=tt,s&&!i(14)&&a(L,"propertyIsEnumerable",Q,!0),p.f=function(t){return q(f(t))}),r(r.G+r.W+r.F*!W,{Symbol:P});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),it=0;et.length>it;)f(et[it++]);for(var et=E(f.store),it=0;et.length>it;)v(et[it++]);r(r.S+r.F*!W,"Symbol",{for:function(t){return n(A,t+="")?A[t]:A[t]=P(t)},keyFor:function(t){if(G(t))return g(A,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){U=!0},useSimple:function(){U=!1}}),r(r.S+r.F*!W,"Object",{create:Z,defineProperty:X,defineProperties:K,getOwnPropertyDescriptor:$,getOwnPropertyNames:J,getOwnPropertySymbols:tt}),B&&r(r.S+r.F*(!W||h(function(){var t=P();return"[null]"!=F([t])||"{}"!=F({a:t})||"{}"!=F(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!G(t)){for(var e,i,o=[t],n=1;arguments.length>n;)o.push(arguments[n++]);return e=o[1],"function"==typeof e&&(i=e),!i&&m(e)||(e=function(t,e){if(i&&(e=i.call(this,t,e)),!G(e))return e}),o[1]=e,F.apply(B,o)}}}),P[I][N]||i(20)(P[I],N,P[I].valueOf),u(P,"Symbol"),u(Math,"Math",!0),u(o.JSON,"JSON",!0)},function(t,e,i){var o=i(43)("meta"),n=i(23),s=i(31),r=i(21).f,a=0,d=Object.isExtensible||function(){return!0},h=!i(26)(function(){return d(Object.preventExtensions({}))}),l=function(t){r(t,o,{value:{i:"O"+ ++a,w:{}}})},u=function(t,e){if(!n(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!s(t,o)){if(!d(t))return"F";if(!e)return"E";l(t)}return t[o].i},c=function(t,e){if(!s(t,o)){if(!d(t))return!0;if(!e)return!1;l(t)}return t[o].w},f=function(t){return h&&p.NEED&&d(t)&&!s(t,o)&&l(t),t},p=t.exports={KEY:o,NEED:!1,fastKey:u,getWeak:c,onFreeze:f}},function(t,e,i){var o=i(16),n=i(17),s=i(14),r=i(65),a=i(21).f;t.exports=function(t){var e=n.Symbol||(n.Symbol=s?{}:o.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:r.f(t)})}},function(t,e,i){var o=i(35),n=i(9);t.exports=function(t,e){for(var i,s=n(t),r=o(s),a=r.length,d=0;a>d;)if(s[i=r[d++]]===e)return i}},function(t,e,i){var o=i(35),n=i(73),s=i(74);t.exports=function(t){var e=o(t),i=n.f;if(i)for(var r,a=i(t),d=s.f,h=0;a.length>h;)d.call(t,r=a[h++])&&e.push(r);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,i){var o=i(11);t.exports=Array.isArray||function(t){return"Array"==o(t)}},function(t,e,i){var o=i(9),n=i(77).f,s={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return n(t)}catch(t){return r.slice()}};t.exports.f=function(t){return r&&"[object Window]"==s.call(t)?a(t):n(o(t))}},function(t,e,i){var o=i(36),n=i(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return o(t,n)}},function(t,e,i){var o=i(74),n=i(29),s=i(9),r=i(28),a=i(31),d=i(24),h=Object.getOwnPropertyDescriptor;e.f=i(25)?h:function(t,e){if(t=s(t),e=r(e,!0),d)try{return h(t,e)}catch(t){}if(a(t,e))return n(!o.f.call(t,e),t[e])}},function(t,e){},function(t,e,i){i(70)("asyncIterator")},function(t,e,i){i(70)("observable")},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(83)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return go.apply(null,arguments)}function i(t){go=t}function o(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function n(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){var e;for(e in t)return!1;return!0}function r(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function a(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function d(t,e){var i,o=[];for(i=0;i0)for(i in bo)o=bo[i],n=e[o],g(n)||(t[o]=n);return t}function m(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),_o===!1&&(_o=!0,e.updateOffset(this),_o=!1)}function b(t){return t instanceof m||null!=t&&null!=t._isAMomentObject}function _(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=_(e)),i}function k(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;o0?"future":"past"];return S(i)?i(e):i.replace(/%s/i,e)}function N(t,e){var i=t.toLowerCase();Po[i]=Po[i+"s"]=Po[e]=t}function R(t){return"string"==typeof t?Po[t]||Po[t.toLowerCase()]:void 0}function A(t){var e,i,o={};for(i in t)h(t,i)&&(e=R(i),e&&(o[e]=t[i]));return o}function j(t,e){Bo[t]=e}function H(t){var e=[];for(var i in t)e.push({unit:i,priority:Bo[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}function L(t,i){return function(o){return null!=o?(Y(this,t,o),e.updateOffset(this,i),this):W(this,t)}}function W(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Y(t,e,i){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](i)}function U(t){return t=R(t),S(this[t])?this[t]():this}function V(t,e){if("object"==typeof t){t=A(t);for(var i=H(t),o=0;o=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function G(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(No[t]=n),e&&(No[e[0]]=function(){return q(n.apply(this,arguments),e[1],e[2])}),i&&(No[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function X(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function K(t){var e,i,o=t.match(Fo);for(e=0,i=o.length;e=0&&Io.test(t);)t=t.replace(Io,i),Io.lastIndex=0,o-=1;return t}function $(t,e,i){tn[t]=S(e)?e:function(t,o){return t&&i?i:e}}function J(t,e){return h(tn,t)?tn[t](e._strict,e._locale):new RegExp(tt(t))}function tt(t){return et(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function et(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function it(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),r(e)&&(o=function(t,i){i[e]=w(t)}),i=0;i=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function _t(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function wt(t,e,i){var o=7+e-i,n=(7+_t(t,0,o).getUTCDay()-e)%7;return-n+o-1}function kt(t,e,i,o,n){var s,r,a=(7+i-o)%7,d=wt(t,o,n),h=1+7*(e-1)+a+d;return h<=0?(s=t-1,r=gt(s)+h):h>gt(t)?(s=t+1,r=h-gt(t)):(s=t,r=h),{year:s,dayOfYear:r}}function xt(t,e,i){var o,n,s=wt(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return r<1?(n=t.year()-1,o=r+Ot(n,e,i)):r>Ot(t.year(),e,i)?(o=r-Ot(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function Ot(t,e,i){var o=wt(t,e,i),n=wt(t+1,e,i);return(gt(t)-o+n)/7}function Mt(t){return xt(t,this._week.dow,this._week.doy).week}function St(){return this._week.dow}function Et(){return this._week.doy}function Dt(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Ct(t){var e=xt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Tt(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Pt(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function Bt(t,e){return t?o(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:this._weekdays}function Ft(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function It(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function zt(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;o<7;++o)s=u([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=cn.call(this._weekdaysParse,r),n!==-1?n:null):"ddd"===e?(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:null):(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null):"dddd"===e?(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null))):"ddd"===e?(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null))):(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:null)))}function Nt(t,e,i){var o,n,s;if(this._weekdaysParseExact)return zt.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;o<7;o++){if(n=u([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function Rt(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Tt(t,this.localeData()),this.add(t-e,"d")):e}function At(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function jt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Pt(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function Ht(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=xn),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function Lt(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=On),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Wt(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Mn),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Yt(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],d=[],h=[];for(e=0;e<7;e++)i=u([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),d.push(s),h.push(o),h.push(n),h.push(s);for(r.sort(t),a.sort(t),d.sort(t),h.sort(t),e=0;e<7;e++)a[e]=et(a[e]),d[e]=et(d[e]),h[e]=et(h[e]);this._weekdaysRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Ut(){return this.hours()%12||12}function Vt(){return this.hours()||24}function qt(t,e){G(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Gt(t,e){return e._meridiemParse}function Xt(t){return"p"===(t+"").toLowerCase().charAt(0)}function Kt(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Zt(t){return t?t.toLowerCase().replace("_","-"):t}function Qt(t){for(var e,i,o,n,s=0;s0;){if(o=$t(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&k(n,i,!0)>=e-1)break;e--}s++}return null}function $t(e){var i=null;if(!Tn[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Sn._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Jt(i)}catch(t){}return Tn[e]}function Jt(t,e){var i;return t&&(i=g(e)?ie(t):te(t,e),i&&(Sn=i)),Sn._abbr}function te(t,e){if(null!==e){var i=Cn;if(e.abbr=t,null!=Tn[t])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=Tn[t]._config;else if(null!=e.parentLocale){if(null==Tn[e.parentLocale])return Pn[e.parentLocale]||(Pn[e.parentLocale]=[]),Pn[e.parentLocale].push({name:t,config:e}),null;i=Tn[e.parentLocale]._config}return Tn[t]=new C(D(i,e)),Pn[t]&&Pn[t].forEach(function(t){te(t.name,t.config)}),Jt(t),Tn[t]}return delete Tn[t],null}function ee(t,e){if(null!=e){var i,o=Cn;null!=Tn[t]&&(o=Tn[t]._config),e=D(o,e),i=new C(e),i.parentLocale=Tn[t],Tn[t]=i,Jt(t)}else null!=Tn[t]&&(null!=Tn[t].parentLocale?Tn[t]=Tn[t].parentLocale:null!=Tn[t]&&delete Tn[t]);return Tn[t]}function ie(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Sn;if(!o(t)){if(e=$t(t))return e;t=[t]}return Qt(t)}function oe(){return Oo(Tn)}function ne(t){var e,i=t._a;return i&&f(t).overflow===-2&&(e=i[nn]<0||i[nn]>11?nn:i[sn]<1||i[sn]>st(i[on],i[nn])?sn:i[rn]<0||i[rn]>24||24===i[rn]&&(0!==i[an]||0!==i[dn]||0!==i[hn])?rn:i[an]<0||i[an]>59?an:i[dn]<0||i[dn]>59?dn:i[hn]<0||i[hn]>999?hn:-1,f(t)._overflowDayOfYear&&(esn)&&(e=sn),f(t)._overflowWeeks&&e===-1&&(e=ln),f(t)._overflowWeekday&&e===-1&&(e=un),f(t).overflow=e),t}function se(t){var e,i,o,n,s,r,a=t._i,d=Bn.exec(a)||Fn.exec(a);if(d){for(f(t).iso=!0,e=0,i=zn.length;egt(n)&&(f(t)._overflowDayOfYear=!0),i=_t(n,0,t._dayOfYear),t._a[nn]=i.getUTCMonth(),t._a[sn]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[rn]&&0===t._a[an]&&0===t._a[dn]&&0===t._a[hn]&&(t._nextDay=!0,t._a[rn]=0),t._d=(t._useUTC?_t:bt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[rn]=24)}}function le(t){var e,i,o,n,s,r,a,d;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)s=1,r=4,i=ae(e.GG,t._a[on],xt(be(),1,4).year),o=ae(e.W,1),n=ae(e.E,1),(n<1||n>7)&&(d=!0);else{s=t._locale._week.dow,r=t._locale._week.doy;var h=xt(be(),s,r);i=ae(e.gg,t._a[on],h.year),o=ae(e.w,h.week),null!=e.d?(n=e.d,(n<0||n>6)&&(d=!0)):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(d=!0)):n=s}o<1||o>Ot(i,s,r)?f(t)._overflowWeeks=!0:null!=d?f(t)._overflowWeekday=!0:(a=kt(i,o,n,s,r),t._a[on]=a.year,t._dayOfYear=a.dayOfYear)}function ue(t){if(t._f===e.ISO_8601)return void se(t);t._a=[],f(t).empty=!0;var i,o,n,s,r,a=""+t._i,d=a.length,h=0;for(n=Q(t._f,t._locale).match(Fo)||[],i=0;i0&&f(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),h+=o.length),No[s]?(o?f(t).empty=!1:f(t).unusedTokens.push(s),nt(s,o,t)):t._strict&&!o&&f(t).unusedTokens.push(s);f(t).charsLeftOver=d-h,a.length>0&&f(t).unusedInput.push(a),t._a[rn]<=12&&f(t).bigHour===!0&&t._a[rn]>0&&(f(t).bigHour=void 0),f(t).parsedDateParts=t._a.slice(0),f(t).meridiem=t._meridiem,t._a[rn]=ce(t._locale,t._a[rn],t._meridiem),he(t),ne(t)}function ce(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&e<12&&(e+=12),o||12!==e||(e=0),e):e}function fe(t){var e,i,o,n,s;if(0===t._f.length)return f(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Re(){if(!g(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),t=ge(t),t._a){var e=t._isUTC?u(t._a):be(t._a);this._isDSTShifted=this.isValid()&&k(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Ae(){return!!this.isValid()&&!this._isUTC}function je(){return!!this.isValid()&&this._isUTC}function He(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Le(t,e){var i,o,n,s=t,a=null;return Oe(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:r(t)?(s={},e?s[e]=t:s.milliseconds=t):(a=Wn.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:w(a[sn])*i,h:w(a[rn])*i,m:w(a[an])*i,s:w(a[dn])*i,ms:w(Me(1e3*a[hn]))*i}):(a=Yn.exec(t))?(i="-"===a[1]?-1:1,s={y:We(a[2],i),M:We(a[3],i),w:We(a[4],i),d:We(a[5],i),h:We(a[6],i),m:We(a[7],i),s:We(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Ue(be(s.from),be(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new xe(s),Oe(t)&&h(t,"_locale")&&(o._locale=t._locale),o}function We(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Ye(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Ue(t,e){var i;return t.isValid()&&e.isValid()?(e=De(e,t),t.isBefore(e)?i=Ye(t,e):(i=Ye(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function Ve(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(M(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=Le(i,o),qe(this,n,t),this}}function qe(t,i,o,n){var s=i._milliseconds,r=Me(i._days),a=Me(i._months);t.isValid()&&(n=null==n||n,s&&t._d.setTime(t._d.valueOf()+s*o),r&&Y(t,"Date",W(t,"Date")+r*o),a&<(t,W(t,"Month")+a*o),n&&e.updateOffset(t,r||a))}function Ge(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"}function Xe(t,i){var o=t||be(),n=De(o,this).startOf("day"),s=e.calendarFormat(this,n)||"sameElse",r=i&&(S(i[s])?i[s].call(this,o):i[s]);return this.format(r||this.localeData().calendar(s,this,be(o)))}function Ke(){return new m(this)}function Ze(t,e){var i=b(t)?t:be(t);return!(!this.isValid()||!i.isValid())&&(e=R(g(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()s&&(e=s),Bi.call(this,t,e,i,o,n))}function Bi(t,e,i,o,n){var s=kt(t,e,i,o,n),r=_t(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Fi(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Ii(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function zi(t,e){e[hn]=w(1e3*("0."+t))}function Ni(){return this._isUTC?"UTC":""}function Ri(){return this._isUTC?"Coordinated Universal Time":""}function Ai(t){return be(1e3*t)}function ji(){return be.apply(null,arguments).parseZone()}function Hi(t){return t}function Li(t,e,i,o){var n=ie(),s=u().set(o,e);return n[i](s,t)}function Wi(t,e,i){if(r(t)&&(e=t,t=void 0),t=t||"",null!=e)return Li(t,e,i,"month");var o,n=[];for(o=0;o<12;o++)n[o]=Li(t,o,i,"month");return n}function Yi(t,e,i,o){"boolean"==typeof t?(r(e)&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,r(e)&&(i=e,e=void 0),e=e||"");var n=ie(),s=t?n._week.dow:0;if(null!=i)return Li(e,(i+s)%7,o,"day");var a,d=[];for(a=0;a<7;a++)d[a]=Li(e,(a+s)%7,o,"day");return d}function Ui(t,e){return Wi(t,e,"months")}function Vi(t,e){return Wi(t,e,"monthsShort")}function qi(t,e,i){return Yi(t,e,i,"weekdays")}function Gi(t,e,i){return Yi(t,e,i,"weekdaysShort")}function Xi(t,e,i){return Yi(t,e,i,"weekdaysMin")}function Ki(){var t=this._data;return this._milliseconds=ts(this._milliseconds),this._days=ts(this._days),this._months=ts(this._months),t.milliseconds=ts(t.milliseconds),t.seconds=ts(t.seconds),t.minutes=ts(t.minutes),t.hours=ts(t.hours),t.months=ts(t.months),t.years=ts(t.years),this}function Zi(t,e,i,o){var n=Le(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function Qi(t,e){return Zi(this,t,e,1)}function $i(t,e){return Zi(this,t,e,-1)}function Ji(t){return t<0?Math.floor(t):Math.ceil(t)}function to(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,d=this._data;return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*Ji(io(a)+r),r=0,a=0),d.milliseconds=s%1e3,t=_(s/1e3),d.seconds=t%60,e=_(t/60),d.minutes=e%60,i=_(e/60),d.hours=i%24,r+=_(i/24),n=_(eo(r)),a+=n,r-=Ji(io(n)),o=_(a/12),a%=12,d.days=r,d.months=a,d.years=o,this}function eo(t){return 4800*t/146097}function io(t){return 146097*t/4800}function oo(t){var e,i,o=this._milliseconds;if(t=R(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+eo(e),"month"===t?i:i/12; +switch(e=this._days+Math.round(io(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function no(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12)}function so(t){return function(){return this.as(t)}}function ro(t){return t=R(t),this[t+"s"]()}function ao(t){return function(){return this._data[t]}}function ho(){return _(this.days()/7)}function lo(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function uo(t,e,i){var o=Le(t).abs(),n=gs(o.as("s")),s=gs(o.as("m")),r=gs(o.as("h")),a=gs(o.as("d")),d=gs(o.as("M")),h=gs(o.as("y")),l=n0,l[4]=i,lo.apply(null,l)}function co(t){return void 0===t?gs:"function"==typeof t&&(gs=t,!0)}function fo(t,e){return void 0!==ys[t]&&(void 0===e?ys[t]:(ys[t]=e,!0))}function po(t){var e=this.localeData(),i=uo(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function vo(){var t,e,i,o=ms(this._milliseconds)/1e3,n=ms(this._days),s=ms(this._months);t=_(o/60),e=_(t/60),o%=60,t%=60,i=_(s/12),s%=12;var r=i,a=s,d=n,h=e,l=t,u=o,c=this.asSeconds();return c?(c<0?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(d?d+"D":"")+(h||l||u?"T":"")+(h?h+"H":"")+(l?l+"M":"")+(u?u+"S":""):"P0D"}var go,yo;yo=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;o68?1900:2e3)};var mn=L("FullYear",!0);G("w",["ww",2],"wo","week"),G("W",["WW",2],"Wo","isoWeek"),N("week","w"),N("isoWeek","W"),j("week",5),j("isoWeek",5),$("w",Wo),$("ww",Wo,Ao),$("W",Wo),$("WW",Wo,Ao),ot(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=w(t)});var bn={dow:0,doy:6};G("d",0,"do","day"),G("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),G("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),G("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),G("e",0,0,"weekday"),G("E",0,0,"isoWeekday"),N("day","d"),N("weekday","e"),N("isoWeekday","E"),j("day",11),j("weekday",11),j("isoWeekday",11),$("d",Wo),$("e",Wo),$("E",Wo),$("dd",function(t,e){return e.weekdaysMinRegex(t)}),$("ddd",function(t,e){return e.weekdaysShortRegex(t)}),$("dddd",function(t,e){return e.weekdaysRegex(t)}),ot(["dd","ddd","dddd"],function(t,e,i,o){var n=i._locale.weekdaysParse(t,o,i._strict);null!=n?e.d=n:f(i).invalidWeekday=t}),ot(["d","e","E"],function(t,e,i,o){e[o]=w(t)});var _n="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),wn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),kn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),xn=Jo,On=Jo,Mn=Jo;G("H",["HH",2],0,"hour"),G("h",["hh",2],0,Ut),G("k",["kk",2],0,Vt),G("hmm",0,0,function(){return""+Ut.apply(this)+q(this.minutes(),2)}),G("hmmss",0,0,function(){return""+Ut.apply(this)+q(this.minutes(),2)+q(this.seconds(),2)}),G("Hmm",0,0,function(){return""+this.hours()+q(this.minutes(),2)}),G("Hmmss",0,0,function(){return""+this.hours()+q(this.minutes(),2)+q(this.seconds(),2)}),qt("a",!0),qt("A",!1),N("hour","h"),j("hour",13),$("a",Gt),$("A",Gt),$("H",Wo),$("h",Wo),$("HH",Wo,Ao),$("hh",Wo,Ao),$("hmm",Yo),$("hmmss",Uo),$("Hmm",Yo),$("Hmmss",Uo),it(["H","HH"],rn),it(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),it(["h","hh"],function(t,e,i){e[rn]=w(t),f(i).bigHour=!0}),it("hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o)),f(i).bigHour=!0}),it("hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[dn]=w(t.substr(n)),f(i).bigHour=!0}),it("Hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o))}),it("Hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[dn]=w(t.substr(n))});var Sn,En=/[ap]\.?m?\.?/i,Dn=L("Hours",!0),Cn={calendar:Mo,longDateFormat:So,invalidDate:Eo,ordinal:Do,ordinalParse:Co,relativeTime:To,months:pn,monthsShort:vn,week:bn,weekdays:_n,weekdaysMin:kn,weekdaysShort:wn,meridiemParse:En},Tn={},Pn={},Bn=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Fn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,In=/Z|[+-]\d\d(?::?\d\d)?/,zn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Nn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Rn=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=O("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),e.ISO_8601=function(){};var An=O("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=be.apply(null,arguments);return this.isValid()&&t.isValid()?tthis?this:t:v()}),Hn=function(){return Date.now?Date.now():+new Date};Se("Z",":"),Se("ZZ",""),$("Z",Qo),$("ZZ",Qo),it(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Ee(Qo,t)});var Ln=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var Wn=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Yn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Le.fn=xe.prototype;var Un=Ve(1,"add"),Vn=Ve(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var qn=O("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});G(0,["gg",2],0,function(){return this.weekYear()%100}),G(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Si("gggg","weekYear"),Si("ggggg","weekYear"),Si("GGGG","isoWeekYear"),Si("GGGGG","isoWeekYear"),N("weekYear","gg"),N("isoWeekYear","GG"),j("weekYear",1),j("isoWeekYear",1),$("G",Ko),$("g",Ko),$("GG",Wo,Ao),$("gg",Wo,Ao),$("GGGG",qo,Ho),$("gggg",qo,Ho),$("GGGGG",Go,Lo),$("ggggg",Go,Lo),ot(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=w(t)}),ot(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),G("Q",0,"Qo","quarter"),N("quarter","Q"),j("quarter",7),$("Q",Ro),it("Q",function(t,e){e[nn]=3*(w(t)-1)}),G("D",["DD",2],"Do","date"),N("date","D"),j("date",9),$("D",Wo),$("DD",Wo,Ao),$("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),it(["D","DD"],sn),it("Do",function(t,e){e[sn]=w(t.match(Wo)[0],10)});var Gn=L("Date",!0);G("DDD",["DDDD",3],"DDDo","dayOfYear"),N("dayOfYear","DDD"),j("dayOfYear",4),$("DDD",Vo),$("DDDD",jo),it(["DDD","DDDD"],function(t,e,i){i._dayOfYear=w(t)}),G("m",["mm",2],0,"minute"),N("minute","m"),j("minute",14),$("m",Wo),$("mm",Wo,Ao),it(["m","mm"],an);var Xn=L("Minutes",!1);G("s",["ss",2],0,"second"),N("second","s"),j("second",15),$("s",Wo),$("ss",Wo,Ao),it(["s","ss"],dn);var Kn=L("Seconds",!1);G("S",0,0,function(){return~~(this.millisecond()/100)}),G(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),G(0,["SSS",3],0,"millisecond"),G(0,["SSSS",4],0,function(){return 10*this.millisecond()}),G(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),G(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),G(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),G(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),G(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),N("millisecond","ms"),j("millisecond",16),$("S",Vo,Ro),$("SS",Vo,Ao),$("SSS",Vo,jo);var Zn;for(Zn="SSSS";Zn.length<=9;Zn+="S")$(Zn,Xo);for(Zn="S";Zn.length<=9;Zn+="S")it(Zn,zi);var Qn=L("Milliseconds",!1);G("z",0,0,"zoneAbbr"),G("zz",0,0,"zoneName");var $n=m.prototype;$n.add=Un,$n.calendar=Xe,$n.clone=Ke,$n.diff=ii,$n.endOf=vi,$n.format=ai,$n.from=di,$n.fromNow=hi,$n.to=li,$n.toNow=ui,$n.get=U,$n.invalidAt=Oi,$n.isAfter=Ze,$n.isBefore=Qe,$n.isBetween=$e,$n.isSame=Je,$n.isSameOrAfter=ti,$n.isSameOrBefore=ei,$n.isValid=ki,$n.lang=qn,$n.locale=ci,$n.localeData=fi,$n.max=jn,$n.min=An,$n.parsingFlags=xi,$n.set=V,$n.startOf=pi,$n.subtract=Vn,$n.toArray=bi,$n.toObject=_i,$n.toDate=mi,$n.toISOString=si,$n.inspect=ri,$n.toJSON=wi,$n.toString=ni,$n.unix=yi,$n.valueOf=gi,$n.creationData=Mi,$n.year=mn,$n.isLeapYear=mt,$n.weekYear=Ei,$n.isoWeekYear=Di,$n.quarter=$n.quarters=Fi,$n.month=ut,$n.daysInMonth=ct,$n.week=$n.weeks=Dt,$n.isoWeek=$n.isoWeeks=Ct,$n.weeksInYear=Ti,$n.isoWeeksInYear=Ci,$n.date=Gn,$n.day=$n.days=Rt,$n.weekday=At,$n.isoWeekday=jt,$n.dayOfYear=Ii,$n.hour=$n.hours=Dn,$n.minute=$n.minutes=Xn,$n.second=$n.seconds=Kn,$n.millisecond=$n.milliseconds=Qn,$n.utcOffset=Te,$n.utc=Be,$n.local=Fe,$n.parseZone=Ie,$n.hasAlignedHourOffset=ze,$n.isDST=Ne,$n.isLocal=Ae,$n.isUtcOffset=je,$n.isUtc=He,$n.isUTC=He,$n.zoneAbbr=Ni,$n.zoneName=Ri,$n.dates=O("dates accessor is deprecated. Use date instead.",Gn),$n.months=O("months accessor is deprecated. Use month instead",ut),$n.years=O("years accessor is deprecated. Use year instead",mn),$n.zone=O("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Pe),$n.isDSTShifted=O("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Re);var Jn=C.prototype;Jn.calendar=T,Jn.longDateFormat=P,Jn.invalidDate=B,Jn.ordinal=F,Jn.preparse=Hi,Jn.postformat=Hi,Jn.relativeTime=I,Jn.pastFuture=z,Jn.set=E,Jn.months=rt,Jn.monthsShort=at,Jn.monthsParse=ht,Jn.monthsRegex=pt,Jn.monthsShortRegex=ft,Jn.week=Mt,Jn.firstDayOfYear=Et,Jn.firstDayOfWeek=St,Jn.weekdays=Bt,Jn.weekdaysMin=It,Jn.weekdaysShort=Ft,Jn.weekdaysParse=Nt,Jn.weekdaysRegex=Ht,Jn.weekdaysShortRegex=Lt,Jn.weekdaysMinRegex=Wt,Jn.isPM=Xt,Jn.meridiem=Kt,Jt("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=O("moment.lang is deprecated. Use moment.locale instead.",Jt),e.langData=O("moment.langData is deprecated. Use moment.localeData instead.",ie);var ts=Math.abs,es=so("ms"),is=so("s"),os=so("m"),ns=so("h"),ss=so("d"),rs=so("w"),as=so("M"),ds=so("y"),hs=ao("milliseconds"),ls=ao("seconds"),us=ao("minutes"),cs=ao("hours"),fs=ao("days"),ps=ao("months"),vs=ao("years"),gs=Math.round,ys={s:45,m:45,h:22,d:26,M:11},ms=Math.abs,bs=xe.prototype;return bs.abs=Ki,bs.add=Qi,bs.subtract=$i,bs.as=oo,bs.asMilliseconds=es,bs.asSeconds=is,bs.asMinutes=os,bs.asHours=ns,bs.asDays=ss,bs.asWeeks=rs,bs.asMonths=as,bs.asYears=ds,bs.valueOf=no,bs._bubble=to,bs.get=ro,bs.milliseconds=hs,bs.seconds=ls,bs.minutes=us,bs.hours=cs,bs.days=fs,bs.weeks=ho,bs.months=ps,bs.years=vs,bs.humanize=po,bs.toISOString=vo,bs.toString=vo,bs.toJSON=vo,bs.locale=ci,bs.localeData=fi,bs.toIsoString=O("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",vo),bs.lang=qn,G("X",0,0,"unix"),G("x",0,0,"valueOf"),$("x",Ko),$("X",$o),it("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),it("x",function(t,e,i){i._d=new Date(w(t))}),e.version="2.17.1",i(be),e.fn=$n,e.min=we,e.max=ke,e.now=Hn,e.utc=u,e.unix=Ai,e.months=Ui,e.isDate=a,e.locale=Jt,e.invalid=v,e.duration=Le,e.isMoment=b,e.weekdays=qi,e.parseZone=ji,e.localeData=ie,e.isDuration=Oe,e.monthsShort=Vi,e.weekdaysMin=Xi,e.defineLocale=te,e.updateLocale=ee,e.locales=oe,e.weekdaysShort=Gi,e.normalizeUnits=R,e.relativeTimeRounding=co,e.relativeTimeThreshold=fo,e.calendarFormat=Ge,e.prototype=$n,e})}).call(e,i(84)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=85},function(t,e){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){n<16&&(e[o+n++]=u[t])});n<16;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:v,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),d=void 0!==t.nsecs?t.nsecs:y+1,h=a-g+(d-y)/1e4;if(h<0&&void 0===t.clockseq&&(r=r+1&16383),(h<0||a>g)&&void 0===t.nsecs&&(d=0),d>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");g=a,y=d,v=r,a+=122192928e5;var l=(1e4*(268435455&a)+d)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||p,f=0;f<6;f++)s[n+f]=c[f];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;a<16;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var d=new Uint8Array(16);r=function(){return crypto.getRandomValues(d),d}}if(!r){var h=new Array(16);r=function(){for(var t,e=0;e<16;e++)0===(3&e)&&(t=4294967296*Math.random()),h[e]=t>>>((3&e)<<3)&255;return h}}for(var l=[],u={},c=0;c<256;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var f=r(),p=[1|f[0],f[1],f[2],f[3],f[4],f[5]],v=16383&(f[6]<<8|f[7]),g=0,y=0,m=s;m.v1=n,m.v4=s,m.parse=i,m.unparse=o,t.exports=m}).call(e,function(){return this}())},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var d=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(d.textContent=r.content),r.className&&d.setAttributeNS(null,"class",r.className+" vis-label"),d.setAttributeNS(null,"x",t),d.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,d){if(0!=n){n<0&&(n*=-1,i-=n);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*o),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",o),h.setAttributeNS(null,"height",n),h.setAttributeNS(null,"class",s),d&&h.setAttributeNS(null,"style",d)}}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=(0,l.default)(this._options.type),o=0,n=i.length;on?1:or)&&(s=d,r=h)}return s},n.prototype.min=function(t){var e,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(e=0,i=n.length;ethis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var s=i(58),r=o(s),a=i(1),d=i(88);n.prototype.setData=function(t){var e,i,o,n,s;if(this._data){for(this._data.off&&this._data.off("*",this.listener),e=this._data.getIds({filter:this._options&&this._options.filter}),s=[],o=0,n=e.length;o0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var o=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[o],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e.default=h},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(95),s=o(n),r=i(96),a=o(r),d=i(102),h=o(d),l=i(103),u=o(l),c=i(1),f=i(88),p=i(92),v=function(){function t(e,i,o,n){var r=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.layoutEngine=n,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(t,e){r.add(e.items)},update:function(t,e){r.update(e.items,e.data)},remove:function(t,e){r.remove(e.items)}},this.options={},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1},size:25,title:void 0,value:void 0,x:void 0,y:void 0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){c.forEach(t.nodesListeners,function(e,i){t.body.data.nodes&&t.body.data.nodes.off(i,e)}),delete t.body.functions.createNode,delete t.nodesListeners.add,delete t.nodesListeners.update,delete t.nodesListeners.remove,delete t.nodesListeners})}},{key:"setOptions",value:function(t){if(this.nodeOptions=t,void 0!==t){if(h.default.parseOptions(this.options,t),void 0!==t.shape)for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&this.body.nodes[e].updateShape();if(void 0!==t.font){u.default.parseOptions(this.options.font,t);for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&(this.body.nodes[i].updateLabelModule(),this.body.nodes[i]._reset())}if(void 0!==t.size)for(var o in this.body.nodes)this.body.nodes.hasOwnProperty(o)&&this.body.nodes[o]._reset();void 0===t.hidden&&void 0===t.physics||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.data.nodes;if(t instanceof f||t instanceof p)this.body.data.nodes=t;else if(Array.isArray(t))this.body.data.nodes=new f,this.body.data.nodes.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new f}if(i&&c.forEach(this.nodesListeners,function(t,e){i.off(e,t)}),this.body.nodes={},this.body.data.nodes){var o=this;c.forEach(this.nodesListeners,function(t,e){o.body.data.nodes.on(e,t)});var n=this.body.data.nodes.getIds();this.add(n,!0)}e===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:h.default;return new e(t,this.body,this.images,this.groups,this.options,this.defaultOptions,this.nodeOptions)}},{key:"refresh",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.body.nodes;for(var i in e){var o=void 0;e.hasOwnProperty(i)&&(o=e[i]);var n=this.body.data.nodes._data[i];void 0!==o&&void 0!==n&&(t===!0&&o.setOptions({x:null,y:null}),o.setOptions({fixed:!1}),o.setOptions(n))}}},{key:"getPositions",value:function(t){var e={};if(void 0!==t){if(Array.isArray(t)===!0){for(var i=0;it.left&&this.shape.topt.top; +}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=["color","font","fixed","shadow"];if(L.selectiveNotDeepExtend(n,t,e,i),L.mergeOptions(t,e,"shadow",i,o),void 0!==e.color&&null!==e.color){var s=L.parseColor(e.color);L.fillIfDefined(t.color,s)}else i===!0&&null===e.color&&(t.color=L.bridgeObject(o.color));void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y))),void 0!==e.font&&null!==e.font?u.default.parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=L.bridgeObject(o.font)),void 0!==e.scaling&&L.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)}}]),t}();e.default=W},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(104),s=o(n),r=i(2),a=o(r),d=i(62),h=o(d),l=i(95),u=o(l),c=i(96),f=o(c),p=i(1),v=function(){function t(e,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,u.default)(this,t),this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=o}return(0,f.default)(t,[{key:"setOptions",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.elementOptions=e,this.fontOptions=p.deepExtend({},e.font,!0),void 0!==e.label&&(this.labelDirty=!0),void 0!==e.font&&(t.parseOptions(this.fontOptions,e,i),"string"==typeof e.font?this.baseSize=this.fontOptions.size:"object"===(0,h.default)(e.font)&&void 0!==e.font.size&&(this.baseSize=e.font.size))}},{key:"constrain",value:function(t,e,i){this.fontOptions.constrainWidth=!1,this.fontOptions.maxWdt=-1,this.fontOptions.minWdt=-1;var o=[e,t,i],n=p.topMost(o,"widthConstraint");if("number"==typeof n)this.fontOptions.maxWdt=Number(n),this.fontOptions.minWdt=Number(n);else if("object"===("undefined"==typeof n?"undefined":(0,h.default)(n))){var s=p.topMost(o,["widthConstraint","maximum"]);"number"==typeof s&&(this.fontOptions.maxWdt=Number(s));var r=p.topMost(o,["widthConstraint","minimum"]);"number"==typeof r&&(this.fontOptions.minWdt=Number(r))}this.fontOptions.constrainHeight=!1,this.fontOptions.minHgt=-1,this.fontOptions.valign="middle";var a=p.topMost(o,"heightConstraint");if("number"==typeof a)this.fontOptions.minHgt=Number(a);else if("object"===("undefined"==typeof a?"undefined":(0,h.default)(a))){var d=p.topMost(o,["heightConstraint","minimum"]);"number"==typeof d&&(this.fontOptions.minHgt=Number(d));var l=p.topMost(o,["heightConstraint","valign"]);"string"==typeof l&&("top"!==l&&"bottom"!==l||(this.fontOptions.valign=l))}}},{key:"choosify",value:function(t,e,i){this.fontOptions.chooser=!0;var o=[e,t,i],n=p.topMost(o,"chosen");if("boolean"==typeof n)this.fontOptions.chooser=n;else if("object"===("undefined"==typeof n?"undefined":(0,h.default)(n))){var s=p.topMost(o,["chosen","label"]);"boolean"!=typeof s&&"function"!=typeof s||(this.fontOptions.chooser=s)}}},{key:"adjustSizes",value:function(t){var e=t?t.right+t.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=e,this.fontOptions.minWdt-=e);var i=t?t.top+t.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}},{key:"propagateFonts",value:function(t,e,i){if(this.fontOptions.multi){var o=["bold","ital","boldital","mono"],n=!0,s=!1,r=void 0;try{for(var d,h=(0,a.default)(o);!(n=(d=h.next()).done);n=!0){var l=d.value,u=void 0;if(t.font&&(u=t.font[l]),"string"==typeof u){var c=u.split(" ");this.fontOptions[l].size=c[0].replace("px",""),this.fontOptions[l].face=c[1],this.fontOptions[l].color=c[2],this.fontOptions[l].vadjust=this.fontOptions.vadjust,this.fontOptions[l].mod=i.font[l].mod}else{if(u&&u.hasOwnProperty("face")?this.fontOptions[l].face=u.face:e.font&&e.font[l]&&e.font[l].hasOwnProperty("face")?this.fontOptions[l].face=e.font[l].face:"mono"===l?this.fontOptions[l].face=i.font[l].face:e.font&&e.font.hasOwnProperty("face")?this.fontOptions[l].face=e.font.face:this.fontOptions[l].face=this.fontOptions.face,u&&u.hasOwnProperty("color")?this.fontOptions[l].color=u.color:e.font&&e.font[l]&&e.font[l].hasOwnProperty("color")?this.fontOptions[l].color=e.font[l].color:e.font&&e.font.hasOwnProperty("color")?this.fontOptions[l].color=e.font.color:this.fontOptions[l].color=this.fontOptions.color,u&&u.hasOwnProperty("mod")?this.fontOptions[l].mod=u.mod:e.font&&e.font[l]&&e.font[l].hasOwnProperty("mod")?this.fontOptions[l].mod=e.font[l].mod:e.font&&e.font.hasOwnProperty("mod")?this.fontOptions[l].mod=e.font.mod:this.fontOptions[l].mod=i.font[l].mod,u&&u.hasOwnProperty("size"))this.fontOptions[l].size=u.size;else if(e.font&&e.font[l]&&e.font[l].hasOwnProperty("size"))this.fontOptions[l].size=e.font[l].size;else if(this.fontOptions[l].face===i.font[l].face&&this.fontOptions.face===i.font.face){var f=this.fontOptions.size/Number(i.font.size);this.fontOptions[l].size=i.font[l].size*f}else e.font&&e.font.hasOwnProperty("size")?this.fontOptions[l].size=e.font.size:this.fontOptions[l].size=this.fontOptions.size;if(u&&u.hasOwnProperty("vadjust"))this.fontOptions[l].vadjust=u.vadjust;else if(e.font&&e.font[l]&&e.font[l].hasOwnProperty("vadjust"))this.fontOptions[l].vadjust=e.font[l].vadjust;else if(this.fontOptions[l].face===i.font[l].face&&this.fontOptions.face===i.font.face){var p=this.fontOptions.size/Number(i.font.size);this.fontOptions[l].vadjust=i.font[l].vadjust*Math.round(p)}else e.font&&e.font.hasOwnProperty("vadjust")?this.fontOptions[l].vadjust=e.font.vadjust:this.fontOptions[l].vadjust=this.fontOptions.vadjust}this.fontOptions[l].size=Number(this.fontOptions[l].size),this.fontOptions[l].vadjust=Number(this.fontOptions[l].vadjust)}}catch(t){s=!0,r=t}finally{try{!n&&h.return&&h.return()}finally{if(s)throw r}}}}},{key:"draw",value:function(t,e,i,o,n){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";if(void 0!==this.elementOptions.label){var r=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&r5&&void 0!==arguments[5]?arguments[5]:"middle",a=this.fontOptions.size,d=a*this.body.view.scale;d>=this.elementOptions.scaling.label.maxVisible&&(a=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale);var h=this.size.yLine,l=this._setAlignment(t,o,h,r),u=(0,s.default)(l,2);o=u[0],h=u[1],t.textAlign="left",o-=this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&("top"===this.fontOptions.valign&&(h-=(this.size.height-this.size.labelHeight)/2),"bottom"===this.fontOptions.valign&&(h+=(this.size.height-this.size.labelHeight)/2));for(var c=0;c0&&(t.lineWidth=v.strokeWidth,t.strokeStyle=b,t.lineJoin="round"),t.fillStyle=m,v.strokeWidth>0&&t.strokeText(v.text,o+f,h+v.vadjust),t.fillText(v.text,o+f,h+v.vadjust),f+=v.width}h+=this.lines[c].height}}},{key:"_setAlignment",value:function(t,e,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&this.pointToSelf===!1){e=0,i=0;var n=2;"top"===this.fontOptions.align?(t.textBaseline="alphabetic",i-=2*n):"bottom"===this.fontOptions.align?(t.textBaseline="hanging",i+=2*n):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t,e,i){var o=t||"#000000",n=i||"#ffffff";if(e<=this.elementOptions.scaling.label.drawThreshold){var s=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-e)));o=p.overrideOpacity(o,s),n=p.overrideOpacity(n,s)}return[o,n]}},{key:"getTextSize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._processLabel(t,e,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:"calculateLabelSize",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";this.labelDirty===!0&&this._processLabel(t,e,i),this.size.left=o-.5*this.size.width,this.size.top=n-.5*this.size.height,this.size.yLine=n+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===s&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"decodeMarkupSystem",value:function(t){var e="none";return"markdown"===t||"md"===t?e="markdown":t!==!0&&"html"!==t||(e="html"),e}},{key:"splitBlocks",value:function(t,e){var i=this.decodeMarkupSystem(e);return"none"===i?[{text:t,mod:"normal"}]:"markdown"===i?this.splitMarkdownBlocks(t):"html"===i?this.splitHtmlBlocks(t):void 0}},{key:"splitMarkdownBlocks",value:function(t){var e=[],i={bold:!1,ital:!1,mono:!1,beginable:!0,spacing:!1,position:0,buffer:"",modStack:[]};for(i.mod=function(){return 0===this.modStack.length?"normal":this.modStack[0]},i.modName=function(){return 0===this.modStack.length?"normal":"mono"===this.modStack[0]?"mono":i.bold&&i.ital?"boldital":i.bold?"bold":i.ital?"ital":void 0},i.emitBlock=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position/.test(t.substr(i.position,3))?i.mono||i.ital||!//.test(t.substr(i.position,3))?!i.mono&&//.test(t.substr(i.position,6))?(i.emitBlock(),i.mono=!0,i.modStack.unshift("mono"),i.position+=5):!i.mono&&"bold"===i.mod()&&/<\/b>/.test(t.substr(i.position,4))?(i.emitBlock(),i.bold=!1,i.modStack.shift(),i.position+=3):!i.mono&&"ital"===i.mod()&&/<\/i>/.test(t.substr(i.position,4))?(i.emitBlock(),i.ital=!1,i.modStack.shift(),i.position+=3):"mono"===i.mod()&&/<\/code>/.test(t.substr(i.position,7))?(i.emitBlock(),i.mono=!1,i.modStack.shift(),i.position+=6):i.add(o):(i.emitBlock(),i.ital=!0,i.modStack.unshift("ital"),i.position+=2):(i.emitBlock(),i.bold=!0,i.modStack.unshift("bold"),i.position+=2):/&/.test(o)?/</.test(t.substr(i.position,4))?(i.add("<"),i.position+=3):/&/.test(t.substr(i.position,5))?(i.add("&"),i.position+=4):i.add("&"):i.add(o),i.position++}return i.emitBlock(),e}},{key:"getFormattingValues",value:function(t,e,i,o){var n={color:"normal"===o?this.fontOptions.color:this.fontOptions[o].color,size:"normal"===o?this.fontOptions.size:this.fontOptions[o].size,face:"normal"===o?this.fontOptions.face:this.fontOptions[o].face,mod:"normal"===o?"":this.fontOptions[o].mod,vadjust:"normal"===o?this.fontOptions.vadjust:this.fontOptions[o].vadjust,strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};return"normal"===o?(e||i)&&(this.fontOptions.chooser===!0&&this.elementOptions.labelHighlightBold?n.mod="bold":"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(t,n,this.elementOptions.id,e,i)):(e||i)&&"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(t,n,this.elementOptions.id,e,i),t.font=(n.mod+" "+n.size+"px "+n.face).replace(/"/g,""),n.font=t.font,n.height=n.size,n}},{key:"differentState",value:function(t,e){return t!==this.fontOptions.selectedState&&e!==this.fontOptions.hoverState}},{key:"_processLabel",value:function(t,e,i){var o=0,n=0,s=[],r=0;if(s.add=function(t,e,i,o,n,s,r,a,d,h){this.length==t&&(this[t]={width:0,height:0,blocks:[]}),this[t].blocks.push({text:e,font:i,color:o,width:n,height:s,vadjust:r,mod:a,strokeWidth:d,strokeColor:h})},s.accumulate=function(t,e,i){this[t].width+=e,this[t].height=i>this[t].height?i:this[t].height},s.addAndAccumulate=function(t,e,i,o,n,s,r,a,d,h){this.add(t,e,i,o,n,s,r,a,d,h),this.accumulate(t,n,s)},void 0!==this.elementOptions.label){var a=String(this.elementOptions.label).split("\n"),d=a.length;if(this.elementOptions.font.multi)for(var h=0;h0)for(var v=this.getFormattingValues(t,e,i,l[p].mod),g=l[p].text.split(" "),y=!0,m="",b={width:0},_=void 0,w=0;wthis.fontOptions.maxWdt&&0!=_.width?(c=v.height>c?v.height:c,s.add(r,m,v.font,v.color,_.width,v.height,v.vadjust,l[p].mod,v.strokeWidth,v.strokeColor),s.accumulate(r,_.width,c),m="",y=!0,u=0,o=s[r].width>o?s[r].width:o,n+=s[r].height,r++):(m=m+k+g[w],w===g.length-1&&(c=v.height>c?v.height:c,u+=b.width,s.add(r,m,v.font,v.color,b.width,v.height,v.vadjust,l[p].mod,v.strokeWidth,v.strokeColor),s.accumulate(r,b.width,c),p===l.length-1&&(o=s[r].width>o?s[r].width:o,n+=s[r].height,r++)),w++,y=!1)}else{var x=this.getFormattingValues(t,e,i,l[p].mod),O=t.measureText(l[p].text);s.addAndAccumulate(r,l[p].text,x.font,x.color,O.width,x.height,x.vadjust,l[p].mod,x.strokeWidth,x.strokeColor),o=s[r].width>o?s[r].width:o,l.length-1===p&&(n+=s[r].height,r++)}}}else for(var M=0;M0)for(var E=a[M].split(" "),D="",C={width:0},T=void 0,P=0;Pthis.fontOptions.maxWdt&&0!=T.width?(s.addAndAccumulate(r,D,S.font,S.color,T.width,S.size,S.vadjust,"normal",S.strokeWidth,S.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,D="",r++):(D=D+B+E[P],P===E.length-1&&(s.addAndAccumulate(r,D,S.font,S.color,C.width,S.size,S.vadjust,"normal",S.strokeWidth,S.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,r++),P++)}else{var F=a[M],I=t.measureText(F);s.addAndAccumulate(r,F,S.font,S.color,I.width,S.size,S.vadjust,"normal",S.strokeWidth,S.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,r++}}}this.fontOptions.minWdt>0&&o0&&n2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e.font){var o=e.font.split(" ");t.size=o[0].replace("px",""),t.face=o[1],t.color=o[2],t.vadjust=0}else"object"===(0,h.default)(e.font)&&p.fillIfDefined(t,e.font,i);t.size=Number(t.size),t.vadjust=Number(t.vadjust)}}]),t}();e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(105),s=o(n),r=i(2),a=o(r);e.default=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,d=(0,a.default)(t);!(o=(r=d.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(t){n=!0,s=t}finally{try{!o&&d.return&&d.return()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if((0,s.default)(Object(e)))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(t,e,i){t.exports={default:i(106),__esModule:!0}},function(t,e,i){i(4),i(50),t.exports=i(107)},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).isIterable=function(t){var e=Object(t);return void 0!==e[n]||"@@iterator"in e||s.hasOwnProperty(o(e))}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;(void 0===this.width||this.labelModule.differentState(e,i))&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=this.width/2)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,t.strokeStyle=s.borderColor,t.lineWidth=s.borderWidth,t.lineWidth/=this.body.view.scale,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=s.color,t.roundRect(this.left,this.top,this.width,this.height,s.borderRadius),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),s.borderWidth>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2;var s=this.options.shapeProperties.borderRadius;this.boundingBox.left=this.left-s,this.boundingBox.top=this.top-s,this.boundingBox.bottom=this.top+this.height+s,this.boundingBox.right=this.left+this.width+s}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}}]),e}(v.default);e.default=g},function(t,e,i){t.exports={default:i(110),__esModule:!0}},function(t,e,i){i(111),t.exports=i(17).Object.getPrototypeOf},function(t,e,i){var o=i(49),n=i(48);i(61)("getPrototypeOf",function(){return function(t){return n(o(t))}})},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(62),s=o(n);e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==("undefined"==typeof e?"undefined":(0,s.default)(e))&&"function"!=typeof e?t:e}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(114),s=o(n),r=i(55),a=o(r),d=i(62),h=o(d);e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+("undefined"==typeof e?"undefined":(0,h.default)(e)));t.prototype=(0,a.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(s.default?(0,s.default)(t,e):t.__proto__=e)}},function(t,e,i){t.exports={default:i(115),__esModule:!0}},function(t,e,i){i(116),t.exports=i(17).Object.setPrototypeOf},function(t,e,i){var o=i(15);o(o.S,"Object",{setPrototypeOf:i(117).set})},function(t,e,i){var o=i(23),n=i(22),s=function(t,e){if(n(t),!o(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,o){try{o=i(18)(Function.call,i(78).f(Object.prototype,"__proto__").set,2),o(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,i){return s(t,i),e?t.__proto__=i:o(t,i),t}}({},!1):void 0),check:s}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(62),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=function(){function t(e,i,o){(0,a.default)(this,t),this.body=i,this.labelModule=o,this.setOptions(e),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.margin=void 0,this.boundingBox={top:0,left:0,right:0,bottom:0}}return(0,h.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"_setMargins",value:function(t){this.margin={},this.options.margin&&("object"==(0,s.default)(this.options.margin)?(this.margin.top=this.options.margin.top,this.margin.right=this.options.margin.right,this.margin.bottom=this.options.margin.bottom,this.margin.left=this.options.margin.left):(this.margin.top=this.options.margin,this.margin.right=this.options.margin,this.margin.bottom=this.options.margin,this.margin.left=this.options.margin)),t.adjustSizes(this.margin)}},{key:"_distanceToBorder",value:function(t,e){var i=this.options.borderWidth;return this.resize(t),Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}},{key:"enableShadow",value:function(t,e){e.shadow&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){e.shadow&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}},{key:"enableBorderDashes",value:function(t,e){if(e.borderDashes!==!1)if(void 0!==t.setLineDash){var i=e.borderDashes;i===!0&&(i=[5,15]),t.setLineDash(i)}else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1}},{key:"disableBorderDashes",value:function(t,e){e.borderDashes!==!1&&(void 0!==t.setLineDash?t.setLineDash([0]):(console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1))}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(120),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;arguments.length>3&&void 0!==arguments[3]?arguments[3]:{size:this.options.size};if(void 0===this.width||this.labelModule.differentState(e,i)){this.textSize=this.labelModule.getTextSize(t,e,i);var o=Math.max(this.textSize.width+this.margin.right+this.margin.left,this.textSize.height+this.margin.top+this.margin.bottom);this.options.size=o/2,this.width=o,this.height=o,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,o,n,s),this.boundingBox.top=i-s.size,this.boundingBox.left=e-s.size,this.boundingBox.right=e+s.size,this.boundingBox.bottom=i+s.size,this.updateBoundingBox(e,i),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,i,o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n.labelOffset=0,n.imageLoaded=!1,n.selected=!1,n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"setOptions",value:function(t,e,i){this.options=t,this.setImages(e,i)}},{key:"setImages",value:function(t,e){t&&(this.imageObj=t,e&&(this.imageObjAlt=e))}},{key:"switchImages",value:function(t){if(t&&!this.selected||!t&&this.selected){var e=this.imageObj;this.imageObj=this.imageObjAlt,this.imageObjAlt=e}this.selected=t}},{key:"_resizeImage",value:function(){var t=!1;if(this.imageObj.width&&this.imageObj.height?this.imageLoaded===!1&&(this.imageLoaded=!0,t=!0):this.imageLoaded=!1,!this.width||!this.height||t===!0){var e,i,o;this.imageObj.width&&this.imageObj.height&&(e=0,i=0),this.options.shapeProperties.useImageSize===!1?this.imageObj.width>this.imageObj.height?(o=this.imageObj.width/this.imageObj.height,e=2*this.options.size*o||this.imageObj.width,i=2*this.options.size||this.imageObj.height):(o=this.imageObj.width&&this.imageObj.height?this.imageObj.height/this.imageObj.width:1,e=2*this.options.size,i=2*this.options.size*o):(e=this.imageObj.width,i=this.imageObj.height),this.width=e,this.height=i,this.radius=.5*this.width}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.circle(e,i,s.size),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore()}},{key:"_drawImageAtPosition",value:function(t,e){if(0!=this.imageObj.width){t.globalAlpha=1,this.enableShadow(t,e);var i=this.imageObj.width/this.width/this.body.view.scale;if(i>2&&this.options.shapeProperties.interpolation===!0){var o=this.imageObj.width,n=this.imageObj.height,s=document.createElement("canvas");s.width=o,s.height=o;var r=s.getContext("2d");i*=.5,o*=.5,n*=.5,r.drawImage(this.imageObj,0,0,o,n);for(var a=0,d=1;i>2&&d<4;)r.drawImage(s,a,0,o,n,a+o,0,o/2,n/2),a+=o,i*=.5,o*=.5,n*=.5,d+=1;t.drawImage(s,a,0,o,n,this.left,this.top,this.width,this.height)}else t.drawImage(this.imageObj,this.left,this.top,this.width,this.height);this.disableShadow(t,e)}}},{key:"_drawImageLabel",value:function(t,e,i,o,n){var s,r=0;if(void 0!==this.height){r=.5*this.height;var a=this.labelModule.getTextSize(t,o,n);a.lineCount>=1&&(r+=a.height/2)}s=i+r,this.options.label&&(this.labelOffset=r),this.labelModule.draw(t,e,s,o,n,"hanging")}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(120),v=o(p),g=function(t){function e(t,i,o,n,r){(0,a.default)(this,e);var d=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return d.setImages(n,r),d._swapToImageResizeWhenImageLoaded=!0,d}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height||this.labelModule.differentState(e,i)){var o=2*this.options.size;this.width=o,this.height=o,this._swapToImageResizeWhenImageLoaded=!0,this.radius=.5*this.width}else this._swapToImageResizeWhenImageLoaded&&(this.width=void 0,this.height=void 0,this._swapToImageResizeWhenImageLoaded=!1),this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){this.imageObjAlt&&this.switchImages(o),this.resize(),this.left=e-this.width/2,this.top=i-this.height/2;Math.min(.5*this.height,.5*this.width);this._drawRawCircle(t,e,i,o,n,s),t.save(),t.clip(),this._drawImageAtPosition(t,s),t.restore(),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t,e,i){if(void 0===this.width||this.labelModule.differentState(e,i)){this.textSize=this.labelModule.getTextSize(t,e,i);var o=this.textSize.width+this.margin.right+this.margin.left;this.width=o,this.height=o,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2;var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor, +t.fillStyle=s.color,t.database(e-this.width/2,i-this.height/2,this.width,this.height),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments[3];this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"diamond",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"_resizeShape",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.selected,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.hover,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{size:this.options.size};if(void 0===this.width||this.labelModule.differentState(t,e)){var o=2*i.size;this.width=o,this.height=o,this.radius=.5*this.width}}},{key:"_drawShape",value:function(t,e,i,o,n,s,r,a){this._resizeShape(s,r,a),this.left=o-this.width/2,this.top=n-this.height/2;var d=a.borderWidth/this.body.view.scale;if(t.lineWidth=Math.min(this.width,d),t.strokeStyle=a.borderColor,t.fillStyle=a.color,t[e](o,n,a.size),this.enableShadow(t,a),t.fill(),this.disableShadow(t,a),t.save(),d>0&&(this.enableBorderDashes(t,a),t.stroke(),this.disableBorderDashes(t,a)),t.restore(),void 0!==this.options.label){var h=n+.5*this.height+3;this.labelModule.draw(t,o,h,s,r,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+3))}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments[3];this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"circle",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this.options.size}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.width||this.labelModule.differentState(e,i)){var o=this.labelModule.getTextSize(t,e,i);this.height=2*o.height,this.width=o.width+this.height,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-.5*this.width,this.top=i-.5*this.height;var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.ellipse(this.left,this.top,this.width,this.height),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,e,i,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t,e,i){(void 0===this.width||this.labelModule.differentState(e,i))&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(t,o,n),this.options.icon.size=this.options.icon.size||50,this.left=e-this.width/2,this.top=i-this.height/2,this._icon(t,e,i,o,n,s),void 0!==this.options.label){var r=5;this.labelModule.draw(t,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+r,o)}this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){var i=5;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+i)}}},{key:"_icon",value:function(t,e,i,o,n,s){var r=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=(o?"bold ":"")+r+"px "+this.options.icon.face,t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t,s),t.fillText(this.options.icon.code,e,i),this.disableShadow(t,s)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(120),v=o(p),g=function(t){function e(t,i,o,n,r){(0,a.default)(this,e);var d=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return d.setImages(n,r),d}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(){this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){if(this.imageObjAlt&&this.switchImages(o),this.selected=o,this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,this.options.shapeProperties.useBorderWithImage===!0){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,d=(o?a:r)/this.body.view.scale;t.lineWidth=Math.min(this.width,d),t.beginPath(),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),t.fill(),t.save(),d>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),t.closePath()}this._drawImageAtPosition(t,s),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.resize(),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"square",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t,e,i,o){this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"star",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(118),v=o(p),g=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t,e,i){(void 0===this.width||this.labelModule.differentState(e,i))&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t,s),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n),this.disableShadow(t,s),this.updateBoundingBox(e,i,t,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangle",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(124),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangleDown",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.printStyle=void 0;var n=i(89),s=o(n),r=i(62),a=o(r),d=i(58),h=o(d),l=i(95),u=o(l),c=i(96),f=o(c),p=i(1),v=!1,g=void 0,y="background: #FFeeee; color: #dd0000",m=function(){function t(){(0,u.default)(this,t)}return(0,f.default)(t,null,[{key:"validate",value:function(e,i,o){v=!1,g=i;var n=i;return void 0!==o&&(n=i[o]),t.parse(e,n,[]),v}},{key:"parse",value:function(e,i,o){for(var n in e)e.hasOwnProperty(n)&&t.check(n,e,i,o)}},{key:"check",value:function(e,i,o,n){void 0===o[e]&&void 0===o.__any__?t.getSuggestion(e,o,n):void 0===o[e]&&void 0!==o.__any__?"object"===t.getType(i[e])&&void 0!==o.__any__.__type__?t.checkFields(e,i,o,"__any__",o.__any__.__type__,n):t.checkFields(e,i,o,"__any__",o.__any__,n):void 0!==o[e].__type__?t.checkFields(e,i,o,e,o[e].__type__,n):t.checkFields(e,i,o,e,o[e],n)}},{key:"checkFields",value:function(e,i,o,n,s,r){var a=t.getType(i[e]),d=s[a];void 0!==d?"array"===t.getType(d)&&d.indexOf(i[e])===-1?(console.log('%cInvalid option detected in "'+e+'". Allowed values are:'+t.print(d)+' not "'+i[e]+'". '+t.printLocation(r,e),y),v=!0):"object"===a&&"__any__"!==n&&(r=p.copyAndExtendArray(r,e),t.parse(i[e],o[n],r)):void 0===s.any&&(console.log('%cInvalid type received for "'+e+'". Expected: '+t.print((0,h.default)(s))+". Received ["+a+'] "'+i[e]+'"'+t.printLocation(r,e),y),v=!0)}},{key:"getType",value:function(t){var e="undefined"==typeof t?"undefined":(0,a.default)(t);return"object"===e?null===t?"null":t instanceof Boolean?"boolean":t instanceof Number?"number":t instanceof String?"string":Array.isArray(t)?"array":t instanceof Date?"date":void 0!==t.nodeType?"dom":t._isAMomentObject===!0?"moment":"object":"number"===e?"number":"boolean"===e?"boolean":"string"===e?"string":void 0===e?"undefined":e}},{key:"getSuggestion",value:function(e,i,o){var n=t.findInOptions(e,i,o,!1),s=t.findInOptions(e,g,[],!0),r=8,a=4;void 0!==n.indexMatch?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+'Perhaps it was incomplete? Did you mean: "'+n.indexMatch+'"?\n\n',y):s.distance<=a&&n.distance>s.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),y):n.distance<=r?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),y):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print((0,h.default)(i))+t.printLocation(o,e),y),v=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=1e9,r="",a=[],d=e.toLowerCase(),h=void 0;for(var l in i){var u=void 0;if(void 0!==i[l].__type__&&n===!0){var c=t.findInOptions(e,i[l],p.copyAndExtendArray(o,l));s>c.distance&&(r=c.closestMatch,a=c.path,s=c.distance,h=c.indexMatch)}else l.toLowerCase().indexOf(d)!==-1&&(h=l),u=t.levenshteinDistance(e,l),s>u&&(r=l,a=p.copyArray(o),s=u)}return{closestMatch:r,path:a,distance:s,indexMatch:h}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Problem value found at: \n",o="\n\n"+i+"options = {\n",n=0;n1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.edges;if(t instanceof f||t instanceof p)this.body.data.edges=t;else if(Array.isArray(t))this.body.data.edges=new f,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new f}if(o&&c.forEach(this.edgesListeners,function(t,e){o.off(e,t)}),this.body.edges={},this.body.data.edges){c.forEach(this.edgesListeners,function(t,i){e.body.data.edges.on(i,t)});var n=this.body.data.edges.getIds();this.add(n,!0)}i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;ni.shape.height?(r=i.x+.5*i.shape.width,a=i.y-d):(r=i.x+d,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,d,.125),this.labelModule.draw(t,s.x,s.y,n,this.hover)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top,d=this.edgeType.getDistanceToEdge(i,o,n,s,r,a); +return d0&&i<0)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=["arrowStrikethrough","id","from","hidden","hoverWidth","label","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width"];if(O.selectiveDeepExtend(n,t,e,i),O.mergeOptions(t,e,"smooth",i,o),O.mergeOptions(t,e,"shadow",i,o),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:i===!0&&null===e.dashes&&(t.dashes=(0,a.default)(o.dashes)),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),O.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)):i===!0&&null===e.scaling&&(t.scaling=(0,a.default)(o.scaling)),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var r=e.arrows.toLowerCase();t.arrows.to.enabled=r.indexOf("to")!=-1,t.arrows.middle.enabled=r.indexOf("middle")!=-1,t.arrows.from.enabled=r.indexOf("from")!=-1}else{if("object"!==(0,h.default)(e.arrows))throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+(0,s.default)(e.arrows));O.mergeOptions(t.arrows,e.arrows,"to",i,o.arrows),O.mergeOptions(t.arrows,e.arrows,"middle",i,o.arrows),O.mergeOptions(t.arrows,e.arrows,"from",i,o.arrows)}else i===!0&&null===e.arrows&&(t.arrows=(0,a.default)(o.arrows));if(void 0!==e.color&&null!==e.color)if(t.color=O.deepExtend({},t.color,!0),O.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var d=!1;void 0!==e.color.color&&(t.color.color=e.color.color,d=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,d=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,d=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&d===!0&&(t.color.inherit=!1)}else i===!0&&null===e.color&&(t.color=O.bridgeObject(o.color));void 0!==e.font&&null!==e.font?v.default.parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=O.bridgeObject(o.font))}}]),t}();e.default=M},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(104),s=o(n),r=i(109),a=o(r),d=i(95),h=o(d),l=i(96),u=o(l),c=i(112),f=o(c),p=i(113),v=o(p),g=i(138),y=o(g),m=function(t){function e(t,i,o){return(0,h.default)(this,e),(0,f.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o))}return(0,v.default)(e,t),(0,u.default)(e,[{key:"_line",value:function(t,e,i){var o=i[0],n=i[1];t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i||void 0===o.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.bezierCurveTo(o.x,o.y,n.x,n.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"_getViaCoordinates",value:function(){var t=this.from.x-this.to.x,e=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(t)>Math.abs(e)||this.options.smooth.forceDirection===!0||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates(),d=(0,s.default)(a,2),h=d[0],l=d[1];return this._getDistanceToBezierEdge(t,e,i,o,n,r,h,l)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=(0,s.default)(e,2),o=i[0],n=i[1],r=t,a=[];a[0]=Math.pow(1-r,3),a[1]=3*r*Math.pow(1-r,2),a[2]=3*Math.pow(r,2)*(1-r),a[3]=Math.pow(r,3);var d=a[0]*this.fromPoint.x+a[1]*o.x+a[2]*n.x+a[3]*this.toPoint.x,h=a[0]*this.fromPoint.y+a[1]*o.y+a[2]*n.y+a[3]*this.toPoint.y;return{x:d,y:h}}}]),e}(y.default);e.default=m},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(139),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r,a){var d=1e9,h=void 0,l=void 0,u=void 0,c=void 0,f=void 0,p=t,v=e,g=[0,0,0,0];for(l=1;l<10;l++)u=.1*l,g[0]=Math.pow(1-u,3),g[1]=3*u*Math.pow(1-u,2),g[2]=3*Math.pow(u,2)*(1-u),g[3]=Math.pow(u,3),c=g[0]*t+g[1]*r.x+g[2]*a.x+g[3]*i,f=g[0]*e+g[1]*r.y+g[2]*a.y+g[3]*o,l>0&&(h=this._getDistanceToLine(p,v,c,f,n,s),d=h2&&void 0!==arguments[2]?arguments[2]:this._getViaCoordinates(),d=10,h=0,l=0,u=1,c=.2,f=this.to,p=!1;for(t.id===this.from.id&&(f=this.from,p=!0);l<=u&&h0&&(d=this._getDistanceToLine(f,p,u,c,n,s),a=do.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,d=10,h=0,l=this.options.selfReferenceSize,u=void 0,c=void 0,f=void 0,p=void 0,v=void 0,g=.05,y=.5*(s+r);s<=r&&h0?a>0?s=y:r=y:a>0?r=y:s=y,h++;return u.t=y,u}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t,e,i,o){if(e.inheritsColor!==!1){if("both"===e.inheritsColor&&this.from.id!==this.to.id){var n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,r=void 0;return s=this.from.options.color.highlight.border,r=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(s=l.overrideOpacity(this.from.options.color.border,e.opacity),r=l.overrideOpacity(this.to.options.color.border,e.opacity)):this.from.selected===!0&&this.to.selected===!1?r=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,r),n}return"to"===e.inheritsColor?l.overrideOpacity(this.to.options.color.border,e.opacity):l.overrideOpacity(this.from.options.color.border,e.opacity)}return l.overrideOpacity(e.color,e.opacity)}},{key:"_circle",value:function(t,e,i,o,n){this.enableShadow(t,e),t.beginPath(),t.arc(i,o,n,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t,e)}},{key:"getDistanceToEdge",value:function(t,e,i,o,n,r,a,d){var h=0;if(this.from!=this.to)h=this._getDistanceToEdge(t,e,i,o,n,r,a);else{var l=this._getCircleData(void 0),u=(0,s.default)(l,3),c=u[0],f=u[1],p=u[2],v=c-n,g=f-r;h=Math.abs(Math.sqrt(v*v+g*g)-p)}return this.labelModule.size.leftn&&this.labelModule.size.topr?0:h}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,d=r*r+a*a,h=((n-t)*r+(s-e)*a)/d;h>1?h=1:h<0&&(h=0);var l=t+h*r,u=e+h*a,c=l-n,f=u-s;return Math.sqrt(c*c+f*f)}},{key:"getArrowData",value:function(t,e,i,o,n,r){var a=void 0,d=void 0,h=void 0,l=void 0,u=void 0,c=void 0,f=void 0,p=r.width;if("from"===e?(h=this.from,l=this.to,u=.1,c=r.fromArrowScale,f=r.fromArrowType):"to"===e?(h=this.to,l=this.from,u=-.1,c=r.toArrowScale,f=r.toArrowType):(h=this.to,l=this.from,c=r.middleArrowScale,f=r.middleArrowType),h!=l)if("middle"!==e)if(this.options.smooth.enabled===!0){d=this.findBorderPosition(h,t,{via:i});var v=this.getPoint(Math.max(0,Math.min(1,d.t+u)),i);a=Math.atan2(d.y-v.y,d.x-v.x)}else a=Math.atan2(h.y-l.y,h.x-l.x),d=this.findBorderPosition(h,t);else a=Math.atan2(h.y-l.y,h.x-l.x),d=this.getPoint(.5,i);else{var g=this._getCircleData(t),y=(0,s.default)(g,3),m=y[0],b=y[1],_=y[2];"from"===e?(d=this.findBorderPosition(this.from,t,{x:m,y:b,low:.25,high:.6,direction:-1}),a=d.t*-2*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(d=this.findBorderPosition(this.from,t,{x:m,y:b,low:.6,high:1,direction:1}),a=d.t*-2*Math.PI+1.5*Math.PI-1.1*Math.PI):(d=this._pointOnCircle(m,b,_,.175),a=3.9269908169872414)}var w=15*c+3*p,k=d.x-.9*w*Math.cos(a),x=d.y-.9*w*Math.sin(a),O={x:k,y:x};return{point:d,core:O,angle:a,length:w,type:f}}},{key:"drawArrowHead",value:function(t,e,i,o,n){t.strokeStyle=this.getColor(t,e,i,o),t.fillStyle=t.strokeStyle,t.lineWidth=e.width,n.type&&"circle"===n.type.toLowerCase()?t.circleEndpoint(n.point.x,n.point.y,n.angle,n.length):t.arrowEndpoint(n.point.x,n.point.y,n.angle,n.length),this.enableShadow(t,e),t.fill(),this.disableShadow(t,e)}},{key:"enableShadow",value:function(t,e){e.shadow===!0&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){e.shadow===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(104),s=o(n),r=i(109),a=o(r),d=i(95),h=o(d),l=i(96),u=o(l),c=i(112),f=o(c),p=i(113),v=o(p),g=i(139),y=o(g),m=function(t){function e(t,i,o){(0,h.default)(this,e);var n=(0,f.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o));return n._boundFunction=function(){n.positionBezierNode()},n.body.emitter.on("_repositionBezierNodes",n._boundFunction),n}return(0,v.default)(e,t),(0,u.default)(e,[{key:"setOptions",value:function(t){var e=!1;this.options.physics!==t.physics&&(e=!0),this.options=t,this.id=this.options.id,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.setupSupportNode(),this.connect(),e===!0&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}},{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],void 0===this.from||void 0===this.to||this.options.physics===!1?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}},{key:"cleanup",value:function(){return this.body.emitter.off("_repositionBezierNodes",this._boundFunction),void 0!==this.via&&(delete this.body.nodes[this.via.id],this.via=void 0,!0)}},{key:"setupSupportNode",value:function(){if(void 0===this.via){var t="edgeId:"+this.id,e=this.body.functions.createNode({id:t,shape:"circle",physics:!0,hidden:!0});this.body.nodes[t]=e,this.via=e,this.via.parentEdgeId=this.id,this.positionBezierNode()}}},{key:"positionBezierNode",value:function(){void 0!==this.via&&void 0!==this.from&&void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&&(this.via.x=0,this.via.y=0)}},{key:"_line",value:function(t,e,i){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){return this.via}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.via,i=t,o=void 0,n=void 0;if(this.from===this.to){var r=this._getCircleData(this.from),a=(0,s.default)(r,3),d=a[0],h=a[1],l=a[2],u=2*Math.PI*(1-i);o=d+l*Math.sin(u),n=h+l-l*(1-Math.cos(u))}else o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}]),e}(y.default);e.default=m},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(139),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"_line",value:function(t,e,i){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var t=void 0,e=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=nMath.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=sMath.abs(this.from.y-this.to.y)&&(t=this.from.x=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s,t=this.to.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.y2&&void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(t,e,i.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=t,o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(109),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(112),u=o(l),c=i(113),f=o(c),p=i(140),v=o(p),g=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,f.default)(e,t),(0,h.default)(e,[{key:"_line",value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}},{key:"_findBorderPosition",value:function(t,e){var i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),d=t.distanceToBorder(e,n),h=(a-d)/a,l={};return l.x=(1-h)*o.x+h*i.x,l.y=(1-h)*o.y+h*i.y,l}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(95),a=o(r),d=i(96),h=o(d),l=i(145),u=o(l),c=i(146),f=o(c),p=i(147),v=o(p),g=i(148),y=o(g),m=i(149),b=o(m),_=i(150),w=o(_),k=i(151),x=o(k),O=i(152),M=o(O),S=i(1),E=function(){function t(e){(0,a.default)(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},S.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return(0,h.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("initPhysics",function(){t.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){t.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){t.stopSimulation(),t.ready=!1}),this.body.emitter.on("disablePhysics",function(){t.physicsEnabled=!1,t.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){t.setOptions(t.options),t.ready===!0&&t.startSimulation()}),this.body.emitter.on("startSimulation",function(){t.ready===!0&&t.startSimulation()}),this.body.emitter.on("stopSimulation",function(){t.stopSimulation()}),this.body.emitter.on("destroy",function(){t.stopSimulation(!1),t.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){t.updatePhysicsData()})}},{key:"setOptions",value:function(t){void 0!==t&&(t===!1?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):(this.physicsEnabled=!0,S.selectiveNotDeepExtend(["stabilization"],this.options,t),S.mergeOptions(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),this.options.enabled===!1&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new x.default(this.body,this.physicsBody,t),this.edgesSolver=new y.default(this.body,this.physicsBody,t),this.gravitySolver=new M.default(this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new f.default(this.body,this.physicsBody,t),this.edgesSolver=new y.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new v.default(this.body,this.physicsBody,t),this.edgesSolver=new b.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new u.default(this.body,this.physicsBody,t),this.edgesSolver=new y.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)),this.modelOptions=t}},{key:"initPhysics",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?this.options.stabilization.enabled===!0?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.stabilized=!0,t===!0&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,t===!0&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var t=Date.now();this.physicsTick();var e=Date.now()-t;(e<.4*this.simulationInterval||this.runDoubleSpeed===!0)&&this.stabilized===!1&&(this.physicsTick(),this.runDoubleSpeed=!0),this.stabilized===!0&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||this.startedStabilization===!0)&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0},0)}},{key:"physicsTick",value:function(){if(this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilized===!1){if(this.adaptiveTimestep===!0&&this.adaptiveTimestepEnabled===!0){var t=1.2;this.adaptiveCounter%this.adaptiveInterval===0?(this.timestep=2*this.timestep,this.calculateForces(),this.moveNodes(),this.revert(),this.timestep=.5*this.timestep,this.calculateForces(),this.moveNodes(),this.calculateForces(),this.moveNodes(),this._evaluateStepQuality()===!0?this.timestep=t*this.timestep:this.timestep/ts))return!1;return!0}},{key:"moveNodes",value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=this.options.maxVelocity?this.options.maxVelocity:1e9,i=0,o=0,n=5,s=0;se?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var d=this.modelOptions.damping*s[t].y,h=(n[t].y-d)/i.options.mass;s[t].y+=h*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;var l=Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;return"number"!=typeof e&&(console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",this.options.stabilization.iterations),e=this.options.stabilization.iterations),0===this.physicsBody.physicsNodeIndices.length?void(this.ready=!0):(this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"), +this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,void setTimeout(function(){return t._stabilizationBatch()},0))}},{key:"_stabilizationBatch",value:function(){this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0);for(var t=0;this.stabilized===!1&&t0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;s0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1,e=t),this.overlapAvoidanceFactor<1&&o.shape.radius&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,d=1;d0&&(hr&&(r=h),la&&(a=l))}var u=Math.abs(r-n)-Math.abs(a-s);u>0?(s-=.5*u,a+=.5*u):(n+=.5*u,r-=.5*u);var c=1e-5,f=Math.max(c,Math.abs(r-n)),p=.5*f,v=.5*(n+r),g=.5*(s+a),y={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:v-p,maxX:v+p,minY:g-p,maxY:g+p},size:f,calcSize:1/f,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(y.root);for(var m=0;m0&&this._placeInTree(y.root,i);return y}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=this.seededRandom(),e.y+=this.seededRandom()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e.default=d},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(95),s=o(n),r=i(96),a=o(r),d=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t,e,i,o,n,s,r,a,d=this.body.nodes,h=this.physicsBody.physicsNodeIndices,l=this.physicsBody.forces,u=this.options.nodeDistance,c=-2/3/u,f=4/3,p=0;p0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(v.default);e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(62),a=o(r),d=i(95),h=o(d),l=i(96),u=o(l),c=i(154),f=o(c),p=i(155),v=o(p),g=i(1),y=function(){function t(e){var i=this;(0,h.default)(this,t),this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},g.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return(0,u.default)(t,[{key:"clusterByHubsize",value:function(t,e){void 0===t?t=this._getHubSize():"object"===("undefined"==typeof t?"undefined":(0,a.default)(t))&&(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],o=0;o=t&&i.push(n.id)}for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{},e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===t.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");t=this._checkOptions(t);for(var i={},o={},n=0;n2&&void 0!==arguments[2])||arguments[2];e=this._checkOptions(e);for(var o=[],n={},r=void 0,a=void 0,d=void 0,h=void 0,l=void 0,u=0;u0&&(0,s.default)(p).length>0&&g===!0&&o.push({nodes:c,edges:p})}}}for(var _=0;_1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:"clusterBridges",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:"clusterByConnection",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[t];e=this._checkOptions(e,o),void 0===e.clusterNodeProperties.x&&(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},r={},a=o.id,d=f.default.cloneOptions(o);n[a]=o;for(var h=0;h-1&&(r[y.id]=y)}this._cluster(n,r,e,i)}},{key:"_createClusterEdges",value:function(t,e,i,o){for(var n=void 0,r=void 0,a=void 0,d=void 0,h=void 0,l=void 0,u=(0,s.default)(t),c=[],p=0;p0&&void 0!==arguments[0]?arguments[0]:{};return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}},{key:"_cluster",value:function(t,e,i){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(0!=(0,s.default)(t).length&&(1!=(0,s.default)(t).length||1==i.clusterNodeProperties.allowSingleNodeCluster)){for(var n in t)if(t.hasOwnProperty(n)&&void 0!==this.clusteredNodes[n])return;var r=g.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var a=[];for(var d in t)if(t.hasOwnProperty(d)){var h=f.default.cloneOptions(t[d]);a.push(h)}var l=[];for(var u in e)if(e.hasOwnProperty(u)&&"clusterEdge:"!==u.substr(0,12)){var c=f.default.cloneOptions(e[u],"edge");l.push(c)}if(r=i.processProperties(r,a,l),!r)throw new Error("The processProperties function does not return properties!")}void 0===r.id&&(r.id="cluster:"+g.randomUUID());var p=r.id;void 0===r.label&&(r.label="cluster");var y=void 0;void 0===r.x&&(y=this._getClusterPosition(t),r.x=y.x),void 0===r.y&&(void 0===y&&(y=this._getClusterPosition(t)),r.y=y.y),r.id=p;var m=this.body.functions.createNode(r,v.default);m.isCluster=!0,m.containedNodes=t,m.containedEdges=e,m.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[r.id]=m,this._createClusterEdges(t,e,r,i.clusterEdgeProperties);for(var b in e)if(e.hasOwnProperty(b)&&void 0!==this.body.edges[b]){var _=this.body.edges[b];this._backupEdgeOptions(_),_.setOptions({physics:!1,hidden:!0})}for(var w in t)t.hasOwnProperty(w)&&(this.clusteredNodes[w]={clusterId:r.id,node:this.body.nodes[w]},this.body.nodes[w].setOptions({hidden:!0,physics:!1}));r.id=void 0,o===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"_backupEdgeOptions",value:function(t){void 0===this.clusteredEdges[t.id]&&(this.clusteredEdges[t.id]={physics:t.options.physics,hidden:t.options.hidden})}},{key:"_restoreEdge",value:function(t){var e=this.clusteredEdges[t.id];void 0!==e&&(t.setOptions({physics:e.physics,hidden:e.hidden}),delete this.clusteredEdges[t.id])}},{key:"isCluster",value:function(t){return void 0!==this.body.nodes[t]?this.body.nodes[t].isCluster===!0:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(t){for(var e=(0,s.default)(t),i=t[e[0]].x,o=t[e[0]].x,n=t[e[0]].y,r=t[e[0]].y,a=void 0,d=1;do?a.x:o,n=a.yr?a.y:r;return{x:.5*(i+o),y:.5*(n+r)}}},{key:"openCluster",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var o=this.body.nodes[t],n=o.containedNodes,s=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){var r={},a={x:o.x,y:o.y};for(var d in n)if(n.hasOwnProperty(d)){var h=this.body.nodes[d];r[d]={x:h.x,y:h.y}}var l=e.releaseFunction(a,r);for(var u in n)if(n.hasOwnProperty(u)){var c=this.body.nodes[u];void 0!==l[u]&&(c.x=void 0===l[u].x?o.x:l[u].x,c.y=void 0===l[u].y?o.y:l[u].y)}}else for(var p in n)if(n.hasOwnProperty(p)){var v=this.body.nodes[p];v=n[p],v.options.fixed.x===!1&&(v.x=o.x),v.options.fixed.y===!1&&(v.y=o.y)}for(var y in n)if(n.hasOwnProperty(y)){var m=this.body.nodes[y];m.vx=o.vx,m.vy=o.vy,m.setOptions({hidden:!1,physics:!0}),delete this.clusteredNodes[y]}for(var b=[],_=0;_o&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),d=Math.floor(t+2*a);return d>o&&(d=o),d}}]),t}();e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(95),s=o(n),r=i(96),a=o(r),d=i(1),h=function(){function t(){(0,s.default)(this,t)}return(0,a.default)(t,null,[{key:"getRange",value:function(t){var e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.shape.boundingBox.left&&(s=e.shape.boundingBox.left),re.shape.boundingBox.top&&(o=e.shape.boundingBox.top),n1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.x&&(s=e.x),re.y&&(o=e.y),n0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.allowRedraw=!1,t.renderingActive=!1,t.requiresTimeout===!0?clearTimeout(t.renderTimer):cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];d.selectiveDeepExtend(e,this.options,t)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var t=this;this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedraw===!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(function(){t._redraw(!1)},0):window.requestAnimationFrame(function(){t._redraw(!1)}))}},{key:"_redraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.allowRedraw===!0){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(e.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),t===!0&&e.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){var t=this.canvas.frame.canvas.getContext("2d");void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0),t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=20,a=this.canvas.DOMtoCanvas({x:-r,y:-r}),d=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+r,y:this.canvas.frame.canvas.clientHeight+r}),h={top:a.y,left:a.x,bottom:d.y,right:d.x +},l=0;l0&&void 0!==arguments[0]?arguments[0]:this.pixelRatio;this.initialized===!0&&(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=t&&1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&&(i=this.cameraState.scale*e),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(t.indexOf("%")!==-1||t.indexOf("px")!==-1)return t;if(t.indexOf("%")===-1)return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var t=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new d(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:d.DIRECTION_ALL}),h.onTouch(this.hammer,function(e){t.body.eventListeners.onTouch(e)}),this.hammer.on("tap",function(e){t.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",function(e){t.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",function(e){t.body.eventListeners.onHold(e)}),this.hammer.on("panstart",function(e){t.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",function(e){t.body.eventListeners.onDrag(e)}),this.hammer.on("panend",function(e){t.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",function(e){t.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("mousewheel",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",function(e){t.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",function(e){t.body.eventListeners.onContext(e)}),this.hammerFrame=new d(this.frame),h.onRelease(this.hammerFrame,function(e){t.body.eventListeners.onRelease(e)})}},{key:"setSize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.width,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.height;t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.frame.canvas.getContext("2d"),r=this.pixelRatio;return this.pixelRatio=(window.devicePixelRatio||1)/(s.webkitBackingStorePixelRatio||s.mozBackingStorePixelRatio||s.msBackingStorePixelRatio||s.oBackingStorePixelRatio||s.backingStorePixelRatio||1),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e?(this._getCameraState(r),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0):(this.frame.canvas.width==Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&this.frame.canvas.height==Math.round(this.frame.canvas.clientHeight*this.pixelRatio)||this._getCameraState(r),this.frame.canvas.width!=Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&(this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),i=!0),this.frame.canvas.height!=Math.round(this.frame.canvas.clientHeight*this.pixelRatio)&&(this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),i=!0)),i===!0&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:"_XconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}},{key:"DOMtoCanvas",value:function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}]),t}();e.default=u},function(t,e,i){if("undefined"!=typeof window){var o=i(159),n=window.Hammer||i(160);t.exports=o(n,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null;return function e(i,o){function n(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0};var o=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof o&&(e.srcEvent.stopPropagation=function(){o(),e.stopPropagation()}),e.firstTarget=t;for(var n=t;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a0?h._handlers[t]=o:(i.off(t,s),delete h._handlers[t]))}),h},h.emit=function(e,o){t=o.target,i.emit(e,o)},h.destroy=function(){var t=i.element.hammer,e=t.indexOf(h);e!==-1&&t.splice(e,1),t.length||delete i.element.hammer,h._handlers={},i.destroy()},h}})},function(t,e,i){var o;/*! Hammer.JS - v2.0.7 - 2016-04-22 * http://hammerjs.github.io/ * * Copyright (c) 2016 Jorik Tangelder; * Licensed under the MIT license */ -!function(n,s,r,a){function d(t,e,i){return setTimeout(f(t,i),e)}function h(t,e,i){return!!Array.isArray(t)&&(l(t,i[e],i),!0)}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function c(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&vt(o,i)}function f(t,e){return function(){return t.apply(e,arguments)}}function p(t,e){return typeof t==mt?t.apply(e?e[0]||a:a,e):t}function v(t,e){return t===a?e:t}function g(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function y(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function m(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function O(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=F(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,d=e.center=I(o);e.timeStamp=wt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=A(a,d),e.distance=R(a,d),P(i,e),e.offsetDirection=N(e.deltaX,e.deltaY);var h=z(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=h.x,e.overallVelocityY=h.y,e.overallVelocity=_t(h.x)>_t(h.y)?h.x:h.y,e.scale=r?H(r.pointers,o):1,e.rotation=r?j(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,B(i,e);var l=t.element;m(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==It&&s.eventType!==Nt||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function B(t,e){var i,o,n,s,r=t.lastInterval||e,d=e.timeStamp-r.timeStamp;if(e.eventType!=Rt&&(d>Ft||r.velocity===a)){var h=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,u=z(d,h,l);o=u.x,n=u.y,i=_t(u.x)>_t(u.y)?u.x:u.y,s=N(h,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function F(t){for(var e=[],i=0;i=_t(e)?t<0?jt:Ht:e<0?Lt:Wt}function R(t,e,i){i||(i=qt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function A(t,e,i){i||(i=qt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function j(t,e){return A(e[1],e[0],Gt)+A(t[1],t[0],Gt)}function H(t,e){return R(e[0],e[1],Gt)/R(t[0],t[1],Gt)}function L(){this.evEl=Kt,this.evWin=Zt,this.pressed=!1,E.apply(this,arguments)}function W(){this.evEl=$t,this.evWin=te,E.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Y(){this.evTarget=ie,this.evWin=oe,this.started=!1,E.apply(this,arguments)}function U(t,e){var i=k(t.touches),o=k(t.changedTouches);return e&(Nt|Rt)&&(i=x(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=se,this.targetIds={},E.apply(this,arguments)}function q(t,e){var i=k(t.touches),o=this.targetIds;if(e&(It|zt)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=k(t.changedTouches),a=[],d=this.target;if(s=i.filter(function(t){return m(t.target,d)}),e===It)for(n=0;n-1&&o.splice(t,1)};setTimeout(n,re)}}function Z(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,o=0;o-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;o<_e&&e(i.options.event+et(o)),e(i.options.event),t.additionalEvent&&e(t.additionalEvent),o>=_e&&e(i.options.event+et(o))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=xe)},canEmit:function(){for(var t=0;te.threshold&&n&e.direction},attrTest:function(t){return nt.prototype.attrTest.call(this,t)&&(this.state&me||!(this.state&me)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=it(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),c(rt,nt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[fe]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&me)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),c(at,tt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[ue]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(Nt|Rt)&&!n)this.reset();else if(t.eventType&It)this.reset(),this._timer=d(function(){this.state=we,this.tryEmit()},e.time,this);else if(t.eventType&Nt)return we;return xe},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===we&&(t&&t.eventType&Nt?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=wt(),this.manager.emit(this.options.event,this._input)))}}),c(dt,nt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[fe]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&me)}}),c(ht,nt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Yt|Ut,pointers:1},getTouchAction:function(){return st.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Yt|Ut)?e=t.overallVelocity:i&Yt?e=t.overallVelocityX:i&Ut&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&_t(e)>this.options.velocity&&t.eventType&Nt},emit:function(t){var e=it(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),c(lt,tt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ce]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distance0&&void 0!==arguments[0]?arguments[0]:{};this.options=t}},{key:"fit",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{nodes:[]},e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=void 0;if(void 0!==t.nodes&&0!==t.nodes.length||(t.nodes=this.body.nodeIndices),e===!0){var n=0;for(var s in this.body.nodes)if(this.body.nodes.hasOwnProperty(s)){var r=this.body.nodes[s];r.predefinedPosition===!0&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(t,!1);i=h.default.getRange(this.body.nodes,t.nodes);var a=this.body.nodeIndices.length;o=12.662/(a+7.4147)+.0964822;var d=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);o*=d}else{this.body.emitter.emit("_resizeNodes"),i=h.default.getRange(this.body.nodes,t.nodes);var l=1.1*Math.abs(i.maxX-i.minX),u=1.1*Math.abs(i.maxY-i.minY),c=this.canvas.frame.canvas.clientWidth/l,f=this.canvas.frame.canvas.clientHeight/u;o=c<=f?c:f}o>1?o=1:0===o&&(o=1);var p=h.default.findCenter(i),v={position:p,scale:o,animation:t.animation};this.moveTo(v)}},{key:"focus",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.getViewPosition()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=l.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(95),s=o(n),r=i(96),a=o(r),d=i(164),h=o(d),l=i(166),u=o(l),c=i(1),f=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new h.default(e,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("destroy",function(){clearTimeout(t.popupTimer),delete t.body.functions.getPointer})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];c.selectiveNotDeepExtend(e,this.options,t),c.mergeOptions(this.options,t,"keyboard"),t.tooltip&&(c.extend(this.options.tooltip,t.tooltip),t.tooltip.color&&(this.options.tooltip.color=c.parseColor(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(t){return{x:t.x-c.getAbsoluteLeft(this.canvas.frame.canvas),y:t.y-c.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(t){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var a=this.selectionHandler._getSelectedEdgeCount(),d=this.selectionHandler._getSelectedNodeCount(),h=this.selectionHandler.getSelection(),l=this._determineIfDifferent(s,h),u=l.nodesChanged,c=l.edgesChanged,f=!1;d-n>0?(this.selectionHandler._generateClickEvent("selectNode",e,t),r=!0,f=!0):u===!0&&d>0?(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),this.selectionHandler._generateClickEvent("selectNode",e,t),f=!0,r=!0):d-n<0&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),r=!0),a-o>0&&f===!1?(this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a>0&&c===!0?(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a-o<0&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"_determineIfDifferent",value:function(t,e){for(var i=!1,o=!1,n=0;n10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var d=this.canvas.canvasToDOM(o);this.drag.pointer.x=d.x,this.drag.pointer.y=d.y}this.body.emitter.emit("_requestRedraw"),i0&&(this.popupObj=d[l[l.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var f=this.body.edgeIndices,p=this.body.edges,v=void 0,g=[],y=0;y0&&(this.popupObj=p[g[g.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new u.default(this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0)){var o=this.selectionHandler.getNodeAt(t);i=void 0!==o&&o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e.default=f},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(95),s=o(n),r=i(96),a=o(r),d=(i(1),i(158)),h=i(161),l=i(165),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){o.activated=!0,o.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){o.activated=!1,o.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==o.keycharm&&o.keycharm.destroy()}),this.options={}}return(0,a.default)(t,[{key:"setOptions",value:function(t){void 0!==t&&(this.options=t,this.create())}},{key:"create",value:function(){this.options.navigationButtons===!0?this.iconsCreated===!1&&this.loadNavigationElements():this.iconsCreated===!0&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var t=0;t700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){var t=this.body.view.scale,e=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}},{key:"_zoomOut",value:function(){var t=this.body.view.scale,e=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}},{key:"configureKeyboardBindings",value:function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=l({container:window,preventDefault:!0}):this.keycharm=l({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",function(){t.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){t.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){t.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){t.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){t.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){t.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){t.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){t.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){t.unbindFromRedraw("_zoomOut")},"keyup")))}}]),t}();e.default=u},function(t,e,i){var o,n,s;!function(i,r){n=[],o=r,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,o=t&&t.container||window,n={},s={keydown:{},keyup:{}},r={};for(e=97;e<=122;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;e<=90;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;e<=9;e++)r[""+e]={code:48+e,shift:!1};for(e=1;e<=12;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;e<=9;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r.delete={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){h(t,"keydown")},d=function(t){h(t,"keyup")},h=function(t,e){if(void 0!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;nn-this.padding&&(a=!0),s=a?this.x-i:this.x,r=d?this.y-e:this.y}else r=this.y-e,r+e+this.padding>o&&(r=o-e-this.padding),rn&&(s=n-i-this.padding),s4&&void 0!==arguments[4]&&arguments[4],s=void 0;s=n===!0?{nodes:[],edges:[]}:this.getSelection(),s.pointer={DOM:{x:i.x,y:i.y},canvas:this.canvas.DOMtoCanvas(i)},s.event=e,void 0!==o&&(s.previousSelection=o),this.body.emitter.emit(t,s)}},{key:"selectObject",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.selectConnectedEdges;return void 0!==t&&(t instanceof h.default&&e===!0&&this._selectConnectedEdges(t),t.select(),this._addToSelection(t),!0)}},{key:"deselectObject",value:function(t){t.isSelected()===!0&&(t.selected=!1,this._removeFromSelection(t))}},{key:"_getAllNodesOverlappingWith",value:function(t){for(var e=[],i=this.body.nodes,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this._pointerToPositionObject(t),o=this._getAllNodesOverlappingWith(i);return o.length>0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this.canvas.DOMtoCanvas(t),o=10,n=null,s=this.body.edges,r=0;r1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{},i=void 0,o=void 0;if(!t||!t.nodes&&!t.edges)throw"Selection must be an object with nodes and/or edges properties";if((e.unselectAll||void 0===e.unselectAll)&&this.unselectAll(),t.nodes)for(i=0;i1&&void 0!==arguments[1])||arguments[1];if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({nodes:t},{highlightEdges:e})}},{key:"selectEdges",value:function(t){if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({edges:t})}},{key:"updateSelection",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.body.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.body.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}}]),t}();e.default=f},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(104),a=o(r),d=i(62),h=o(d),l=i(95),u=o(l),c=i(96),f=o(c),p=i(154),v=o(p),g=i(1),y=function(){function t(e){(0,u.default)(this,t),this.body=e,this.initialRandomSeed=Math.round(1e6*Math.random()),this.randomSeed=this.initialRandomSeed,this.setPhysics=!1,this.options={},this.optionsBackup={physics:{}},this.defaultOptions={randomSeed:void 0,improvedLayout:!0,hierarchical:{enabled:!1,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:"UD",sortMethod:"hubsize"}},g.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,f.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_dataChanged",function(){t.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",function(){t.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",function(){t.setupHierarchicalLayout()})}},{key:"setOptions",value:function(t,e){if(void 0!==t){var i=this.options.hierarchical.enabled;if(g.selectiveDeepExtend(["randomSeed","improvedLayout"],this.options,t),g.mergeOptions(this.options,t,"hierarchical"),void 0!==t.randomSeed&&(this.initialRandomSeed=t.randomSeed),this.options.hierarchical.enabled===!0)return i===!0&&this.body.emitter.emit("refresh",!0),"RL"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.options.hierarchical.levelSeparation>0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(e);if(i===!0)return this.body.emitter.emit("refresh"),g.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={enabled:void 0===this.optionsBackup.physics.enabled||this.optionsBackup.physics.enabled,solver:"hierarchicalRepulsion"},this.optionsBackup.physics.enabled=void 0===this.optionsBackup.physics.enabled||this.optionsBackup.physics.enabled,this.optionsBackup.physics.solver=this.optionsBackup.physics.solver||"barnesHut"):"object"===(0,h.default)(t.physics)?(this.optionsBackup.physics.enabled=void 0===t.physics.enabled||t.physics.enabled,this.optionsBackup.physics.solver=t.physics.solver||"barnesHut",t.physics.solver="hierarchicalRepulsion"):t.physics!==!1&&(this.optionsBackup.physics.solver="barnesHut",t.physics={solver:"hierarchicalRepulsion"});var e="horizontal";"RL"!==this.options.hierarchical.direction&&"LR"!==this.options.hierarchical.direction||(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:e}):(void 0!==t.edges.smooth.type&&"dynamic"!==t.edges.smooth.type&&(e=t.edges.smooth.type),this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled||t.edges.smooth.enabled,type:void 0===t.edges.smooth.type?"dynamic":t.edges.smooth.type,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0!==t.edges.smooth.forceDirection&&t.edges.smooth.forceDirection},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled||t.edges.smooth.enabled,type:e,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0!==t.edges.smooth.forceDirection&&t.edges.smooth.forceDirection}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0){this.randomSeed=this.initialRandomSeed;for(var e=0;es){for(var r=this.body.nodeIndices.length;this.body.nodeIndices.length>s;){n+=1;var a=this.body.nodeIndices.length;n%3===0?this.body.modules.clustering.clusterBridges():this.body.modules.clustering.clusterOutliers();var d=this.body.nodeIndices.length;if(a==d&&n%3!==0||n>o)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*r)})}this.body.modules.kamadaKawai.solve(this.body.nodeIndices,this.body.edgeIndices,!0),this._shiftToCenter();for(var h=70,l=0;l0){var t=void 0,e=void 0,i=!1,o=!0,n=!1;this.hierarchicalLevels={},this.lastNodeOnLevel={},this.hierarchicalChildrenReference={},this.hierarchicalParentReference={},this.hierarchicalTrees={},this.treeIndex=-1,this.distributionOrdering={},this.distributionIndex={},this.distributionOrderingPresence={};for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0===t.options.x&&void 0===t.options.y&&(o=!1),void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):n=!0);if(n===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");n===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():"directed"===this.options.hierarchical.sortMethod?this._determineLevelsDirected():"custom"===this.options.hierarchical.sortMethod&&this._determineLevelsCustomCallback()); -for(var s in this.body.nodes)this.body.nodes.hasOwnProperty(s)&&void 0===this.hierarchicalLevels[s]&&(this.hierarchicalLevels[s]=0);var r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(){var t=this,e=!1,i={},o=function(){for(var e=d(),i=0,o=0;o0)for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:1e9,o=1e9,n=1e9,s=1e9,r=-1e9;for(var d in e)if(e.hasOwnProperty(d)){var h=t.body.nodes[d],l=t.hierarchicalLevels[h.id],u=t._getPositionForHierarchy(h),c=t._getSpaceAroundNode(h,e),f=(0,a.default)(c,2),p=f[0],v=f[1];o=Math.min(p,o),n=Math.min(v,n),l<=i&&(s=Math.min(u,s),r=Math.max(u,r))}return[s,r,o,n]},u=function e(i){var o=t.hierarchicalLevels[i];if(t.hierarchicalChildrenReference[i]){var n=t.hierarchicalChildrenReference[i];if(n.length>0)for(var s=0;s1)for(var a=0;a2&&void 0!==arguments[2]&&arguments[2],s=t._getPositionForHierarchy(i),r=t._getPositionForHierarchy(o),d=Math.abs(r-s);if(d>t.options.hierarchical.nodeSpacing){var u={};u[i.id]=!0;var f={};f[o.id]=!0,h(i,u),h(o,f);var p=c(i,o),v=l(u,p),g=(0,a.default)(v,4),y=(g[0],g[1]),m=(g[2],g[3],l(f,p)),b=(0,a.default)(m,4),_=b[0],w=(b[1],b[2]),k=(b[3],Math.abs(y-_));if(k>t.options.hierarchical.nodeSpacing){var x=y-_+t.options.hierarchical.nodeSpacing;x<-w+t.options.hierarchical.nodeSpacing&&(x=-w+t.options.hierarchical.nodeSpacing),x<0&&(t._shiftBlock(o.id,x),e=!0,n===!0&&t._centerParent(o))}}},g=function(o,n){for(var s=n.id,r=n.edges,d=t.hierarchicalLevels[n.id],u=t.options.hierarchical.levelSeparation*t.options.hierarchical.levelSeparation,c={},f=[],p=0;p0?v=Math.min(p,f-t.options.hierarchical.nodeSpacing):p<0&&(v=-Math.min(-p,c-t.options.hierarchical.nodeSpacing)),0!=v&&(t._shiftBlock(n.id,v),e=!0)},w=function(i){var o=t._getPositionForHierarchy(n),s=t._getSpaceAroundNode(n),r=(0,a.default)(s,2),d=r[0],h=r[1],l=i-o,u=o;l>0?u=Math.min(o+(h-t.options.hierarchical.nodeSpacing),i):l<0&&(u=Math.max(o-(d-t.options.hierarchical.nodeSpacing),i)),u!==o&&(t._setPositionForHierarchy(n,u,void 0,!0),e=!0)},k=b(o,f);_(k),k=b(o,r),w(k)},y=function(i){var o=(0,s.default)(t.distributionOrdering);o=o.reverse();for(var n=0;n0)for(var h=0;h0&&Math.abs(y)0&&(a=this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing),this._setPositionForHierarchy(r,a,e),this._validataPositionAndContinue(r,e,a),o++}}}}},{key:"_placeBranchNodes",value:function(t,e){if(void 0!==this.hierarchicalChildrenReference[t]){for(var i=[],o=0;oe&&void 0===this.positionedNodes[s.id]))return;var a=void 0;a=0===n?this._getPositionForHierarchy(this.body.nodes[t]):this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing,this._setPositionForHierarchy(s,a,r),this._validataPositionAndContinue(s,r,a)}for(var d=1e9,h=-1e9,l=0;l0&&(e=this._getHubSize(),0!==e);)for(var o in this.body.nodes)if(this.body.nodes.hasOwnProperty(o)){var n=this.body.nodes[o];n.edges.length===e&&this._crawlNetwork(i,o)}}},{key:"_determineLevelsCustomCallback",value:function(){var t=this,e=1e5,i=function(t,e,i){},o=function(o,n,s){var r=t.hierarchicalLevels[o.id];void 0===r&&(t.hierarchicalLevels[o.id]=e);var a=i(v.default.cloneOptions(o,"node"),v.default.cloneOptions(n,"node"),v.default.cloneOptions(s,"edge"));t.hierarchicalLevels[n.id]=t.hierarchicalLevels[o.id]+a};this._crawlNetwork(o),this._setMinLevelToZero()}},{key:"_determineLevelsDirected",value:function(){var t=this,e=1e4,i=function(i,o,n){var s=t.hierarchicalLevels[i.id];void 0===s&&(t.hierarchicalLevels[i.id]=e),n.toId==o.id?t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]+1:t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]-1};this._crawlNetwork(i),this._setMinLevelToZero()}},{key:"_setMinLevelToZero",value:function(){var t=1e9;for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&void 0!==this.hierarchicalLevels[e]&&(t=Math.min(this.hierarchicalLevels[e],t));for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&void 0!==this.hierarchicalLevels[i]&&(this.hierarchicalLevels[i]-=t)}},{key:"_generateMap",value:function(){var t=this,e=function(e,i){if(t.hierarchicalLevels[i.id]>t.hierarchicalLevels[e.id]){var o=e.id,n=i.id;void 0===t.hierarchicalChildrenReference[o]&&(t.hierarchicalChildrenReference[o]=[]),t.hierarchicalChildrenReference[o].push(n),void 0===t.hierarchicalParentReference[n]&&(t.hierarchicalParentReference[n]=[]),t.hierarchicalParentReference[n].push(o)}};this._crawlNetwork(e)}},{key:"_crawlNetwork",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},i=arguments[1],o={},n=0,s=function i(n,s){if(void 0===o[n.id]){void 0===t.hierarchicalTrees[n.id]&&(t.hierarchicalTrees[n.id]=s,t.treeIndex=Math.max(s,t.treeIndex)),o[n.id]=!0;for(var r=void 0,a=0;a3&&void 0!==arguments[3]&&arguments[3];o!==!0&&(void 0===this.distributionOrdering[i]&&(this.distributionOrdering[i]=[],this.distributionOrderingPresence[i]={}),void 0===this.distributionOrderingPresence[i][t.id]&&(this.distributionOrdering[i].push(t),this.distributionIndex[t.id]=this.distributionOrdering[i].length-1),this.distributionOrderingPresence[i][t.id]=!0),"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x=e:t.y=e}},{key:"_getPositionForHierarchy",value:function(t){return"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x:t.y}},{key:"_sortNodeArray",value:function(t){t.length>1&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.sort(function(t,e){return t.x-e.x}):t.sort(function(t,e){return t.y-e.y}))}}]),t}();e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(82),a=o(r),d=i(62),h=o(d),l=i(95),u=o(l),c=i(96),f=o(c),p=i(1),v=i(158),g=i(161),y=function(){function t(e,i,o){var n=this;(0,u.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},p.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){n._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return(0,f.default)(t,[{key:"_restore",value:function(){this.inMode!==!1&&(this.options.initiallyActive===!0?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(t,e,i){void 0!==e&&(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&&("boolean"==typeof t?this.options.enabled=t:(this.options.enabled=!0,p.deepExtend(this.options,t)),this.options.initiallyActive===!0&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){this.editMode===!0?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},this.guiEnabled===!0){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var t=this.selectionHandler._getSelectedNodeCount(),e=this.selectionHandler._getSelectedEdgeCount(),i=t+e,o=this.options.locales[this.options.locale],n=!1;this.options.addNode!==!1&&(this._createAddNodeButton(o),n=!0),this.options.addEdge!==!1&&(n===!0?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===t&&"function"==typeof this.options.editNode?(n===!0?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===e&&0===t&&this.options.editEdge!==!1&&(n===!0?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(t>0&&this.options.deleteNode!==!1?(n===!0&&this._createSeperator(4),this._createDeleteButton(o)):0===t&&this.options.deleteEdge!==!1&&(n===!0&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addNode",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean();var e=this.selectionHandler._getSelectedNode();if(void 0!==e){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(e.isCluster!==!0){var i=p.deepExtend({},e.options,!1);if(i.x=e.x,i.y=e.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(e){null!==e&&void 0!==e&&"editNode"===t.inMode&&t.body.data.nodes.getDataSet().update(e),t.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addEdge",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",function(){}),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){var t=this;if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="editEdge","object"===(0,h.default)(this.options.editEdge)&&"function"==typeof this.options.editEdge.editWithoutDrag&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId)){var e=this.body.edges[this.edgeBeingEditedId];return void this._performEditEdge(e.from,e.to)}if(this.guiEnabled===!0){var i=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(i),this._createSeperator(),this._createDescription(i.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId?!function(){var e=t.body.edges[t.edgeBeingEditedId],i=t._getNewTargetNode(e.from.x,e.from.y),o=t._getNewTargetNode(e.to.x,e.to.y);t.temporaryIds.nodes.push(i.id),t.temporaryIds.nodes.push(o.id),t.body.nodes[i.id]=i,t.body.nodeIndices.push(i.id),t.body.nodes[o.id]=o,t.body.nodeIndices.push(o.id),t._temporaryBindUI("onTouch",t._controlNodeTouch.bind(t)),t._temporaryBindUI("onTap",function(){}),t._temporaryBindUI("onHold",function(){}),t._temporaryBindUI("onDragStart",t._controlNodeDragStart.bind(t)),t._temporaryBindUI("onDrag",t._controlNodeDrag.bind(t)),t._temporaryBindUI("onDragEnd",t._controlNodeDragEnd.bind(t)),t._temporaryBindUI("onMouseMove",function(){}),t._temporaryBindEvent("beforeDrawing",function(t){var n=e.edgeType.findBorderPositions(t);i.selected===!1&&(i.x=n.from.x,i.y=n.from.y),o.selected===!1&&(o.x=n.to.x,o.y=n.to.y)}),t.body.emitter.emit("_redraw")}():this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="delete";var e=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(e.length>0){for(var n=0;n0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode?(t.body.data.edges.getDataSet().remove(e.edges),t.body.data.nodes.getDataSet().remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar()):(t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=p.deepExtend({},this.options.controlNodeStyle);i.id="targetNode"+p.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e;var o=this.body.functions.createNode(i);return o.shape.boundingBox={left:t,right:t,top:e,bottom:e},o}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},p.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(p.recursiveDOMDelete(this.editModeDiv),p.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+t]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+t].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+t])}},{key:"_createAddNodeButton",value:function(t){var e=this._createButton("addNode","vis-button vis-add",t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(t){var e=this._createButton("addEdge","vis-button vis-connect",t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(t){var e=this._createButton("editNode","vis-button vis-edit",t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(t){var e=this._createButton("editEdge","vis-button vis-edit",t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(t){if(this.options.rtl)var e="vis-button vis-delete-rtl";else var e="vis-button vis-delete";var i=this._createButton("delete",e,t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(i),this._bindHammerToDiv(i,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(t){var e=this._createButton("back","vis-button vis-back",t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"vis-label";return this.manipulationDOM[t+"Div"]=document.createElement("div"),this.manipulationDOM[t+"Div"].className=e,this.manipulationDOM[t+"Label"]=document.createElement("div"),this.manipulationDOM[t+"Label"].className=o,this.manipulationDOM[t+"Label"].innerHTML=i,this.manipulationDOM[t+"Div"].appendChild(this.manipulationDOM[t+"Label"]),this.manipulationDOM[t+"Div"]}},{key:"_createDescription",value:function(t){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",t))}},{key:"_temporaryBindEvent",value:function(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}},{key:"_temporaryBindUI",value:function(t,e){if(void 0===this.body.eventListeners[t])throw new Error("This UI function does not exist. Typo? You tried: "+t+" possible are: "+(0,a.default)((0,s.default)(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}},{key:"_unbindTemporaryUIs",value:function(){for(var t in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(t)&&(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=p.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+p.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o, -y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(this.temporaryIds.nodes.indexOf(n[r])===-1){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:p.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.getDataSet().add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e,label:this.body.data.edges._data[this.edgeBeingEditedId].label},n=this.options.editEdge;if("object"===("undefined"==typeof n?"undefined":(0,h.default)(n))&&(n=n.editWithoutDrag),"function"==typeof n){if(2!==n.length)throw new Error("The function for edit does not support two arguments (data, callback)");n(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw"),i.showManipulatorToolbar()):(i.body.data.edges.getDataSet().update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(82),s=o(n),r=i(62),a=o(r),d=i(95),h=o(d),l=i(96),u=o(l),c=i(171),f=o(c),p=i(1),v=function(){function t(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,h.default)(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},p.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new f.default(n),this.wrapper=void 0}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===("undefined"==typeof t?"undefined":(0,a.default)(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),this.options.filter===!1&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):e!==!0&&e.indexOf(n)===-1||(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);this.options.showButton===!0&&!function(){var e=document.createElement("div");e.className="vis-configuration vis-config-button",e.innerHTML="generate options",e.onclick=function(){t._printOptions()},e.onmouseover=function(){e.className="vis-configuration vis-config-button hover"},e.onmouseout=function(){e.className="vis-configuration vis-config-button"},t.optionsContainer=document.createElement("div"),t.optionsContainer.className="vis-configuration vis-config-option-container",t.domElements.push(t.optionsContainer),t.domElements.push(e)}(),this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?o-1:0),s=1;s2&&void 0!==arguments[2]&&arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,i===!0?o.innerHTML=""+t+":":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&t.indexOf(e)!==-1&&(n=t.indexOf(e));for(var s=0;ss&&1!==s&&(a.max=Math.ceil(e*l),h=a.max,d="range increased"),a.value=e}else a.value=o;var u=document.createElement("input");u.className="vis-configuration vis-config-rangeinput",u.value=a.value;var c=this;a.onchange=function(){u.value=this.value,c._update(Number(this.value),i)},a.oninput=function(){u.value=this.value};var f=this._makeLabel(i[i.length-1],i),p=this._makeItem(i,f,a,u);""!==d&&this.popupHistory[p]!==h&&(this.popupHistory[p]=h,this._setupPopup(d,p))}},{key:"_setupPopup",value:function(t,e){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],d=p.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,d,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var h=this._getValue(d);if(a instanceof Array)this._handleArray(a,h,d);else if("string"==typeof a)this._makeTextInput(a,h,d);else if("boolean"==typeof a)this._makeCheckbox(a,h,d);else if(a instanceof Object){var l=!0;if(e.indexOf("physics")!==-1&&this.moduleOptions.physics.solver!==r&&(l=!1),l===!0)if(void 0!==a.enabled){var u=p.copyAndExtendArray(d,"enabled"),c=this._getValue(u);if(c===!0){var f=this._makeLabel(r,d,!0);this._makeItem(d,f),s=this._handleObject(a,d)||s}else this._makeCheckbox(a,c,d)}else{var v=this._makeLabel(r,d,!0);this._makeItem(d,v),s=this._handleObject(a,d)||s}}else console.error("dont know how to handle",a,r,d)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i;t="true"===t||t,t="false"!==t&&t;for(var n=0;nvar options = "+(0,s.default)(t,null,2)+""}},{key:"getOptions",value:function(){for(var t={},e=0;e0&&void 0!==arguments[0]?arguments[0]:1;(0,a.default)(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return(0,h.default)(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};if("string"==typeof t)return e[t]}},{key:"setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),c.isString(t)===!0){if(c.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(c.isValidRGBA(t)===!0){var r=t.substr(5).substr(0,t.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(c.isValidHex(t)===!0){var a=c.hexToRGB(t);i={r:a.r,g:a.g,b:a.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var d=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:d}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+(0,s.default)(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e===!0&&(this.previousColor=c.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e===!0&&(this.initialColor=c.extend({},t)),this.color=t;var i=c.RGBToHSV(t.r,t.g,t.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=c.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=c.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.color,e=c.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(t){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(t){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var i=this;this.opacityRange.onchange=function(){i._setOpacity(this.value)},this.opacityRange.oninput=function(){i._setOpacity(this.value)},this.brightnessRange.onchange=function(){i._setBrightness(this.value)},this.brightnessRange.oninput=function(){i._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new l(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),u.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var a=2*Math.PI/360,d=1/360,h=1/this.r,l=void 0;for(s=0;s<360;s++)for(r=0;r2&&void 0!==arguments[2]&&arguments[2],o=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(o),this._createK_matrix(o);for(var n=.01,r=1,a=0,d=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),h=5,l=1e9,u=0,c=0,f=0,p=0,v=0;l>n&&ar&&v=.1;)f=n[l++%s],f>h&&(f=h),c=Math.sqrt(f*f/(1+d*d)),c=r<0?-c:c,t+=c,e+=d*c,u===!0?this.lineTo(t,e):this.moveTo(t,e),h-=f,u=!u})},function(t,e){function i(t){if(t)return o(t)}function o(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;n=0;i--){var a=s[i];a.nodes||(a.nodes=[]),a.nodes.indexOf(n)===-1&&a.nodes.push(n)}e.attr&&(n.attr=h(n.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function f(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=h({},t.edge)),s.attr=h(s.attr||{},n),s}function p(){for(j=F.NULL,A="";" "===R||"\t"===R||"\n"===R||"\r"===R;)r();do{var t=!1;if("#"===R){for(var e=N-1;" "===z.charAt(e)||"\t"===z.charAt(e);)e--;if("\n"===z.charAt(e)||""===z.charAt(e)){for(;""!=R&&"\n"!=R;)r();t=!0}}if("/"===R&&"/"===a()){for(;""!=R&&"\n"!=R;)r();t=!0}if("/"===R&&"*"===a()){for(;""!=R;){if("*"===R&&"/"===a()){r(),r();break}r()}t=!0}for(;" "===R||"\t"===R||"\n"===R||"\r"===R;)r()}while(t);if(""===R)return void(j=F.DELIMITER);var i=R+a();if(I[i])return j=F.DELIMITER,A=i,r(),void r();if(I[R])return j=F.DELIMITER,A=R,void r();if(d(R)||"-"===R){for(A+=R,r();d(R);)A+=R,r();return"false"===A?A=!1:"true"===A?A=!0:isNaN(Number(A))||(A=Number(A)),void(j=F.IDENTIFIER)}if('"'===R){for(r();""!=R&&('"'!=R||'"'===R&&'"'===a());)A+=R,'"'===R&&r(),r();if('"'!=R)throw x('End of string " expected');return r(),void(j=F.IDENTIFIER)}for(j=F.UNKNOWN;""!=R;)A+=R,r();throw new SyntaxError('Syntax error in part "'+O(A,30)+'"')}function v(){var t={};if(s(),p(),"strict"===A&&(t.strict=!0,p()),"graph"!==A&&"digraph"!==A||(t.type=A,p()),j===F.IDENTIFIER&&(t.id=A,p()),"{"!=A)throw x("Angle bracket { expected");if(p(),g(t),"}"!=A)throw x("Angle bracket } expected");if(p(),""!==A)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function g(t){for(;""!==A&&"}"!=A;)y(t),";"===A&&p()}function y(t){var e=m(t);if(e)return void w(t,e);var i=b(t);if(!i){if(j!=F.IDENTIFIER)throw x("Identifier expected");var o=A;if(p(),"="===A){if(p(),j!=F.IDENTIFIER)throw x("Identifier expected");t[o]=A,p()}else _(t,o)}}function m(t){var e=null;if("subgraph"===A&&(e={},e.type="subgraph",p(),j===F.IDENTIFIER&&(e.id=A,p())),"{"===A){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,g(e),"}"!=A)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function b(t){return"node"===A?(p(),t.node=k(),"node"):"edge"===A?(p(),t.edge=k(),"edge"):"graph"===A?(p(),t.graph=k(),"graph"):null}function _(t,e){var i={id:e},o=k();o&&(i.attr=o),u(t,i),w(t,e)}function w(t,e){for(;"->"===A||"--"===A;){var i,o=A;p();var n=m(t);if(n)i=n;else{if(j!=F.IDENTIFIER)throw x("Identifier or subgraph expected");i=A,u(t,{id:i}),p()}var s=k(),r=f(t,e,i,o,s);c(t,r),e=i}}function k(){for(var t=null;"["===A;){for(p(),t={};""!==A&&"]"!=A;){if(j!=F.IDENTIFIER)throw x("Attribute name expected");var e=A;if(p(),"="!=A)throw x("Equal sign = expected");if(p(),j!=F.IDENTIFIER)throw x("Attribute value expected");var i=A;l(t,e,i),p(),","==A&&p()}if("]"!=A)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+O(A,30)+'" (char '+N+")")}function O(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r":!0,"--":!0},z="",N=0,R="",A="",j=F.NULL,H=/[a-zA-Z_0-9.:#]/;e.parseDOT=n,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;a\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function c(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&vt(o,i)}function f(t,e){return function(){return t.apply(e,arguments)}}function p(t,e){return typeof t==mt?t.apply(e?e[0]||a:a,e):t}function v(t,e){return t===a?e:t}function g(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function y(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function m(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function O(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=F(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,d=e.center=I(o);e.timeStamp=wt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=A(a,d),e.distance=R(a,d),P(i,e),e.offsetDirection=N(e.deltaX,e.deltaY);var h=z(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=h.x,e.overallVelocityY=h.y,e.overallVelocity=_t(h.x)>_t(h.y)?h.x:h.y,e.scale=r?H(r.pointers,o):1,e.rotation=r?j(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,B(i,e);var l=t.element;m(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==It&&s.eventType!==Nt||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function B(t,e){var i,o,n,s,r=t.lastInterval||e,d=e.timeStamp-r.timeStamp;if(e.eventType!=Rt&&(d>Ft||r.velocity===a)){var h=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,u=z(d,h,l);o=u.x,n=u.y,i=_t(u.x)>_t(u.y)?u.x:u.y,s=N(h,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function F(t){for(var e=[],i=0;i=_t(e)?t<0?jt:Ht:e<0?Lt:Wt}function R(t,e,i){i||(i=qt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function A(t,e,i){i||(i=qt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function j(t,e){return A(e[1],e[0],Gt)+A(t[1],t[0],Gt)}function H(t,e){return R(e[0],e[1],Gt)/R(t[0],t[1],Gt)}function L(){this.evEl=Kt,this.evWin=Zt,this.pressed=!1,E.apply(this,arguments)}function W(){this.evEl=Jt,this.evWin=te,E.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Y(){this.evTarget=ie,this.evWin=oe,this.started=!1,E.apply(this,arguments)}function U(t,e){var i=k(t.touches),o=k(t.changedTouches);return e&(Nt|Rt)&&(i=x(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=se,this.targetIds={},E.apply(this,arguments)}function q(t,e){var i=k(t.touches),o=this.targetIds;if(e&(It|zt)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=k(t.changedTouches),a=[],d=this.target;if(s=i.filter(function(t){return m(t.target,d)}),e===It)for(n=0;n-1&&o.splice(t,1)};setTimeout(n,re)}}function Z(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,o=0;o-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;o<_e&&e(i.options.event+et(o)),e(i.options.event),t.additionalEvent&&e(t.additionalEvent),o>=_e&&e(i.options.event+et(o))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=xe)},canEmit:function(){for(var t=0;te.threshold&&n&e.direction},attrTest:function(t){return nt.prototype.attrTest.call(this,t)&&(this.state&me||!(this.state&me)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=it(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),c(rt,nt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[fe]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&me)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),c(at,tt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[ue]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(Nt|Rt)&&!n)this.reset();else if(t.eventType&It)this.reset(),this._timer=d(function(){this.state=we,this.tryEmit()},e.time,this);else if(t.eventType&Nt)return we;return xe},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===we&&(t&&t.eventType&Nt?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=wt(),this.manager.emit(this.options.event,this._input)))}}),c(dt,nt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[fe]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&me)}}),c(ht,nt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Yt|Ut,pointers:1},getTouchAction:function(){return st.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Yt|Ut)?e=t.overallVelocity:i&Yt?e=t.overallVelocityX:i&Ut&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&_t(e)>this.options.velocity&&t.eventType&Nt},emit:function(t){var e=it(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),c(lt,tt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ce]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distance0&&void 0!==arguments[0]?arguments[0]:{};this.options=t}},{key:"fit",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{nodes:[]},e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=void 0;if(void 0!==t.nodes&&0!==t.nodes.length||(t.nodes=this.body.nodeIndices),e===!0){var n=0;for(var s in this.body.nodes)if(this.body.nodes.hasOwnProperty(s)){var r=this.body.nodes[s];r.predefinedPosition===!0&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(t,!1);i=h.default.getRange(this.body.nodes,t.nodes);var a=this.body.nodeIndices.length;o=12.662/(a+7.4147)+.0964822;var d=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);o*=d}else{this.body.emitter.emit("_resizeNodes"),i=h.default.getRange(this.body.nodes,t.nodes);var l=1.1*Math.abs(i.maxX-i.minX),u=1.1*Math.abs(i.maxY-i.minY),c=this.canvas.frame.canvas.clientWidth/l,f=this.canvas.frame.canvas.clientHeight/u;o=c<=f?c:f}o>1?o=1:0===o&&(o=1);var p=h.default.findCenter(i),v={position:p,scale:o,animation:t.animation};this.moveTo(v)}},{key:"focus",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.getViewPosition()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=l.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(95),s=o(n),r=i(96),a=o(r),d=i(164),h=o(d),l=i(166),u=o(l),c=i(1),f=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new h.default(e,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("destroy",function(){clearTimeout(t.popupTimer),delete t.body.functions.getPointer})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];c.selectiveNotDeepExtend(e,this.options,t),c.mergeOptions(this.options,t,"keyboard"),t.tooltip&&(c.extend(this.options.tooltip,t.tooltip),t.tooltip.color&&(this.options.tooltip.color=c.parseColor(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(t){return{x:t.x-c.getAbsoluteLeft(this.canvas.frame.canvas),y:t.y-c.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(t){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var a=this.selectionHandler._getSelectedEdgeCount(),d=this.selectionHandler._getSelectedNodeCount(),h=this.selectionHandler.getSelection(),l=this._determineIfDifferent(s,h),u=l.nodesChanged,c=l.edgesChanged,f=!1;d-n>0?(this.selectionHandler._generateClickEvent("selectNode",e,t),r=!0,f=!0):u===!0&&d>0?(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),this.selectionHandler._generateClickEvent("selectNode",e,t),f=!0,r=!0):d-n<0&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),r=!0),a-o>0&&f===!1?(this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a>0&&c===!0?(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a-o<0&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"_determineIfDifferent",value:function(t,e){for(var i=!1,o=!1,n=0;n10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var d=this.canvas.canvasToDOM(o);this.drag.pointer.x=d.x,this.drag.pointer.y=d.y}this.body.emitter.emit("_requestRedraw"),i0&&(this.popupObj=d[l[l.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var f=this.body.edgeIndices,p=this.body.edges,v=void 0,g=[],y=0;y0&&(this.popupObj=p[g[g.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new u.default(this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0)){var o=this.selectionHandler.getNodeAt(t);i=void 0!==o&&o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e.default=f},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(95),s=o(n),r=i(96),a=o(r),d=(i(1),i(158)),h=i(161),l=i(165),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){o.activated=!0,o.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){o.activated=!1,o.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==o.keycharm&&o.keycharm.destroy()}),this.options={}}return(0,a.default)(t,[{key:"setOptions",value:function(t){void 0!==t&&(this.options=t,this.create())}},{key:"create",value:function(){this.options.navigationButtons===!0?this.iconsCreated===!1&&this.loadNavigationElements():this.iconsCreated===!0&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var t=0;t700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){var t=this.body.view.scale,e=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}},{key:"_zoomOut",value:function(){var t=this.body.view.scale,e=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}},{key:"configureKeyboardBindings",value:function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=l({container:window,preventDefault:!0}):this.keycharm=l({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",function(){t.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){t.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){t.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){t.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){t.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){t.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){t.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){t.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){t.unbindFromRedraw("_zoomOut")},"keyup")))}}]),t}();e.default=u},function(t,e,i){var o,n,s;!function(i,r){n=[],o=r,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,o=t&&t.container||window,n={},s={keydown:{},keyup:{}},r={};for(e=97;e<=122;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;e<=90;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;e<=9;e++)r[""+e]={code:48+e,shift:!1};for(e=1;e<=12;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;e<=9;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r.delete={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){h(t,"keydown")},d=function(t){h(t,"keyup")},h=function(t,e){if(void 0!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;nn-this.padding&&(a=!0),s=a?this.x-i:this.x,r=d?this.y-e:this.y}else r=this.y-e,r+e+this.padding>o&&(r=o-e-this.padding),rn&&(s=n-i-this.padding),s4&&void 0!==arguments[4]&&arguments[4],s=void 0;s=n===!0?{nodes:[],edges:[]}:this.getSelection(),s.pointer={DOM:{x:i.x,y:i.y},canvas:this.canvas.DOMtoCanvas(i)},s.event=e,void 0!==o&&(s.previousSelection=o),this.body.emitter.emit(t,s)}},{key:"selectObject",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.selectConnectedEdges;return void 0!==t&&(t instanceof h.default&&e===!0&&this._selectConnectedEdges(t),t.select(),this._addToSelection(t),!0)}},{key:"deselectObject",value:function(t){t.isSelected()===!0&&(t.selected=!1,this._removeFromSelection(t))}},{key:"_getAllNodesOverlappingWith",value:function(t){for(var e=[],i=this.body.nodes,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this._pointerToPositionObject(t),o=this._getAllNodesOverlappingWith(i);return o.length>0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this.canvas.DOMtoCanvas(t),o=10,n=null,s=this.body.edges,r=0;r1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{},i=void 0,o=void 0;if(!t||!t.nodes&&!t.edges)throw"Selection must be an object with nodes and/or edges properties";if((e.unselectAll||void 0===e.unselectAll)&&this.unselectAll(),t.nodes)for(i=0;i1&&void 0!==arguments[1])||arguments[1];if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({nodes:t},{highlightEdges:e})}},{key:"selectEdges",value:function(t){if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({edges:t})}},{key:"updateSelection",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.body.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.body.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}}]),t}();e.default=f},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(104),a=o(r),d=i(62),h=o(d),l=i(95),u=o(l),c=i(96),f=o(c),p=i(154),v=o(p),g=i(1),y=function(){function t(e){(0,u.default)(this,t),this.body=e,this.initialRandomSeed=Math.round(1e6*Math.random()),this.randomSeed=this.initialRandomSeed,this.setPhysics=!1,this.options={},this.optionsBackup={physics:{}},this.defaultOptions={randomSeed:void 0,improvedLayout:!0,hierarchical:{enabled:!1,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:"UD",sortMethod:"hubsize"}},g.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,f.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_dataChanged",function(){t.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",function(){t.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",function(){t.setupHierarchicalLayout()})}},{key:"setOptions",value:function(t,e){if(void 0!==t){var i=this.options.hierarchical.enabled;if(g.selectiveDeepExtend(["randomSeed","improvedLayout"],this.options,t),g.mergeOptions(this.options,t,"hierarchical"),void 0!==t.randomSeed&&(this.initialRandomSeed=t.randomSeed),this.options.hierarchical.enabled===!0)return i===!0&&this.body.emitter.emit("refresh",!0),"RL"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.options.hierarchical.levelSeparation>0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(e);if(i===!0)return this.body.emitter.emit("refresh"),g.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={enabled:void 0===this.optionsBackup.physics.enabled||this.optionsBackup.physics.enabled,solver:"hierarchicalRepulsion"},this.optionsBackup.physics.enabled=void 0===this.optionsBackup.physics.enabled||this.optionsBackup.physics.enabled,this.optionsBackup.physics.solver=this.optionsBackup.physics.solver||"barnesHut"):"object"===(0,h.default)(t.physics)?(this.optionsBackup.physics.enabled=void 0===t.physics.enabled||t.physics.enabled,this.optionsBackup.physics.solver=t.physics.solver||"barnesHut",t.physics.solver="hierarchicalRepulsion"):t.physics!==!1&&(this.optionsBackup.physics.solver="barnesHut",t.physics={solver:"hierarchicalRepulsion"});var e="horizontal";"RL"!==this.options.hierarchical.direction&&"LR"!==this.options.hierarchical.direction||(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:e}):(void 0!==t.edges.smooth.type&&"dynamic"!==t.edges.smooth.type&&(e=t.edges.smooth.type),this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled||t.edges.smooth.enabled,type:void 0===t.edges.smooth.type?"dynamic":t.edges.smooth.type,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0!==t.edges.smooth.forceDirection&&t.edges.smooth.forceDirection},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled||t.edges.smooth.enabled,type:e,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0!==t.edges.smooth.forceDirection&&t.edges.smooth.forceDirection}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0){this.randomSeed=this.initialRandomSeed;for(var e=0;es){for(var r=this.body.nodeIndices.length;this.body.nodeIndices.length>s;){n+=1;var a=this.body.nodeIndices.length;n%3===0?this.body.modules.clustering.clusterBridges():this.body.modules.clustering.clusterOutliers();var d=this.body.nodeIndices.length;if(a==d&&n%3!==0||n>o)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*r)})}this.body.modules.kamadaKawai.solve(this.body.nodeIndices,this.body.edgeIndices,!0),this._shiftToCenter();for(var h=70,l=0;l0){var t=void 0,e=void 0,i=!1,o=!0,n=!1;this.hierarchicalLevels={},this.lastNodeOnLevel={},this.hierarchicalChildrenReference={},this.hierarchicalParentReference={},this.hierarchicalTrees={},this.treeIndex=-1,this.distributionOrdering={},this.distributionIndex={},this.distributionOrderingPresence={};for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0===t.options.x&&void 0===t.options.y&&(o=!1),void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):n=!0);if(n===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");n===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():"directed"===this.options.hierarchical.sortMethod?this._determineLevelsDirected():"custom"===this.options.hierarchical.sortMethod&&this._determineLevelsCustomCallback()); +for(var s in this.body.nodes)this.body.nodes.hasOwnProperty(s)&&void 0===this.hierarchicalLevels[s]&&(this.hierarchicalLevels[s]=0);var r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(){var t=this,e=!1,i={},o=function(){for(var e=d(),i=0,o=0;o0)for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:1e9,o=1e9,n=1e9,s=1e9,r=-1e9;for(var d in e)if(e.hasOwnProperty(d)){var h=t.body.nodes[d],l=t.hierarchicalLevels[h.id],u=t._getPositionForHierarchy(h),c=t._getSpaceAroundNode(h,e),f=(0,a.default)(c,2),p=f[0],v=f[1];o=Math.min(p,o),n=Math.min(v,n),l<=i&&(s=Math.min(u,s),r=Math.max(u,r))}return[s,r,o,n]},u=function(e){var i={},o=function e(o){if(void 0!==i[o])return i[o];var n=t.hierarchicalLevels[o];if(t.hierarchicalChildrenReference[o]){var s=t.hierarchicalChildrenReference[o];if(s.length>0)for(var r=0;r1)for(var a=0;a2&&void 0!==arguments[2]&&arguments[2],s=t._getPositionForHierarchy(i),r=t._getPositionForHierarchy(o),d=Math.abs(r-s);if(d>t.options.hierarchical.nodeSpacing){var u={},f={};h(i,u),h(o,f);var p=c(i,o),v=l(u,p),g=(0,a.default)(v,4),y=(g[0],g[1]),m=(g[2],g[3],l(f,p)),b=(0,a.default)(m,4),_=b[0],w=(b[1],b[2]),k=(b[3],Math.abs(y-_));if(k>t.options.hierarchical.nodeSpacing){var x=y-_+t.options.hierarchical.nodeSpacing;x<-w+t.options.hierarchical.nodeSpacing&&(x=-w+t.options.hierarchical.nodeSpacing),x<0&&(t._shiftBlock(o.id,x),e=!0,n===!0&&t._centerParent(o))}}},g=function(o,n){for(var s=n.id,r=n.edges,d=t.hierarchicalLevels[n.id],u=t.options.hierarchical.levelSeparation*t.options.hierarchical.levelSeparation,c={},f=[],p=0;p0?v=Math.min(p,f-t.options.hierarchical.nodeSpacing):p<0&&(v=-Math.min(-p,c-t.options.hierarchical.nodeSpacing)),0!=v&&(t._shiftBlock(n.id,v),e=!0)},w=function(i){var o=t._getPositionForHierarchy(n),s=t._getSpaceAroundNode(n),r=(0,a.default)(s,2),d=r[0],h=r[1],l=i-o,u=o;l>0?u=Math.min(o+(h-t.options.hierarchical.nodeSpacing),i):l<0&&(u=Math.max(o-(d-t.options.hierarchical.nodeSpacing),i)),u!==o&&(t._setPositionForHierarchy(n,u,void 0,!0),e=!0)},k=b(o,f);_(k),k=b(o,r),w(k)},y=function(i){var o=(0,s.default)(t.distributionOrdering);o=o.reverse();for(var n=0;n0)for(var h=0;h0&&Math.abs(y)0&&(a=this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing),this._setPositionForHierarchy(r,a,e),this._validataPositionAndContinue(r,e,a),o++}}}}},{key:"_placeBranchNodes",value:function(t,e){if(void 0!==this.hierarchicalChildrenReference[t]){for(var i=[],o=0;oe&&void 0===this.positionedNodes[s.id]))return;var a=void 0;a=0===n?this._getPositionForHierarchy(this.body.nodes[t]):this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing,this._setPositionForHierarchy(s,a,r),this._validataPositionAndContinue(s,r,a)}for(var d=1e9,h=-1e9,l=0;l0&&(e=this._getHubSize(),0!==e);)for(var o in this.body.nodes)if(this.body.nodes.hasOwnProperty(o)){var n=this.body.nodes[o];n.edges.length===e&&this._crawlNetwork(i,o)}}},{key:"_determineLevelsCustomCallback",value:function(){var t=this,e=1e5,i=function(t,e,i){},o=function(o,n,s){var r=t.hierarchicalLevels[o.id];void 0===r&&(t.hierarchicalLevels[o.id]=e);var a=i(v.default.cloneOptions(o,"node"),v.default.cloneOptions(n,"node"),v.default.cloneOptions(s,"edge"));t.hierarchicalLevels[n.id]=t.hierarchicalLevels[o.id]+a};this._crawlNetwork(o),this._setMinLevelToZero()}},{key:"_determineLevelsDirected",value:function(){var t=this,e=1e4,i=function(i,o,n){var s=t.hierarchicalLevels[i.id];void 0===s&&(t.hierarchicalLevels[i.id]=e),n.toId==o.id?t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]+1:t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]-1};this._crawlNetwork(i),this._setMinLevelToZero()}},{key:"_setMinLevelToZero",value:function(){var t=1e9;for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&void 0!==this.hierarchicalLevels[e]&&(t=Math.min(this.hierarchicalLevels[e],t));for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&void 0!==this.hierarchicalLevels[i]&&(this.hierarchicalLevels[i]-=t)}},{key:"_generateMap",value:function(){var t=this,e=function(e,i){if(t.hierarchicalLevels[i.id]>t.hierarchicalLevels[e.id]){var o=e.id,n=i.id;void 0===t.hierarchicalChildrenReference[o]&&(t.hierarchicalChildrenReference[o]=[]),t.hierarchicalChildrenReference[o].push(n),void 0===t.hierarchicalParentReference[n]&&(t.hierarchicalParentReference[n]=[]),t.hierarchicalParentReference[n].push(o)}};this._crawlNetwork(e)}},{key:"_crawlNetwork",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},i=arguments[1],o={},n=0,s=function i(n,s){if(void 0===o[n.id]){void 0===t.hierarchicalTrees[n.id]&&(t.hierarchicalTrees[n.id]=s,t.treeIndex=Math.max(s,t.treeIndex)),o[n.id]=!0;for(var r=void 0,a=0;a3&&void 0!==arguments[3]&&arguments[3];o!==!0&&(void 0===this.distributionOrdering[i]&&(this.distributionOrdering[i]=[],this.distributionOrderingPresence[i]={}),void 0===this.distributionOrderingPresence[i][t.id]&&(this.distributionOrdering[i].push(t),this.distributionIndex[t.id]=this.distributionOrdering[i].length-1),this.distributionOrderingPresence[i][t.id]=!0),"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x=e:t.y=e}},{key:"_getPositionForHierarchy",value:function(t){return"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x:t.y}},{key:"_sortNodeArray",value:function(t){t.length>1&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.sort(function(t,e){return t.x-e.x}):t.sort(function(t,e){return t.y-e.y}))}}]),t}();e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(89),a=o(r),d=i(62),h=o(d),l=i(95),u=o(l),c=i(96),f=o(c),p=i(1),v=i(158),g=i(161),y=function(){function t(e,i,o){var n=this;(0,u.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},p.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){n._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return(0,f.default)(t,[{key:"_restore",value:function(){this.inMode!==!1&&(this.options.initiallyActive===!0?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(t,e,i){void 0!==e&&(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&&("boolean"==typeof t?this.options.enabled=t:(this.options.enabled=!0,p.deepExtend(this.options,t)),this.options.initiallyActive===!0&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){this.editMode===!0?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},this.guiEnabled===!0){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var t=this.selectionHandler._getSelectedNodeCount(),e=this.selectionHandler._getSelectedEdgeCount(),i=t+e,o=this.options.locales[this.options.locale],n=!1;this.options.addNode!==!1&&(this._createAddNodeButton(o),n=!0),this.options.addEdge!==!1&&(n===!0?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===t&&"function"==typeof this.options.editNode?(n===!0?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===e&&0===t&&this.options.editEdge!==!1&&(n===!0?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(t>0&&this.options.deleteNode!==!1?(n===!0&&this._createSeperator(4),this._createDeleteButton(o)):0===t&&this.options.deleteEdge!==!1&&(n===!0&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addNode",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean();var e=this.selectionHandler._getSelectedNode();if(void 0!==e){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(e.isCluster!==!0){var i=p.deepExtend({},e.options,!1);if(i.x=e.x,i.y=e.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(e){null!==e&&void 0!==e&&"editNode"===t.inMode&&t.body.data.nodes.getDataSet().update(e),t.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addEdge",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",function(){}),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="editEdge","object"===(0,h.default)(this.options.editEdge)&&"function"==typeof this.options.editEdge.editWithoutDrag&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId)){var t=this.body.edges[this.edgeBeingEditedId];return void this._performEditEdge(t.from,t.to)}if(this.guiEnabled===!0){var e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}if(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId){var i=this.body.edges[this.edgeBeingEditedId],o=this._getNewTargetNode(i.from.x,i.from.y),n=this._getNewTargetNode(i.to.x,i.to.y);this.temporaryIds.nodes.push(o.id),this.temporaryIds.nodes.push(n.id),this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id),this.body.nodes[n.id]=n,this.body.nodeIndices.push(n.id),this._temporaryBindUI("onTouch",this._controlNodeTouch.bind(this)),this._temporaryBindUI("onTap",function(){}),this._temporaryBindUI("onHold",function(){}),this._temporaryBindUI("onDragStart",this._controlNodeDragStart.bind(this)),this._temporaryBindUI("onDrag",this._controlNodeDrag.bind(this)),this._temporaryBindUI("onDragEnd",this._controlNodeDragEnd.bind(this)),this._temporaryBindUI("onMouseMove",function(){}),this._temporaryBindEvent("beforeDrawing",function(t){var e=i.edgeType.findBorderPositions(t);o.selected===!1&&(o.x=e.from.x,o.y=e.from.y),n.selected===!1&&(n.x=e.to.x,n.y=e.to.y)}),this.body.emitter.emit("_redraw")}else this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="delete";var e=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(e.length>0){for(var n=0;n0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode?(t.body.data.edges.getDataSet().remove(e.edges),t.body.data.nodes.getDataSet().remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar()):(t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=p.deepExtend({},this.options.controlNodeStyle);i.id="targetNode"+p.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e;var o=this.body.functions.createNode(i);return o.shape.boundingBox={left:t,right:t,top:e,bottom:e},o}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},p.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(p.recursiveDOMDelete(this.editModeDiv),p.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+t]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+t].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+t])}},{key:"_createAddNodeButton",value:function(t){var e=this._createButton("addNode","vis-button vis-add",t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(t){var e=this._createButton("addEdge","vis-button vis-connect",t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(t){var e=this._createButton("editNode","vis-button vis-edit",t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(t){var e=this._createButton("editEdge","vis-button vis-edit",t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(t){if(this.options.rtl)var e="vis-button vis-delete-rtl";else var e="vis-button vis-delete";var i=this._createButton("delete",e,t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(i),this._bindHammerToDiv(i,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(t){var e=this._createButton("back","vis-button vis-back",t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"vis-label";return this.manipulationDOM[t+"Div"]=document.createElement("div"),this.manipulationDOM[t+"Div"].className=e,this.manipulationDOM[t+"Label"]=document.createElement("div"),this.manipulationDOM[t+"Label"].className=o,this.manipulationDOM[t+"Label"].innerHTML=i,this.manipulationDOM[t+"Div"].appendChild(this.manipulationDOM[t+"Label"]),this.manipulationDOM[t+"Div"]}},{key:"_createDescription",value:function(t){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",t))}},{key:"_temporaryBindEvent",value:function(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}},{key:"_temporaryBindUI",value:function(t,e){if(void 0===this.body.eventListeners[t])throw new Error("This UI function does not exist. Typo? You tried: "+t+" possible are: "+(0,a.default)((0,s.default)(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}},{key:"_unbindTemporaryUIs",value:function(){for(var t in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(t)&&(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=p.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+p.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y), +this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(this.temporaryIds.nodes.indexOf(n[r])===-1){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:p.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.getDataSet().add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e,label:this.body.data.edges._data[this.edgeBeingEditedId].label},n=this.options.editEdge;if("object"===("undefined"==typeof n?"undefined":(0,h.default)(n))&&(n=n.editWithoutDrag),"function"==typeof n){if(2!==n.length)throw new Error("The function for edit does not support two arguments (data, callback)");n(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw"),i.showManipulatorToolbar()):(i.body.data.edges.getDataSet().update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(89),s=o(n),r=i(62),a=o(r),d=i(95),h=o(d),l=i(96),u=o(l),c=i(171),f=o(c),p=i(1),v=function(){function t(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,h.default)(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},p.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new f.default(n),this.wrapper=void 0}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===("undefined"==typeof t?"undefined":(0,a.default)(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),this.options.filter===!1&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):e!==!0&&e.indexOf(n)===-1||(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);if(this.options.showButton===!0){var s=document.createElement("div");s.className="vis-configuration vis-config-button",s.innerHTML="generate options",s.onclick=function(){t._printOptions()},s.onmouseover=function(){s.className="vis-configuration vis-config-button hover"},s.onmouseout=function(){s.className="vis-configuration vis-config-button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-configuration vis-config-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(s)}this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?i-1:0),n=1;n2&&void 0!==arguments[2]&&arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,i===!0?o.innerHTML=""+t+":":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&t.indexOf(e)!==-1&&(n=t.indexOf(e));for(var s=0;ss&&1!==s&&(a.max=Math.ceil(e*l),h=a.max,d="range increased"),a.value=e}else a.value=o;var u=document.createElement("input");u.className="vis-configuration vis-config-rangeinput",u.value=a.value;var c=this;a.onchange=function(){u.value=this.value,c._update(Number(this.value),i)},a.oninput=function(){u.value=this.value};var f=this._makeLabel(i[i.length-1],i),p=this._makeItem(i,f,a,u);""!==d&&this.popupHistory[p]!==h&&(this.popupHistory[p]=h,this._setupPopup(d,p))}},{key:"_setupPopup",value:function(t,e){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],d=p.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,d,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var h=this._getValue(d);if(a instanceof Array)this._handleArray(a,h,d);else if("string"==typeof a)this._makeTextInput(a,h,d);else if("boolean"==typeof a)this._makeCheckbox(a,h,d);else if(a instanceof Object){var l=!0;if(e.indexOf("physics")!==-1&&this.moduleOptions.physics.solver!==r&&(l=!1),l===!0)if(void 0!==a.enabled){var u=p.copyAndExtendArray(d,"enabled"),c=this._getValue(u);if(c===!0){var f=this._makeLabel(r,d,!0);this._makeItem(d,f),s=this._handleObject(a,d)||s}else this._makeCheckbox(a,c,d)}else{var v=this._makeLabel(r,d,!0);this._makeItem(d,v),s=this._handleObject(a,d)||s}}else console.error("dont know how to handle",a,r,d)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i;t="true"===t||t,t="false"!==t&&t;for(var n=0;nvar options = "+(0,s.default)(t,null,2)+""}},{key:"getOptions",value:function(){for(var t={},e=0;e0&&void 0!==arguments[0]?arguments[0]:1;(0,a.default)(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return(0,h.default)(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};if("string"==typeof t)return e[t]}},{key:"setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),c.isString(t)===!0){if(c.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(c.isValidRGBA(t)===!0){var r=t.substr(5).substr(0,t.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(c.isValidHex(t)===!0){var a=c.hexToRGB(t);i={r:a.r,g:a.g,b:a.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var d=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:d}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+(0,s.default)(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e===!0&&(this.previousColor=c.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e===!0&&(this.initialColor=c.extend({},t)),this.color=t;var i=c.RGBToHSV(t.r,t.g,t.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=c.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=c.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.color,e=c.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(t){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(t){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var i=this;this.opacityRange.onchange=function(){i._setOpacity(this.value)},this.opacityRange.oninput=function(){i._setOpacity(this.value)},this.brightnessRange.onchange=function(){i._setBrightness(this.value)},this.brightnessRange.oninput=function(){i._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new l(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),u.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var a=2*Math.PI/360,d=1/360,h=1/this.r,l=void 0;for(s=0;s<360;s++)for(r=0;r2&&void 0!==arguments[2]&&arguments[2],o=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(o),this._createK_matrix(o);for(var n=.01,r=1,a=0,d=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),h=5,l=1e9,u=0,c=0,f=0,p=0,v=0;l>n&&ar&&v=.1;)f=n[l++%s],f>h&&(f=h),c=Math.sqrt(f*f/(1+d*d)),c=r<0?-c:c,t+=c,e+=d*c,u===!0?this.lineTo(t,e):this.moveTo(t,e),h-=f,u=!u})},function(t,e){function i(t){if(t)return o(t)}function o(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;n=0;i--){var a=s[i];a.nodes||(a.nodes=[]),a.nodes.indexOf(n)===-1&&a.nodes.push(n)}e.attr&&(n.attr=h(n.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function f(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=h({},t.edge)),s.attr=h(s.attr||{},n),s}function p(){for(j=F.NULL,A="";" "===R||"\t"===R||"\n"===R||"\r"===R;)r();do{var t=!1;if("#"===R){for(var e=N-1;" "===z.charAt(e)||"\t"===z.charAt(e);)e--;if("\n"===z.charAt(e)||""===z.charAt(e)){for(;""!=R&&"\n"!=R;)r();t=!0}}if("/"===R&&"/"===a()){for(;""!=R&&"\n"!=R;)r();t=!0}if("/"===R&&"*"===a()){for(;""!=R;){if("*"===R&&"/"===a()){r(),r();break}r()}t=!0}for(;" "===R||"\t"===R||"\n"===R||"\r"===R;)r()}while(t);if(""===R)return void(j=F.DELIMITER);var i=R+a();if(I[i])return j=F.DELIMITER,A=i,r(),void r();if(I[R])return j=F.DELIMITER,A=R,void r();if(d(R)||"-"===R){for(A+=R,r();d(R);)A+=R,r();return"false"===A?A=!1:"true"===A?A=!0:isNaN(Number(A))||(A=Number(A)),void(j=F.IDENTIFIER)}if('"'===R){for(r();""!=R&&('"'!=R||'"'===R&&'"'===a());)A+=R,'"'===R&&r(),r();if('"'!=R)throw x('End of string " expected');return r(),void(j=F.IDENTIFIER)}for(j=F.UNKNOWN;""!=R;)A+=R,r();throw new SyntaxError('Syntax error in part "'+O(A,30)+'"')}function v(){var t={};if(s(),p(),"strict"===A&&(t.strict=!0,p()),"graph"!==A&&"digraph"!==A||(t.type=A,p()),j===F.IDENTIFIER&&(t.id=A,p()),"{"!=A)throw x("Angle bracket { expected");if(p(),g(t),"}"!=A)throw x("Angle bracket } expected");if(p(),""!==A)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function g(t){for(;""!==A&&"}"!=A;)y(t),";"===A&&p()}function y(t){var e=m(t);if(e)return void w(t,e);var i=b(t);if(!i){if(j!=F.IDENTIFIER)throw x("Identifier expected");var o=A;if(p(),"="===A){if(p(),j!=F.IDENTIFIER)throw x("Identifier expected");t[o]=A,p()}else _(t,o)}}function m(t){var e=null;if("subgraph"===A&&(e={},e.type="subgraph",p(),j===F.IDENTIFIER&&(e.id=A,p())),"{"===A){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,g(e),"}"!=A)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function b(t){return"node"===A?(p(),t.node=k(),"node"):"edge"===A?(p(),t.edge=k(),"edge"):"graph"===A?(p(),t.graph=k(),"graph"):null}function _(t,e){var i={id:e},o=k();o&&(i.attr=o),u(t,i),w(t,e)}function w(t,e){for(;"->"===A||"--"===A;){var i,o=A;p();var n=m(t);if(n)i=n;else{if(j!=F.IDENTIFIER)throw x("Identifier or subgraph expected");i=A,u(t,{id:i}),p()}var s=k(),r=f(t,e,i,o,s);c(t,r),e=i}}function k(){for(var t=null;"["===A;){for(p(),t={};""!==A&&"]"!=A;){if(j!=F.IDENTIFIER)throw x("Attribute name expected");var e=A;if(p(),"="!=A)throw x("Equal sign = expected");if(p(),j!=F.IDENTIFIER)throw x("Attribute value expected");var i=A;l(t,e,i),p(),","==A&&p()}if("]"!=A)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+O(A,30)+'" (char '+N+")")}function O(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r":!0,"--":!0},z="",N=0,R="",A="",j=F.NULL,H=/[a-zA-Z_0-9.:#]/;e.parseDOT=n,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;a.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}.vis-time-axis{position:relative}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-vertical-rtl{position:absolute;border-right:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-timeline{position:relative;border:1px solid #bfbfbf;padding:0;margin:0;box-sizing:border-box} \ No newline at end of file +.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:12px}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration-wrapper::after{clear:both;content:"";display:block}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:700}div.vis-configuration.vis-config-label{width:120px;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:100px}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;padding:1px;margin:0;pointer-events:none}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid #fff;background-color:rgba(0,0,0,0);width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%)}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:12px;margin-top:-12px}div.vis-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,.2);pointer-events:none;z-index:5}.vis-current-time{background-color:#ff7f6e;width:2px;z-index:1;pointer-events:none}.vis-rolling-mode-btn{height:40px;width:40px;position:absolute;top:7px;right:20px;border-radius:50%;font-size:28px;cursor:pointer;opacity:.8;color:#fff;font-weight:700;text-align:center;background:#3876c2}.vis-rolling-mode-btn:before{content:"\26F6"}.vis-rolling-mode-btn:hover{opacity:1}.vis-custom-time{background-color:#6e94ff;width:2px;cursor:move;z-index:1}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-item{position:absolute;color:#1a1a1a;border-color:#97b0f8;border-width:1px;background-color:#d5ddf6;display:inline-block;z-index:1}.vis-item.vis-selected{border-color:#ffc200;background-color:#fff785;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-point.vis-selected{background-color:#fff785}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0 0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item-visible-frame{white-space:nowrap}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-onUpdateTime-tooltip{position:absolute;background:#4f81bd;color:#fff;width:200px;text-align:center;white-space:nowrap;padding:5px;border-radius:1px;transition:.4s;-o-transition:.4s;-moz-transition:.4s;-webkit-transition:.4s}.vis-item .vis-delete,.vis-item .vis-delete-rtl{position:absolute;top:0;width:24px;height:24px;box-sizing:border-box;padding:0 5px;cursor:pointer;-webkit-transition:background .2s linear;-moz-transition:background .2s linear;-ms-transition:background .2s linear;-o-transition:background .2s linear;transition:background .2s linear}.vis-item .vis-delete{right:-24px}.vis-item .vis-delete-rtl{left:-24px}.vis-item .vis-delete-rtl:after,.vis-item .vis-delete:after{content:"\00D7";color:red;font-family:arial,sans-serif;font-size:22px;font-weight:700;-webkit-transition:color .2s linear;-moz-transition:color .2s linear;-ms-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.vis-item .vis-delete-rtl:hover,.vis-item .vis-delete:hover{background:red}.vis-item .vis-delete-rtl:hover:after,.vis-item .vis-delete:hover:after{color:#fff}.vis-item .vis-drag-center{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.vis-item.vis-range .vis-drag-left{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;right:-4px;cursor:e-resize}.vis-range.vis-item.vis-readonly .vis-drag-left,.vis-range.vis-item.vis-readonly .vis-drag-right{cursor:auto}.vis-itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:none}.vis-nesting-group{cursor:pointer}.vis-nested-group{background:#f5f5f5}.vis-label.vis-nesting-group.expanded:before{content:"\25BC"}.vis-label.vis-nesting-group.collapsed-rtl:before{content:"\25C0"}.vis-label.vis-nesting-group.collapsed:before{content:"\25B6"}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis-labelset .vis-label{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box}.vis-labelset .vis-label{border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label.draggable{cursor:pointer}.vis-labelset .vis-label:last-child{border-bottom:none}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-panel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-left.vis-panel.vis-vertical-scroll,.vis-right.vis-panel.vis-vertical-scroll{height:100%;overflow-x:hidden;overflow-y:scroll}.vis-left.vis-panel.vis-vertical-scroll{direction:rtl}.vis-left.vis-panel.vis-vertical-scroll .vis-content{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll .vis-content{direction:rtl}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-top{border-left-style:solid;border-right-style:solid}.vis-background{overflow:hidden}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}.vis-time-axis{position:relative;overflow:hidden}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-vertical-rtl{position:absolute;border-right:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-timeline{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box} \ No newline at end of file diff --git a/dist/vis-timeline-graph2d.min.js b/dist/vis-timeline-graph2d.min.js index dd84701a..2c406729 100644 --- a/dist/vis-timeline-graph2d.min.js +++ b/dist/vis-timeline-graph2d.min.js @@ -4,11 +4,11 @@ * * A dynamic, browser-based visualization library. * - * @version 4.18.1 - * @date 2017-01-29 + * @version 4.19.0 + * @date 2017-03-18 * * @license - * Copyright (C) 2011-2016 Almende B.V, http://almende.com + * Copyright (C) 2011-2017 Almende B.V, http://almende.com * * Vis.js is dual licensed under both * @@ -22,19 +22,19 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(89),e.DataSet=i(90),e.DataView=i(92),e.Queue=i(91),e.Timeline=i(93),e.Graph2d=i(129),e.timeline={Core:i(110),DateUtil:i(109),Range:i(107),stack:i(115),TimeStep:i(113),components:{items:{Item:i(117),BackgroundItem:i(121),BoxItem:i(119),PointItem:i(120),RangeItem:i(116)},BackgroundGroup:i(118),Component:i(108),CurrentTime:i(127),CustomTime:i(125),DataAxis:i(131),DataScale:i(132),GraphGroup:i(133),Group:i(114),ItemSet:i(111),Legend:i(137),LineGraph:i(130),TimeAxis:i(122)}},e.moment=i(84),e.Hammer=i(101),e.keycharm=i(124)},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}var n=i(2),s=o(n),r=i(55),a=o(r),h=i(58),d=o(h),l=i(62),u=o(l),p=i(82),c=o(p),f=i(84),m=i(88);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.elementsCensor=function(t){if(t){var e=function(t,e){return e instanceof Element?"DOM Element":e};return JSON.parse((0,c.default)(t,e))}},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=g.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return m.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!==(0,u.default)(t[i])&&(t[i]=e)},e.fillIfDefined=function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var n in t)void 0!==i[n]&&("object"!==(0,u.default)(i[n])?void 0!==i[n]&&null!==i[n]||void 0===t[n]||o!==!0?t[n]=i[n]:delete t[n]:"object"===(0,u.default)(t[n])&&e.fillIfDefined(t[n],i[n],o))},e.protoExtend=function(t,e){for(var i=1;i3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&t.indexOf(s)==-1)if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(t.indexOf("rgba")!=-1)return t;if(t.indexOf("rgb")!=-1){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var v={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return(0,d.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=v.split(t.style.cssText),n=v.split(i),s=e.extend(o,n);t.style.cssText=v.join(s)},e.removeCssText=function(t,e){var i=v.split(t.style.cssText),o=v.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=v.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==("undefined"==typeof i?"undefined":(0,u.default)(i))){for(var o=(0,a.default)(i),n=0;n0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=(arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{});if(null===e[i])t[i]=(0,a.default)(o[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var n in e[i])e[i].hasOwnProperty(n)&&(t[i][n]=e[i][n])}},e.binarySearchCustom=function(t,e,i,o){for(var n=1e4,s=0,r=0,a=t.length-1;r<=a&&s0)return"before"==o?Math.max(0,h-1):h;if(n(r,e)<0&&n(a,e)>0)return"before"==o?h:Math.min(t.length-1,h+1);n(r,e)<0?u=h+1:p=h-1,l++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var i=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return i==o&&(o=e.clientWidth),document.body.removeChild(e),i-o},e.topMost=function(t,e){var i=void 0;Array.isArray(e)||(e=[e]);var o=!0,n=!1,r=void 0;try{for(var a,h=(0,s.default)(t);!(o=(a=h.next()).done);o=!0){var d=a.value;if(d){i=d[e[0]];for(var l=1;l=t.length?(this._t=void 0,n(1)):"keys"==e?n(0,i):"values"==e?n(0,t[i]):n(0,[i,t[i]])},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,i){var o=i(10),n=i(12);t.exports=function(t){return o(n(t))}},function(t,e,i){var o=i(11);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},function(t,e){var i={}.toString;t.exports=function(t){return i.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,i){var o=i(14),n=i(15),s=i(30),r=i(20),a=i(31),h=i(8),d=i(32),l=i(46),u=i(48),p=i(47)("iterator"),c=!([].keys&&"next"in[].keys()),f="@@iterator",m="keys",g="values",v=function(){return this};t.exports=function(t,e,i,y,b,_,w){d(i,e,y);var x,D,S,k=function(t){if(!c&&t in O)return O[t];switch(t){case m:return function(){return new i(this,t)};case g:return function(){return new i(this,t)}}return function(){return new i(this,t)}},C=e+" Iterator",T=b==g,M=!1,O=t.prototype,E=O[p]||O[f]||b&&O[b],P=E||k(b),I=b?T?k("entries"):P:void 0,N="Array"==e?O.entries||E:E;if(N&&(S=u(N.call(new t)),S!==Object.prototype&&(l(S,C,!0),o||a(S,p)||r(S,p,v))),T&&E&&E.name!==g&&(M=!0,P=function(){return E.call(this)}),o&&!w||!c&&!M&&O[p]||r(O,p,P),h[e]=P,h[C]=v,b)if(x={values:T?P:k(g),keys:_?P:k(m),entries:I},w)for(D in x)D in O||s(O,D,x[D]);else n(n.P+n.F*(c||M),e,x);return x}},function(t,e){t.exports=!0},function(t,e,i){var o=i(16),n=i(17),s=i(18),r=i(20),a="prototype",h=function(t,e,i){var d,l,u,p=t&h.F,c=t&h.G,f=t&h.S,m=t&h.P,g=t&h.B,v=t&h.W,y=c?n:n[e]||(n[e]={}),b=y[a],_=c?o:f?o[e]:(o[e]||{})[a];c&&(i=e);for(d in i)l=!p&&_&&void 0!==_[d],l&&d in y||(u=l?_[d]:i[d],y[d]=c&&"function"!=typeof _[d]?i[d]:g&&l?s(u,o):v&&_[d]==u?function(t){var e=function(e,i,o){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,i)}return new t(e,i,o)}return t.apply(this,arguments)};return e[a]=t[a],e}(u):m&&"function"==typeof u?s(Function.call,u):u,m&&((y.virtual||(y.virtual={}))[d]=u,t&h.R&&b&&!b[d]&&r(b,d,u)))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},function(t,e){var i=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(t,e){var i=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=i)},function(t,e,i){var o=i(19);t.exports=function(t,e,i){if(o(t),void 0===e)return t;switch(i){case 1:return function(i){return t.call(e,i)};case 2:return function(i,o){return t.call(e,i,o)};case 3:return function(i,o,n){return t.call(e,i,o,n)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,i){var o=i(21),n=i(29);t.exports=i(25)?function(t,e,i){return o.f(t,e,n(1,i))}:function(t,e,i){return t[e]=i,t}},function(t,e,i){var o=i(22),n=i(24),s=i(28),r=Object.defineProperty;e.f=i(25)?Object.defineProperty:function(t,e,i){if(o(t),e=s(e,!0),o(i),n)try{return r(t,e,i)}catch(t){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(t[e]=i.value),t}},function(t,e,i){var o=i(23);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,i){t.exports=!i(25)&&!i(26)(function(){return 7!=Object.defineProperty(i(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,i){t.exports=!i(26)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,i){var o=i(23),n=i(16).document,s=o(n)&&o(n.createElement);t.exports=function(t){return s?n.createElement(t):{}}},function(t,e,i){var o=i(23);t.exports=function(t,e){if(!o(t))return t;var i,n;if(e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;if("function"==typeof(i=t.valueOf)&&!o(n=i.call(t)))return n;if(!e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,i){t.exports=i(20)},function(t,e){var i={}.hasOwnProperty;t.exports=function(t,e){return i.call(t,e)}},function(t,e,i){var o=i(33),n=i(29),s=i(46),r={};i(20)(r,i(47)("iterator"),function(){return this}),t.exports=function(t,e,i){t.prototype=o(r,{next:n(1,i)}),s(t,e+" Iterator")}},function(t,e,i){var o=i(22),n=i(34),s=i(44),r=i(41)("IE_PROTO"),a=function(){},h="prototype",d=function(){var t,e=i(27)("iframe"),o=s.length,n="<",r=">";for(e.style.display="none",i(45).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(n+"script"+r+"document.F=Object"+n+"/script"+r),t.close(),d=t.F;o--;)delete d[h][s[o]];return d()};t.exports=Object.create||function(t,e){var i;return null!==t?(a[h]=o(t),i=new a,a[h]=null,i[r]=t):i=d(),void 0===e?i:n(i,e)}},function(t,e,i){var o=i(21),n=i(22),s=i(35);t.exports=i(25)?Object.defineProperties:function(t,e){n(t);for(var i,r=s(e),a=r.length,h=0;a>h;)o.f(t,i=r[h++],e[i]);return t}},function(t,e,i){var o=i(36),n=i(44);t.exports=Object.keys||function(t){return o(t,n)}},function(t,e,i){var o=i(31),n=i(9),s=i(37)(!1),r=i(41)("IE_PROTO");t.exports=function(t,e){var i,a=n(t),h=0,d=[];for(i in a)i!=r&&o(a,i)&&d.push(i);for(;e.length>h;)o(a,i=e[h++])&&(~s(d,i)||d.push(i));return d}},function(t,e,i){var o=i(9),n=i(38),s=i(40);t.exports=function(t){return function(e,i,r){var a,h=o(e),d=n(h.length),l=s(r,d);if(t&&i!=i){for(;d>l;)if(a=h[l++],a!=a)return!0}else for(;d>l;l++)if((t||l in h)&&h[l]===i)return t||l||0;return!t&&-1}}},function(t,e,i){var o=i(39),n=Math.min;t.exports=function(t){return t>0?n(o(t),9007199254740991):0}},function(t,e){var i=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:i)(t)}},function(t,e,i){var o=i(39),n=Math.max,s=Math.min;t.exports=function(t,e){return t=o(t),t<0?n(t+e,0):s(t,e)}},function(t,e,i){var o=i(42)("keys"),n=i(43);t.exports=function(t){return o[t]||(o[t]=n(t))}},function(t,e,i){var o=i(16),n="__core-js_shared__",s=o[n]||(o[n]={});t.exports=function(t){return s[t]||(s[t]={})}},function(t,e){var i=0,o=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++i+o).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,i){t.exports=i(16).document&&document.documentElement},function(t,e,i){var o=i(21).f,n=i(31),s=i(47)("toStringTag");t.exports=function(t,e,i){t&&!n(t=i?t:t.prototype,s)&&o(t,s,{configurable:!0,value:e})}},function(t,e,i){var o=i(42)("wks"),n=i(43),s=i(16).Symbol,r="function"==typeof s,a=t.exports=function(t){return o[t]||(o[t]=r&&s[t]||(r?s:n)("Symbol."+t))};a.store=o},function(t,e,i){var o=i(31),n=i(49),s=i(41)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=n(t),o(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,i){var o=i(12);t.exports=function(t){return Object(o(t))}},function(t,e,i){var o=i(51)(!0);i(13)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,i=this._i;return i>=e.length?{value:void 0,done:!0}:(t=o(e,i),this._i+=t.length,{value:t,done:!1})})},function(t,e,i){var o=i(39),n=i(12);t.exports=function(t){return function(e,i){var s,r,a=String(n(e)),h=o(i),d=a.length;return h<0||h>=d?t?"":void 0:(s=a.charCodeAt(h),s<55296||s>56319||h+1===d||(r=a.charCodeAt(h+1))<56320||r>57343?t?a.charAt(h):s:t?a.slice(h,h+2):(s-55296<<10)+(r-56320)+65536)}}},function(t,e,i){var o=i(22),n=i(53);t.exports=i(17).getIterator=function(t){var e=n(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return o(e.call(t))}},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).getIteratorMethod=function(t){if(void 0!=t)return t[n]||t["@@iterator"]||s[o(t)]}},function(t,e,i){var o=i(11),n=i(47)("toStringTag"),s="Arguments"==o(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,i,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=r(e=Object(t),n))?i:s?o(e):"Object"==(a=o(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,i){t.exports={default:i(56),__esModule:!0}},function(t,e,i){i(57);var o=i(17).Object;t.exports=function(t,e){return o.create(t,e)}},function(t,e,i){var o=i(15);o(o.S,"Object",{create:i(33)})},function(t,e,i){t.exports={default:i(59),__esModule:!0}},function(t,e,i){i(60),t.exports=i(17).Object.keys},function(t,e,i){var o=i(49),n=i(35);i(61)("keys",function(){return function(t){return n(o(t))}})},function(t,e,i){var o=i(15),n=i(17),s=i(26);t.exports=function(t,e){var i=(n.Object||{})[t]||Object[t],r={};r[t]=e(i),o(o.S+o.F*s(function(){i(1)}),"Object",r)}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(63),s=o(n),r=i(66),a=o(r),h="function"==typeof a.default&&"symbol"==typeof s.default?function(t){return typeof t}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":typeof t};e.default="function"==typeof a.default&&"symbol"===h(s.default)?function(t){return"undefined"==typeof t?"undefined":h(t)}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":"undefined"==typeof t?"undefined":h(t)}},function(t,e,i){t.exports={default:i(64),__esModule:!0}},function(t,e,i){i(50),i(4),t.exports=i(65).f("iterator")},function(t,e,i){e.f=i(47)},function(t,e,i){t.exports={default:i(67),__esModule:!0}},function(t,e,i){i(68),i(79),i(80),i(81),t.exports=i(17).Symbol},function(t,e,i){var o=i(16),n=i(31),s=i(25),r=i(15),a=i(30),h=i(69).KEY,d=i(26),l=i(42),u=i(46),p=i(43),c=i(47),f=i(65),m=i(70),g=i(71),v=i(72),y=i(75),b=i(22),_=i(9),w=i(28),x=i(29),D=i(33),S=i(76),k=i(78),C=i(21),T=i(35),M=k.f,O=C.f,E=S.f,P=o.Symbol,I=o.JSON,N=I&&I.stringify,A="prototype",R=c("_hidden"),L=c("toPrimitive"),F={}.propertyIsEnumerable,H=l("symbol-registry"),Y=l("symbols"),j=l("op-symbols"),G=Object[A],z="function"==typeof P,W=o.QObject,B=!W||!W[A]||!W[A].findChild,U=s&&d(function(){return 7!=D(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a})?function(t,e,i){var o=M(G,e);o&&delete G[e],O(t,e,i),o&&t!==G&&O(G,e,o)}:O,V=function(t){var e=Y[t]=D(P[A]);return e._k=t,e},q=z&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},X=function(t,e,i){return t===G&&X(j,e,i),b(t),e=w(e,!0),b(i),n(Y,e)?(i.enumerable?(n(t,R)&&t[R][e]&&(t[R][e]=!1),i=D(i,{enumerable:x(0,!1)})):(n(t,R)||O(t,R,x(1,{})),t[R][e]=!0),U(t,e,i)):O(t,e,i)},Z=function(t,e){b(t);for(var i,o=v(e=_(e)),n=0,s=o.length;s>n;)X(t,i=o[n++],e[i]);return t},K=function(t,e){return void 0===e?D(t):Z(D(t),e)},J=function(t){var e=F.call(this,t=w(t,!0));return!(this===G&&n(Y,t)&&!n(j,t))&&(!(e||!n(this,t)||!n(Y,t)||n(this,R)&&this[R][t])||e)},$=function(t,e){if(t=_(t),e=w(e,!0),t!==G||!n(Y,e)||n(j,e)){var i=M(t,e);return!i||!n(Y,e)||n(t,R)&&t[R][e]||(i.enumerable=!0),i}},Q=function(t){for(var e,i=E(_(t)),o=[],s=0;i.length>s;)n(Y,e=i[s++])||e==R||e==h||o.push(e);return o},tt=function(t){for(var e,i=t===G,o=E(i?j:_(t)),s=[],r=0;o.length>r;)!n(Y,e=o[r++])||i&&!n(G,e)||s.push(Y[e]);return s};z||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(i){this===G&&e.call(j,i),n(this,R)&&n(this[R],t)&&(this[R][t]=!1),U(this,t,x(1,i))};return s&&B&&U(G,t,{configurable:!0,set:e}),V(t)},a(P[A],"toString",function(){return this._k}),k.f=$,C.f=X,i(77).f=S.f=Q,i(74).f=J,i(73).f=tt,s&&!i(14)&&a(G,"propertyIsEnumerable",J,!0),f.f=function(t){return V(c(t))}),r(r.G+r.W+r.F*!z,{Symbol:P});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),it=0;et.length>it;)c(et[it++]);for(var et=T(c.store),it=0;et.length>it;)m(et[it++]);r(r.S+r.F*!z,"Symbol",{for:function(t){return n(H,t+="")?H[t]:H[t]=P(t)},keyFor:function(t){if(q(t))return g(H,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){B=!0},useSimple:function(){B=!1}}),r(r.S+r.F*!z,"Object",{create:K,defineProperty:X,defineProperties:Z,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:tt}),I&&r(r.S+r.F*(!z||d(function(){var t=P();return"[null]"!=N([t])||"{}"!=N({a:t})||"{}"!=N(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!q(t)){for(var e,i,o=[t],n=1;arguments.length>n;)o.push(arguments[n++]);return e=o[1],"function"==typeof e&&(i=e),!i&&y(e)||(e=function(t,e){if(i&&(e=i.call(this,t,e)),!q(e))return e}),o[1]=e,N.apply(I,o)}}}),P[A][L]||i(20)(P[A],L,P[A].valueOf),u(P,"Symbol"),u(Math,"Math",!0),u(o.JSON,"JSON",!0)},function(t,e,i){var o=i(43)("meta"),n=i(23),s=i(31),r=i(21).f,a=0,h=Object.isExtensible||function(){return!0},d=!i(26)(function(){return h(Object.preventExtensions({}))}),l=function(t){r(t,o,{value:{i:"O"+ ++a,w:{}}})},u=function(t,e){if(!n(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!s(t,o)){if(!h(t))return"F";if(!e)return"E";l(t)}return t[o].i},p=function(t,e){if(!s(t,o)){if(!h(t))return!0;if(!e)return!1;l(t)}return t[o].w},c=function(t){return d&&f.NEED&&h(t)&&!s(t,o)&&l(t),t},f=t.exports={KEY:o,NEED:!1,fastKey:u,getWeak:p,onFreeze:c}},function(t,e,i){var o=i(16),n=i(17),s=i(14),r=i(65),a=i(21).f;t.exports=function(t){var e=n.Symbol||(n.Symbol=s?{}:o.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:r.f(t)})}},function(t,e,i){var o=i(35),n=i(9);t.exports=function(t,e){for(var i,s=n(t),r=o(s),a=r.length,h=0;a>h;)if(s[i=r[h++]]===e)return i}},function(t,e,i){var o=i(35),n=i(73),s=i(74);t.exports=function(t){var e=o(t),i=n.f;if(i)for(var r,a=i(t),h=s.f,d=0;a.length>d;)h.call(t,r=a[d++])&&e.push(r);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,i){var o=i(11);t.exports=Array.isArray||function(t){return"Array"==o(t)}},function(t,e,i){var o=i(9),n=i(77).f,s={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return n(t)}catch(t){return r.slice()}};t.exports.f=function(t){return r&&"[object Window]"==s.call(t)?a(t):n(o(t))}},function(t,e,i){var o=i(36),n=i(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return o(t,n)}},function(t,e,i){var o=i(74),n=i(29),s=i(9),r=i(28),a=i(31),h=i(24),d=Object.getOwnPropertyDescriptor;e.f=i(25)?d:function(t,e){if(t=s(t),e=r(e,!0),h)try{return d(t,e)}catch(t){}if(a(t,e))return n(!o.f.call(t,e),t[e])}},function(t,e){},function(t,e,i){i(70)("asyncIterator")},function(t,e,i){i(70)("observable")},function(t,e,i){t.exports={default:i(83),__esModule:!0}},function(t,e,i){var o=i(17),n=o.JSON||(o.JSON={stringify:JSON.stringify});t.exports=function(t){return n.stringify.apply(n,arguments)}},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(85)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return go.apply(null,arguments)}function i(t){go=t}function o(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function n(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){var e;for(e in t)return!1;return!0}function r(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function a(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){var i,o=[];for(i=0;i0)for(i in bo)o=bo[i],n=e[o],g(n)||(t[o]=n);return t}function y(t){v(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),_o===!1&&(_o=!0,e.updateOffset(this),_o=!1)}function b(t){return t instanceof y||null!=t&&null!=t._isAMomentObject}function _(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=_(e)),i}function x(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;o0?"future":"past"];return C(i)?i(e):i.replace(/%s/i,e)}function L(t,e){var i=t.toLowerCase();Po[i]=Po[i+"s"]=Po[e]=t}function F(t){return"string"==typeof t?Po[t]||Po[t.toLowerCase()]:void 0}function H(t){var e,i,o={};for(i in t)d(t,i)&&(e=F(i),e&&(o[e]=t[i]));return o}function Y(t,e){Io[t]=e}function j(t){var e=[];for(var i in t)e.push({unit:i,priority:Io[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}function G(t,i){return function(o){return null!=o?(W(this,t,o),e.updateOffset(this,i),this):z(this,t)}}function z(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function W(t,e,i){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](i)}function B(t){return t=F(t),C(this[t])?this[t]():this}function U(t,e){if("object"==typeof t){t=H(t);for(var i=j(t),o=0;o=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function q(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(Lo[t]=n),e&&(Lo[e[0]]=function(){return V(n.apply(this,arguments),e[1],e[2])}),i&&(Lo[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function X(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function Z(t){var e,i,o=t.match(No);for(e=0,i=o.length;e=0&&Ao.test(t);)t=t.replace(Ao,i),Ao.lastIndex=0,o-=1;return t}function $(t,e,i){tn[t]=C(e)?e:function(t,o){return t&&i?i:e}}function Q(t,e){return d(tn,t)?tn[t](e._strict,e._locale):new RegExp(tt(t))}function tt(t){return et(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function et(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function it(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),r(e)&&(o=function(t,i){i[e]=w(t)}),i=0;i=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function _t(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function wt(t,e,i){var o=7+e-i,n=(7+_t(t,0,o).getUTCDay()-e)%7;return-n+o-1}function xt(t,e,i,o,n){var s,r,a=(7+i-o)%7,h=wt(t,o,n),d=1+7*(e-1)+a+h;return d<=0?(s=t-1,r=gt(s)+d):d>gt(t)?(s=t+1,r=d-gt(t)):(s=t,r=d),{year:s,dayOfYear:r}}function Dt(t,e,i){var o,n,s=wt(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return r<1?(n=t.year()-1,o=r+St(n,e,i)):r>St(t.year(),e,i)?(o=r-St(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function St(t,e,i){var o=wt(t,e,i),n=wt(t+1,e,i);return(gt(t)-o+n)/7}function kt(t){return Dt(t,this._week.dow,this._week.doy).week}function Ct(){return this._week.dow}function Tt(){return this._week.doy}function Mt(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Ot(t){var e=Dt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Et(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Pt(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function It(t,e){return t?o(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:this._weekdays}function Nt(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function At(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function Rt(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;o<7;++o)s=u([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=pn.call(this._weekdaysParse,r),n!==-1?n:null):"ddd"===e?(n=pn.call(this._shortWeekdaysParse,r),n!==-1?n:null):(n=pn.call(this._minWeekdaysParse,r),n!==-1?n:null):"dddd"===e?(n=pn.call(this._weekdaysParse,r),n!==-1?n:(n=pn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=pn.call(this._minWeekdaysParse,r),n!==-1?n:null))):"ddd"===e?(n=pn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=pn.call(this._weekdaysParse,r),n!==-1?n:(n=pn.call(this._minWeekdaysParse,r),n!==-1?n:null))):(n=pn.call(this._minWeekdaysParse,r),n!==-1?n:(n=pn.call(this._weekdaysParse,r),n!==-1?n:(n=pn.call(this._shortWeekdaysParse,r),n!==-1?n:null)))}function Lt(t,e,i){var o,n,s;if(this._weekdaysParseExact)return Rt.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;o<7;o++){if(n=u([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function Ft(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Et(t,this.localeData()),this.add(t-e,"d")):e}function Ht(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Yt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Pt(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function jt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Wt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=Dn),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function Gt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Wt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Sn),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function zt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Wt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=kn),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Wt(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],h=[],d=[];for(e=0;e<7;e++)i=u([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),h.push(s),d.push(o),d.push(n),d.push(s);for(r.sort(t),a.sort(t),h.sort(t),d.sort(t),e=0;e<7;e++)a[e]=et(a[e]),h[e]=et(h[e]),d[e]=et(d[e]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Bt(){return this.hours()%12||12}function Ut(){return this.hours()||24}function Vt(t,e){q(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function qt(t,e){return e._meridiemParse}function Xt(t){return"p"===(t+"").toLowerCase().charAt(0)}function Zt(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Kt(t){return t?t.toLowerCase().replace("_","-"):t}function Jt(t){for(var e,i,o,n,s=0;s0;){if(o=$t(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&x(n,i,!0)>=e-1)break;e--}s++}return null}function $t(e){var i=null;if(!En[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Cn._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Qt(i)}catch(t){}return En[e]}function Qt(t,e){var i;return t&&(i=g(e)?ie(t):te(t,e),i&&(Cn=i)),Cn._abbr}function te(t,e){if(null!==e){var i=On;if(e.abbr=t,null!=En[t])k("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=En[t]._config;else if(null!=e.parentLocale){if(null==En[e.parentLocale])return Pn[e.parentLocale]||(Pn[e.parentLocale]=[]),Pn[e.parentLocale].push({name:t,config:e}),null;i=En[e.parentLocale]._config}return En[t]=new O(M(i,e)),Pn[t]&&Pn[t].forEach(function(t){te(t.name,t.config)}),Qt(t),En[t]}return delete En[t],null}function ee(t,e){if(null!=e){var i,o=On;null!=En[t]&&(o=En[t]._config),e=M(o,e),i=new O(e),i.parentLocale=En[t],En[t]=i,Qt(t)}else null!=En[t]&&(null!=En[t].parentLocale?En[t]=En[t].parentLocale:null!=En[t]&&delete En[t]);return En[t]}function ie(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Cn;if(!o(t)){if(e=$t(t))return e;t=[t]}return Jt(t)}function oe(){return So(En)}function ne(t){var e,i=t._a;return i&&c(t).overflow===-2&&(e=i[nn]<0||i[nn]>11?nn:i[sn]<1||i[sn]>st(i[on],i[nn])?sn:i[rn]<0||i[rn]>24||24===i[rn]&&(0!==i[an]||0!==i[hn]||0!==i[dn])?rn:i[an]<0||i[an]>59?an:i[hn]<0||i[hn]>59?hn:i[dn]<0||i[dn]>999?dn:-1,c(t)._overflowDayOfYear&&(esn)&&(e=sn),c(t)._overflowWeeks&&e===-1&&(e=ln),c(t)._overflowWeekday&&e===-1&&(e=un),c(t).overflow=e),t}function se(t){var e,i,o,n,s,r,a=t._i,h=In.exec(a)||Nn.exec(a);if(h){for(c(t).iso=!0,e=0,i=Rn.length;egt(n)&&(c(t)._overflowDayOfYear=!0),i=_t(n,0,t._dayOfYear),t._a[nn]=i.getUTCMonth(),t._a[sn]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[rn]&&0===t._a[an]&&0===t._a[hn]&&0===t._a[dn]&&(t._nextDay=!0,t._a[rn]=0),t._d=(t._useUTC?_t:bt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[rn]=24)}}function le(t){var e,i,o,n,s,r,a,h;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)s=1,r=4,i=ae(e.GG,t._a[on],Dt(be(),1,4).year),o=ae(e.W,1),n=ae(e.E,1),(n<1||n>7)&&(h=!0);else{s=t._locale._week.dow,r=t._locale._week.doy;var d=Dt(be(),s,r);i=ae(e.gg,t._a[on],d.year),o=ae(e.w,d.week),null!=e.d?(n=e.d,(n<0||n>6)&&(h=!0)):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(h=!0)):n=s}o<1||o>St(i,s,r)?c(t)._overflowWeeks=!0:null!=h?c(t)._overflowWeekday=!0:(a=xt(i,o,n,s,r),t._a[on]=a.year,t._dayOfYear=a.dayOfYear)}function ue(t){if(t._f===e.ISO_8601)return void se(t);t._a=[],c(t).empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=J(t._f,t._locale).match(No)||[],i=0;i0&&c(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Lo[s]?(o?c(t).empty=!1:c(t).unusedTokens.push(s),nt(s,o,t)):t._strict&&!o&&c(t).unusedTokens.push(s);c(t).charsLeftOver=h-d,a.length>0&&c(t).unusedInput.push(a),t._a[rn]<=12&&c(t).bigHour===!0&&t._a[rn]>0&&(c(t).bigHour=void 0),c(t).parsedDateParts=t._a.slice(0),c(t).meridiem=t._meridiem,t._a[rn]=pe(t._locale,t._a[rn],t._meridiem),de(t),ne(t)}function pe(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&e<12&&(e+=12),o||12!==e||(e=0),e):e}function ce(t){var e,i,o,n,s;if(0===t._f.length)return c(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Fe(){if(!g(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),t=ge(t),t._a){var e=t._isUTC?u(t._a):be(t._a);this._isDSTShifted=this.isValid()&&x(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function He(){return!!this.isValid()&&!this._isUTC}function Ye(){return!!this.isValid()&&this._isUTC}function je(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Ge(t,e){var i,o,n,s=t,a=null;return Se(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:r(t)?(s={},e?s[e]=t:s.milliseconds=t):(a=zn.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:w(a[sn])*i,h:w(a[rn])*i,m:w(a[an])*i,s:w(a[hn])*i,ms:w(ke(1e3*a[dn]))*i}):(a=Wn.exec(t))?(i="-"===a[1]?-1:1,s={y:ze(a[2],i),M:ze(a[3],i),w:ze(a[4],i),d:ze(a[5],i),h:ze(a[6],i),m:ze(a[7],i),s:ze(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Be(be(s.from),be(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new De(s),Se(t)&&d(t,"_locale")&&(o._locale=t._locale),o}function ze(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function We(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Be(t,e){var i;return t.isValid()&&e.isValid()?(e=Me(e,t),t.isBefore(e)?i=We(t,e):(i=We(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function Ue(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(k(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=Ge(i,o),Ve(this,n,t),this}}function Ve(t,i,o,n){var s=i._milliseconds,r=ke(i._days),a=ke(i._months);t.isValid()&&(n=null==n||n,s&&t._d.setTime(t._d.valueOf()+s*o),r&&W(t,"Date",z(t,"Date")+r*o),a&<(t,z(t,"Month")+a*o),n&&e.updateOffset(t,r||a))}function qe(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"}function Xe(t,i){var o=t||be(),n=Me(o,this).startOf("day"),s=e.calendarFormat(this,n)||"sameElse",r=i&&(C(i[s])?i[s].call(this,o):i[s]);return this.format(r||this.localeData().calendar(s,this,be(o)))}function Ze(){return new y(this)}function Ke(t,e){var i=b(t)?t:be(t);return!(!this.isValid()||!i.isValid())&&(e=F(g(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()s&&(e=s),Ii.call(this,t,e,i,o,n))}function Ii(t,e,i,o,n){var s=xt(t,e,i,o,n),r=_t(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Ni(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Ai(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function Ri(t,e){e[dn]=w(1e3*("0."+t))}function Li(){return this._isUTC?"UTC":""}function Fi(){return this._isUTC?"Coordinated Universal Time":""}function Hi(t){return be(1e3*t)}function Yi(){return be.apply(null,arguments).parseZone()}function ji(t){return t}function Gi(t,e,i,o){var n=ie(),s=u().set(o,e);return n[i](s,t)}function zi(t,e,i){if(r(t)&&(e=t,t=void 0),t=t||"",null!=e)return Gi(t,e,i,"month");var o,n=[];for(o=0;o<12;o++)n[o]=Gi(t,o,i,"month");return n}function Wi(t,e,i,o){"boolean"==typeof t?(r(e)&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,r(e)&&(i=e,e=void 0),e=e||"");var n=ie(),s=t?n._week.dow:0;if(null!=i)return Gi(e,(i+s)%7,o,"day");var a,h=[];for(a=0;a<7;a++)h[a]=Gi(e,(a+s)%7,o,"day");return h}function Bi(t,e){return zi(t,e,"months")}function Ui(t,e){return zi(t,e,"monthsShort")}function Vi(t,e,i){return Wi(t,e,i,"weekdays")}function qi(t,e,i){return Wi(t,e,i,"weekdaysShort")}function Xi(t,e,i){return Wi(t,e,i,"weekdaysMin")}function Zi(){var t=this._data;return this._milliseconds=ts(this._milliseconds),this._days=ts(this._days),this._months=ts(this._months),t.milliseconds=ts(t.milliseconds),t.seconds=ts(t.seconds),t.minutes=ts(t.minutes),t.hours=ts(t.hours),t.months=ts(t.months),t.years=ts(t.years),this}function Ki(t,e,i,o){var n=Ge(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function Ji(t,e){return Ki(this,t,e,1)}function $i(t,e){return Ki(this,t,e,-1)}function Qi(t){return t<0?Math.floor(t):Math.ceil(t)}function to(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data; -return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*Qi(io(a)+r),r=0,a=0),h.milliseconds=s%1e3,t=_(s/1e3),h.seconds=t%60,e=_(t/60),h.minutes=e%60,i=_(e/60),h.hours=i%24,r+=_(i/24),n=_(eo(r)),a+=n,r-=Qi(io(n)),o=_(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function eo(t){return 4800*t/146097}function io(t){return 146097*t/4800}function oo(t){var e,i,o=this._milliseconds;if(t=F(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+eo(e),"month"===t?i:i/12;switch(e=this._days+Math.round(io(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function no(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12)}function so(t){return function(){return this.as(t)}}function ro(t){return t=F(t),this[t+"s"]()}function ao(t){return function(){return this._data[t]}}function ho(){return _(this.days()/7)}function lo(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function uo(t,e,i){var o=Ge(t).abs(),n=gs(o.as("s")),s=gs(o.as("m")),r=gs(o.as("h")),a=gs(o.as("d")),h=gs(o.as("M")),d=gs(o.as("y")),l=n0,l[4]=i,lo.apply(null,l)}function po(t){return void 0===t?gs:"function"==typeof t&&(gs=t,!0)}function co(t,e){return void 0!==vs[t]&&(void 0===e?vs[t]:(vs[t]=e,!0))}function fo(t){var e=this.localeData(),i=uo(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function mo(){var t,e,i,o=ys(this._milliseconds)/1e3,n=ys(this._days),s=ys(this._months);t=_(o/60),e=_(t/60),o%=60,t%=60,i=_(s/12),s%=12;var r=i,a=s,h=n,d=e,l=t,u=o,p=this.asSeconds();return p?(p<0?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(d||l||u?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(u?u+"S":""):"P0D"}var go,vo;vo=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;o68?1900:2e3)};var yn=G("FullYear",!0);q("w",["ww",2],"wo","week"),q("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),Y("week",5),Y("isoWeek",5),$("w",zo),$("ww",zo,Ho),$("W",zo),$("WW",zo,Ho),ot(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=w(t)});var bn={dow:0,doy:6};q("d",0,"do","day"),q("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),q("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),q("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),q("e",0,0,"weekday"),q("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),Y("day",11),Y("weekday",11),Y("isoWeekday",11),$("d",zo),$("e",zo),$("E",zo),$("dd",function(t,e){return e.weekdaysMinRegex(t)}),$("ddd",function(t,e){return e.weekdaysShortRegex(t)}),$("dddd",function(t,e){return e.weekdaysRegex(t)}),ot(["dd","ddd","dddd"],function(t,e,i,o){var n=i._locale.weekdaysParse(t,o,i._strict);null!=n?e.d=n:c(i).invalidWeekday=t}),ot(["d","e","E"],function(t,e,i,o){e[o]=w(t)});var _n="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),wn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Dn=Qo,Sn=Qo,kn=Qo;q("H",["HH",2],0,"hour"),q("h",["hh",2],0,Bt),q("k",["kk",2],0,Ut),q("hmm",0,0,function(){return""+Bt.apply(this)+V(this.minutes(),2)}),q("hmmss",0,0,function(){return""+Bt.apply(this)+V(this.minutes(),2)+V(this.seconds(),2)}),q("Hmm",0,0,function(){return""+this.hours()+V(this.minutes(),2)}),q("Hmmss",0,0,function(){return""+this.hours()+V(this.minutes(),2)+V(this.seconds(),2)}),Vt("a",!0),Vt("A",!1),L("hour","h"),Y("hour",13),$("a",qt),$("A",qt),$("H",zo),$("h",zo),$("HH",zo,Ho),$("hh",zo,Ho),$("hmm",Wo),$("hmmss",Bo),$("Hmm",Wo),$("Hmmss",Bo),it(["H","HH"],rn),it(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),it(["h","hh"],function(t,e,i){e[rn]=w(t),c(i).bigHour=!0}),it("hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o)),c(i).bigHour=!0}),it("hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[hn]=w(t.substr(n)),c(i).bigHour=!0}),it("Hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o))}),it("Hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[hn]=w(t.substr(n))});var Cn,Tn=/[ap]\.?m?\.?/i,Mn=G("Hours",!0),On={calendar:ko,longDateFormat:Co,invalidDate:To,ordinal:Mo,ordinalParse:Oo,relativeTime:Eo,months:fn,monthsShort:mn,week:bn,weekdays:_n,weekdaysMin:xn,weekdaysShort:wn,meridiemParse:Tn},En={},Pn={},In=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Nn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,An=/Z|[+-]\d\d(?::?\d\d)?/,Rn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ln=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Fn=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=S("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),e.ISO_8601=function(){};var Hn=S("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=be.apply(null,arguments);return this.isValid()&&t.isValid()?tthis?this:t:m()}),jn=function(){return Date.now?Date.now():+new Date};Ce("Z",":"),Ce("ZZ",""),$("Z",Jo),$("ZZ",Jo),it(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Te(Jo,t)});var Gn=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var zn=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Wn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Ge.fn=De.prototype;var Bn=Ue(1,"add"),Un=Ue(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Vn=S("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});q(0,["gg",2],0,function(){return this.weekYear()%100}),q(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ci("gggg","weekYear"),Ci("ggggg","weekYear"),Ci("GGGG","isoWeekYear"),Ci("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),Y("weekYear",1),Y("isoWeekYear",1),$("G",Zo),$("g",Zo),$("GG",zo,Ho),$("gg",zo,Ho),$("GGGG",Vo,jo),$("gggg",Vo,jo),$("GGGGG",qo,Go),$("ggggg",qo,Go),ot(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=w(t)}),ot(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),q("Q",0,"Qo","quarter"),L("quarter","Q"),Y("quarter",7),$("Q",Fo),it("Q",function(t,e){e[nn]=3*(w(t)-1)}),q("D",["DD",2],"Do","date"),L("date","D"),Y("date",9),$("D",zo),$("DD",zo,Ho),$("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),it(["D","DD"],sn),it("Do",function(t,e){e[sn]=w(t.match(zo)[0],10)});var qn=G("Date",!0);q("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),Y("dayOfYear",4),$("DDD",Uo),$("DDDD",Yo),it(["DDD","DDDD"],function(t,e,i){i._dayOfYear=w(t)}),q("m",["mm",2],0,"minute"),L("minute","m"),Y("minute",14),$("m",zo),$("mm",zo,Ho),it(["m","mm"],an);var Xn=G("Minutes",!1);q("s",["ss",2],0,"second"),L("second","s"),Y("second",15),$("s",zo),$("ss",zo,Ho),it(["s","ss"],hn);var Zn=G("Seconds",!1);q("S",0,0,function(){return~~(this.millisecond()/100)}),q(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),q(0,["SSS",3],0,"millisecond"),q(0,["SSSS",4],0,function(){return 10*this.millisecond()}),q(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),q(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),q(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),q(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),q(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),Y("millisecond",16),$("S",Uo,Fo),$("SS",Uo,Ho),$("SSS",Uo,Yo);var Kn;for(Kn="SSSS";Kn.length<=9;Kn+="S")$(Kn,Xo);for(Kn="S";Kn.length<=9;Kn+="S")it(Kn,Ri);var Jn=G("Milliseconds",!1);q("z",0,0,"zoneAbbr"),q("zz",0,0,"zoneName");var $n=y.prototype;$n.add=Bn,$n.calendar=Xe,$n.clone=Ze,$n.diff=ii,$n.endOf=mi,$n.format=ai,$n.from=hi,$n.fromNow=di,$n.to=li,$n.toNow=ui,$n.get=B,$n.invalidAt=Si,$n.isAfter=Ke,$n.isBefore=Je,$n.isBetween=$e,$n.isSame=Qe,$n.isSameOrAfter=ti,$n.isSameOrBefore=ei,$n.isValid=xi,$n.lang=Vn,$n.locale=pi,$n.localeData=ci,$n.max=Yn,$n.min=Hn,$n.parsingFlags=Di,$n.set=U,$n.startOf=fi,$n.subtract=Un,$n.toArray=bi,$n.toObject=_i,$n.toDate=yi,$n.toISOString=si,$n.inspect=ri,$n.toJSON=wi,$n.toString=ni,$n.unix=vi,$n.valueOf=gi,$n.creationData=ki,$n.year=yn,$n.isLeapYear=yt,$n.weekYear=Ti,$n.isoWeekYear=Mi,$n.quarter=$n.quarters=Ni,$n.month=ut,$n.daysInMonth=pt,$n.week=$n.weeks=Mt,$n.isoWeek=$n.isoWeeks=Ot,$n.weeksInYear=Ei,$n.isoWeeksInYear=Oi,$n.date=qn,$n.day=$n.days=Ft,$n.weekday=Ht,$n.isoWeekday=Yt,$n.dayOfYear=Ai,$n.hour=$n.hours=Mn,$n.minute=$n.minutes=Xn,$n.second=$n.seconds=Zn,$n.millisecond=$n.milliseconds=Jn,$n.utcOffset=Ee,$n.utc=Ie,$n.local=Ne,$n.parseZone=Ae,$n.hasAlignedHourOffset=Re,$n.isDST=Le,$n.isLocal=He,$n.isUtcOffset=Ye,$n.isUtc=je,$n.isUTC=je,$n.zoneAbbr=Li,$n.zoneName=Fi,$n.dates=S("dates accessor is deprecated. Use date instead.",qn),$n.months=S("months accessor is deprecated. Use month instead",ut),$n.years=S("years accessor is deprecated. Use year instead",yn),$n.zone=S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Pe),$n.isDSTShifted=S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Fe);var Qn=O.prototype;Qn.calendar=E,Qn.longDateFormat=P,Qn.invalidDate=I,Qn.ordinal=N,Qn.preparse=ji,Qn.postformat=ji,Qn.relativeTime=A,Qn.pastFuture=R,Qn.set=T,Qn.months=rt,Qn.monthsShort=at,Qn.monthsParse=dt,Qn.monthsRegex=ft,Qn.monthsShortRegex=ct,Qn.week=kt,Qn.firstDayOfYear=Tt,Qn.firstDayOfWeek=Ct,Qn.weekdays=It,Qn.weekdaysMin=At,Qn.weekdaysShort=Nt,Qn.weekdaysParse=Lt,Qn.weekdaysRegex=jt,Qn.weekdaysShortRegex=Gt,Qn.weekdaysMinRegex=zt,Qn.isPM=Xt,Qn.meridiem=Zt,Qt("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=S("moment.lang is deprecated. Use moment.locale instead.",Qt),e.langData=S("moment.langData is deprecated. Use moment.localeData instead.",ie);var ts=Math.abs,es=so("ms"),is=so("s"),os=so("m"),ns=so("h"),ss=so("d"),rs=so("w"),as=so("M"),hs=so("y"),ds=ao("milliseconds"),ls=ao("seconds"),us=ao("minutes"),ps=ao("hours"),cs=ao("days"),fs=ao("months"),ms=ao("years"),gs=Math.round,vs={s:45,m:45,h:22,d:26,M:11},ys=Math.abs,bs=De.prototype;return bs.abs=Zi,bs.add=Ji,bs.subtract=$i,bs.as=oo,bs.asMilliseconds=es,bs.asSeconds=is,bs.asMinutes=os,bs.asHours=ns,bs.asDays=ss,bs.asWeeks=rs,bs.asMonths=as,bs.asYears=hs,bs.valueOf=no,bs._bubble=to,bs.get=ro,bs.milliseconds=ds,bs.seconds=ls,bs.minutes=us,bs.hours=ps,bs.days=cs,bs.weeks=ho,bs.months=fs,bs.years=ms,bs.humanize=fo,bs.toISOString=mo,bs.toString=mo,bs.toJSON=mo,bs.locale=pi,bs.localeData=ci,bs.toIsoString=S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",mo),bs.lang=Vn,q("X",0,0,"unix"),q("x",0,0,"valueOf"),$("x",Zo),$("X",$o),it("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),it("x",function(t,e,i){i._d=new Date(w(t))}),e.version="2.17.1",i(be),e.fn=$n,e.min=we,e.max=xe,e.now=jn,e.utc=u,e.unix=Hi,e.months=Bi,e.isDate=a,e.locale=Qt,e.invalid=m,e.duration=Ge,e.isMoment=b,e.weekdays=Vi,e.parseZone=Yi,e.localeData=ie,e.isDuration=Se,e.monthsShort=Ui,e.weekdaysMin=Xi,e.defineLocale=te,e.updateLocale=ee,e.locales=oe,e.weekdaysShort=qi,e.normalizeUnits=F,e.relativeTimeRounding=po,e.relativeTimeThreshold=co,e.calendarFormat=qe,e.prototype=$n,e})}).call(e,i(86)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=87},function(t,e){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){n<16&&(e[o+n++]=u[t])});n<16;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:v+1,d=a-g+(h-v)/1e4;if(d<0&&void 0===t.clockseq&&(r=r+1&16383),(d<0||a>g)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");g=a,v=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var p=t.node||f,c=0;c<6;c++)s[n+c]=p[c];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;a<16;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;e<16;e++)0===(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},p=0;p<256;p++)l[p]=(p+256).toString(16).substr(1),u[l[p]]=p;var c=r(),f=[1|c[0],c[1],c[2],c[3],c[4],c[5]],m=16383&(c[6]<<8|c[7]),g=0,v=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){n<0&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=(0,l.default)(this._options.type),o=0,n=i.length;on?1:or)&&(s=h,r=d)}return s},n.prototype.min=function(t){var e,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(e=0,i=n.length;ethis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var s=i(58),r=o(s),a=i(1),h=i(90);n.prototype.setData=function(t){var e,i,o,n,s;if(this._data){for(this._data.off&&this._data.off("*",this.listener),e=this._data.getIds({filter:this._options&&this._options.filter}),s=[],o=0,n=e.length;os)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=!e||void 0===e.animation||e.animation;this.range.setRange(r-a/2,r+a/2,h)}}},n.prototype.fit=function(t){var e,i=!t||void 0===t.animation||t.animation,o=this.itemsData&&this.itemsData.getDataSet();1===o.length&&void 0===o.get()[0].end?(e=this.getDataRange(),this.moveTo(e.min.valueOf(),{animation:i})):(e=this.getItemRange(),this.range.setRange(e.min,e.max,i))},n.prototype.getItemRange=function(){var t=this,e=this.getDataRange(),i=null!==e.min?e.min.valueOf():null,o=null!==e.max?e.max.valueOf():null,n=null,s=null;if(null!=i&&null!=o){var r,a,h,d,u;!function(){var e=function(t){return l.convert(t.data.start,"Date").valueOf()},p=function(t){var e=void 0!=t.data.end?t.data.end:t.data.start;return l.convert(e,"Date").valueOf()};r=o-i,r<=0&&(r=10),a=r/t.props.center.width,l.forEach(t.itemSet.items,function(t){t.groupShowing&&(t.show(),t.repositionX());var r=e(t),h=p(t);if(this.options.rtl)var d=r-(t.getWidthRight()+10)*a,l=h+(t.getWidthLeft()+10)*a;else var d=r-(t.getWidthLeft()+10)*a,l=h+(t.getWidthRight()+10)*a;do&&(o=l,s=t)}.bind(t)),n&&s&&(h=n.getWidthLeft()+10,d=s.getWidthRight()+10,u=t.props.center.width-h-d,u>0&&(t.options.rtl?(i=e(n)-d*r/u,o=p(s)+h*r/u):(i=e(n)-h*r/u,o=p(s)+d*r/u)))}()}return{min:null!=i?new Date(i):null,max:null!=o?new Date(o):null}},n.prototype.getDataRange=function(){var t=null,e=null,i=this.itemsData&&this.itemsData.getDataSet();return i&&i.forEach(function(i){var o=l.convert(i.start,"Date").valueOf(),n=l.convert(void 0!=i.end?i.end:i.start,"Date").valueOf();(null===t||oe)&&(e=n)}),{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},n.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY;if(this.options.rtl)var o=l.getAbsoluteRight(this.dom.centerContainer)-e;else var o=e-l.getAbsoluteLeft(this.dom.centerContainer);var n=i-l.getAbsoluteTop(this.dom.centerContainer),s=this.itemSet.itemFromTarget(t),r=this.itemSet.groupFromTarget(t),a=v.customTimeFromTarget(t),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),u=this.body.util.getStep(),p=this._toTime(o),c=h?h(p,d,u):p,f=l.getTarget(t),m=null;return null!=s?m="item":null!=a?m="custom-time":l.hasParent(f,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&l.hasParent(f,this.timeAxis2.dom.foreground)?m="axis":l.hasParent(f,this.itemSet.dom.labelSet)?m="group-label":l.hasParent(f,this.currentTime.bar)?m="current-time":l.hasParent(f,this.dom.center)&&(m="background"),{event:t,item:s?s.id:null,group:r?r.groupId:null,what:m,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:p,snappedTime:c}},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(82),s=o(n),r=i(62),a=o(r),h=i(95),d=o(h),l=i(96),u=o(l),p=i(100),c=o(p),f=i(1),m=function(){function t(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,d.default)(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},f.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new c.default(n),this.wrapper=void 0}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===("undefined"==typeof t?"undefined":(0,a.default)(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),this.options.filter===!1&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):e!==!0&&e.indexOf(n)===-1||(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);this.options.showButton===!0&&!function(){var e=document.createElement("div");e.className="vis-configuration vis-config-button",e.innerHTML="generate options",e.onclick=function(){t._printOptions()},e.onmouseover=function(){e.className="vis-configuration vis-config-button hover"},e.onmouseout=function(){e.className="vis-configuration vis-config-button"},t.optionsContainer=document.createElement("div"),t.optionsContainer.className="vis-configuration vis-config-option-container",t.domElements.push(t.optionsContainer),t.domElements.push(e)}(),this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?o-1:0),s=1;s2&&void 0!==arguments[2]&&arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,i===!0?o.innerHTML=""+t+":":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&t.indexOf(e)!==-1&&(n=t.indexOf(e));for(var s=0;ss&&1!==s&&(a.max=Math.ceil(e*l),d=a.max,h="range increased"),a.value=e}else a.value=o;var u=document.createElement("input");u.className="vis-configuration vis-config-rangeinput",u.value=a.value;var p=this;a.onchange=function(){u.value=this.value,p._update(Number(this.value),i)},a.oninput=function(){u.value=this.value};var c=this._makeLabel(i[i.length-1],i),f=this._makeItem(i,c,a,u);""!==h&&this.popupHistory[f]!==d&&(this.popupHistory[f]=d,this._setupPopup(h,f))}},{key:"_setupPopup",value:function(t,e){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],h=f.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var d=this._getValue(h);if(a instanceof Array)this._handleArray(a,d,h);else if("string"==typeof a)this._makeTextInput(a,d,h);else if("boolean"==typeof a)this._makeCheckbox(a,d,h);else if(a instanceof Object){var l=!0;if(e.indexOf("physics")!==-1&&this.moduleOptions.physics.solver!==r&&(l=!1),l===!0)if(void 0!==a.enabled){var u=f.copyAndExtendArray(h,"enabled"),p=this._getValue(u);if(p===!0){var c=this._makeLabel(r,h,!0);this._makeItem(h,c),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,p,h)}else{var m=this._makeLabel(r,h,!0);this._makeItem(h,m),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i;t="true"===t||t,t="false"!==t&&t;for(var n=0;nvar options = "+(0,s.default)(t,null,2)+""}},{key:"getOptions",value:function(){for(var t={},e=0;e0&&void 0!==arguments[0]?arguments[0]:1;(0,a.default)(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return(0,d.default)(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};if("string"==typeof t)return e[t]}},{key:"setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),p.isString(t)===!0){if(p.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(p.isValidRGBA(t)===!0){var r=t.substr(5).substr(0,t.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(p.isValidHex(t)===!0){var a=p.hexToRGB(t);i={r:a.r,g:a.g,b:a.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var h=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:h}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+(0,s.default)(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e===!0&&(this.previousColor=p.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e===!0&&(this.initialColor=p.extend({},t)),this.color=t;var i=p.RGBToHSV(t.r,t.g,t.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=p.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=p.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.color,e=p.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(t){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(t){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var i=this;this.opacityRange.onchange=function(){i._setOpacity(this.value)},this.opacityRange.oninput=function(){i._setOpacity(this.value)},this.brightnessRange.onchange=function(){i._setBrightness(this.value)},this.brightnessRange.oninput=function(){i._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new l(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),u.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var a=2*Math.PI/360,h=1/360,d=1/this.r,l=void 0;for(s=0;s<360;s++)for(r=0;r0?d._handlers[t]=o:(i.off(t,s),delete d._handlers[t]))}),d},d.emit=function(e,o){t=o.target,i.emit(e,o)},d.destroy=function(){var t=i.element.hammer,e=t.indexOf(d);e!==-1&&t.splice(e,1),t.length||delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(t,e,i){var o;/*! Hammer.JS - v2.0.7 - 2016-04-22 +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(87),e.DataSet=i(88),e.DataView=i(92),e.Queue=i(91),e.Timeline=i(93),e.Graph2d=i(129),e.timeline={Core:i(110),DateUtil:i(109),Range:i(107),stack:i(115),TimeStep:i(113),components:{items:{Item:i(117),BackgroundItem:i(121),BoxItem:i(119),PointItem:i(120),RangeItem:i(116)},BackgroundGroup:i(118),Component:i(108),CurrentTime:i(127),CustomTime:i(125),DataAxis:i(131),DataScale:i(132),GraphGroup:i(133),Group:i(114),ItemSet:i(111),Legend:i(137),LineGraph:i(130),TimeAxis:i(122)}},e.moment=i(82),e.Hammer=i(101),e.keycharm=i(124)},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}var n=i(2),s=o(n),r=i(55),a=o(r),h=i(58),d=o(h),l=i(62),u=o(l),p=i(82),c=i(86);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=f.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return c.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!==(0,u.default)(t[i])&&(t[i]=e)},e.fillIfDefined=function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var n in t)void 0!==i[n]&&("object"!==(0,u.default)(i[n])?void 0!==i[n]&&null!==i[n]||void 0===t[n]||o!==!0?t[n]=i[n]:delete t[n]:"object"===(0,u.default)(t[n])&&e.fillIfDefined(t[n],i[n],o))},e.protoExtend=function(t,e){for(var i=1;i3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&t.indexOf(s)==-1)if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(t.indexOf("rgba")!=-1)return t;if(t.indexOf("rgb")!=-1){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var m={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return(0,d.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=m.split(t.style.cssText),n=m.split(i),s=e.extend(o,n);t.style.cssText=m.join(s)},e.removeCssText=function(t,e){var i=m.split(t.style.cssText),o=m.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=m.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==("undefined"==typeof i?"undefined":(0,u.default)(i))){for(var o=(0,a.default)(i),n=0;n0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=(arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{});if(null===e[i])t[i]=(0,a.default)(o[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var n in e[i])e[i].hasOwnProperty(n)&&(t[i][n]=e[i][n])}},e.binarySearchCustom=function(t,e,i,o){for(var n=1e4,s=0,r=0,a=t.length-1;r<=a&&s0)return"before"==o?Math.max(0,h-1):h;if(n(r,e)<0&&n(a,e)>0)return"before"==o?h:Math.min(t.length-1,h+1);n(r,e)<0?u=h+1:p=h-1,l++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var i=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return i==o&&(o=e.clientWidth),document.body.removeChild(e),i-o},e.topMost=function(t,e){var i=void 0;Array.isArray(e)||(e=[e]);var o=!0,n=!1,r=void 0;try{for(var a,h=(0,s.default)(t);!(o=(a=h.next()).done);o=!0){var d=a.value;if(d){i=d[e[0]];for(var l=1;l=t.length?(this._t=void 0,n(1)):"keys"==e?n(0,i):"values"==e?n(0,t[i]):n(0,[i,t[i]])},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,i){var o=i(10),n=i(12);t.exports=function(t){return o(n(t))}},function(t,e,i){var o=i(11);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},function(t,e){var i={}.toString;t.exports=function(t){return i.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,i){var o=i(14),n=i(15),s=i(30),r=i(20),a=i(31),h=i(8),d=i(32),l=i(46),u=i(48),p=i(47)("iterator"),c=!([].keys&&"next"in[].keys()),f="@@iterator",m="keys",g="values",v=function(){return this};t.exports=function(t,e,i,y,b,_,w){d(i,e,y);var x,D,S,k=function(t){if(!c&&t in O)return O[t];switch(t){case m:return function(){return new i(this,t)};case g:return function(){return new i(this,t)}}return function(){return new i(this,t)}},C=e+" Iterator",T=b==g,M=!1,O=t.prototype,E=O[p]||O[f]||b&&O[b],P=E||k(b),I=b?T?k("entries"):P:void 0,A="Array"==e?O.entries||E:E;if(A&&(S=u(A.call(new t)),S!==Object.prototype&&(l(S,C,!0),o||a(S,p)||r(S,p,v))),T&&E&&E.name!==g&&(M=!0,P=function(){return E.call(this)}),o&&!w||!c&&!M&&O[p]||r(O,p,P),h[e]=P,h[C]=v,b)if(x={values:T?P:k(g),keys:_?P:k(m),entries:I},w)for(D in x)D in O||s(O,D,x[D]);else n(n.P+n.F*(c||M),e,x);return x}},function(t,e){t.exports=!0},function(t,e,i){var o=i(16),n=i(17),s=i(18),r=i(20),a="prototype",h=function(t,e,i){var d,l,u,p=t&h.F,c=t&h.G,f=t&h.S,m=t&h.P,g=t&h.B,v=t&h.W,y=c?n:n[e]||(n[e]={}),b=y[a],_=c?o:f?o[e]:(o[e]||{})[a];c&&(i=e);for(d in i)l=!p&&_&&void 0!==_[d],l&&d in y||(u=l?_[d]:i[d],y[d]=c&&"function"!=typeof _[d]?i[d]:g&&l?s(u,o):v&&_[d]==u?function(t){var e=function(e,i,o){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,i)}return new t(e,i,o)}return t.apply(this,arguments)};return e[a]=t[a],e}(u):m&&"function"==typeof u?s(Function.call,u):u,m&&((y.virtual||(y.virtual={}))[d]=u,t&h.R&&b&&!b[d]&&r(b,d,u)))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},function(t,e){var i=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(t,e){var i=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=i)},function(t,e,i){var o=i(19);t.exports=function(t,e,i){if(o(t),void 0===e)return t;switch(i){case 1:return function(i){return t.call(e,i)};case 2:return function(i,o){return t.call(e,i,o)};case 3:return function(i,o,n){return t.call(e,i,o,n)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,i){var o=i(21),n=i(29);t.exports=i(25)?function(t,e,i){return o.f(t,e,n(1,i))}:function(t,e,i){return t[e]=i,t}},function(t,e,i){var o=i(22),n=i(24),s=i(28),r=Object.defineProperty;e.f=i(25)?Object.defineProperty:function(t,e,i){if(o(t),e=s(e,!0),o(i),n)try{return r(t,e,i)}catch(t){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(t[e]=i.value),t}},function(t,e,i){var o=i(23);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,i){t.exports=!i(25)&&!i(26)(function(){return 7!=Object.defineProperty(i(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,i){t.exports=!i(26)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,i){var o=i(23),n=i(16).document,s=o(n)&&o(n.createElement);t.exports=function(t){return s?n.createElement(t):{}}},function(t,e,i){var o=i(23);t.exports=function(t,e){if(!o(t))return t;var i,n;if(e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;if("function"==typeof(i=t.valueOf)&&!o(n=i.call(t)))return n;if(!e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,i){t.exports=i(20)},function(t,e){var i={}.hasOwnProperty;t.exports=function(t,e){return i.call(t,e)}},function(t,e,i){var o=i(33),n=i(29),s=i(46),r={};i(20)(r,i(47)("iterator"),function(){return this}),t.exports=function(t,e,i){t.prototype=o(r,{next:n(1,i)}),s(t,e+" Iterator")}},function(t,e,i){var o=i(22),n=i(34),s=i(44),r=i(41)("IE_PROTO"),a=function(){},h="prototype",d=function(){var t,e=i(27)("iframe"),o=s.length,n="<",r=">";for(e.style.display="none",i(45).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(n+"script"+r+"document.F=Object"+n+"/script"+r),t.close(),d=t.F;o--;)delete d[h][s[o]];return d()};t.exports=Object.create||function(t,e){var i;return null!==t?(a[h]=o(t),i=new a,a[h]=null,i[r]=t):i=d(),void 0===e?i:n(i,e)}},function(t,e,i){var o=i(21),n=i(22),s=i(35);t.exports=i(25)?Object.defineProperties:function(t,e){n(t);for(var i,r=s(e),a=r.length,h=0;a>h;)o.f(t,i=r[h++],e[i]);return t}},function(t,e,i){var o=i(36),n=i(44);t.exports=Object.keys||function(t){return o(t,n)}},function(t,e,i){var o=i(31),n=i(9),s=i(37)(!1),r=i(41)("IE_PROTO");t.exports=function(t,e){var i,a=n(t),h=0,d=[];for(i in a)i!=r&&o(a,i)&&d.push(i);for(;e.length>h;)o(a,i=e[h++])&&(~s(d,i)||d.push(i));return d}},function(t,e,i){var o=i(9),n=i(38),s=i(40);t.exports=function(t){return function(e,i,r){var a,h=o(e),d=n(h.length),l=s(r,d);if(t&&i!=i){for(;d>l;)if(a=h[l++],a!=a)return!0}else for(;d>l;l++)if((t||l in h)&&h[l]===i)return t||l||0;return!t&&-1}}},function(t,e,i){var o=i(39),n=Math.min;t.exports=function(t){return t>0?n(o(t),9007199254740991):0}},function(t,e){var i=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:i)(t)}},function(t,e,i){var o=i(39),n=Math.max,s=Math.min;t.exports=function(t,e){return t=o(t),t<0?n(t+e,0):s(t,e)}},function(t,e,i){var o=i(42)("keys"),n=i(43);t.exports=function(t){return o[t]||(o[t]=n(t))}},function(t,e,i){var o=i(16),n="__core-js_shared__",s=o[n]||(o[n]={});t.exports=function(t){return s[t]||(s[t]={})}},function(t,e){var i=0,o=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++i+o).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,i){t.exports=i(16).document&&document.documentElement},function(t,e,i){var o=i(21).f,n=i(31),s=i(47)("toStringTag");t.exports=function(t,e,i){t&&!n(t=i?t:t.prototype,s)&&o(t,s,{configurable:!0,value:e})}},function(t,e,i){var o=i(42)("wks"),n=i(43),s=i(16).Symbol,r="function"==typeof s,a=t.exports=function(t){return o[t]||(o[t]=r&&s[t]||(r?s:n)("Symbol."+t))};a.store=o},function(t,e,i){var o=i(31),n=i(49),s=i(41)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=n(t),o(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,i){var o=i(12);t.exports=function(t){return Object(o(t))}},function(t,e,i){var o=i(51)(!0);i(13)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,i=this._i;return i>=e.length?{value:void 0,done:!0}:(t=o(e,i),this._i+=t.length,{value:t,done:!1})})},function(t,e,i){var o=i(39),n=i(12);t.exports=function(t){return function(e,i){var s,r,a=String(n(e)),h=o(i),d=a.length;return h<0||h>=d?t?"":void 0:(s=a.charCodeAt(h),s<55296||s>56319||h+1===d||(r=a.charCodeAt(h+1))<56320||r>57343?t?a.charAt(h):s:t?a.slice(h,h+2):(s-55296<<10)+(r-56320)+65536)}}},function(t,e,i){var o=i(22),n=i(53);t.exports=i(17).getIterator=function(t){var e=n(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return o(e.call(t))}},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).getIteratorMethod=function(t){if(void 0!=t)return t[n]||t["@@iterator"]||s[o(t)]}},function(t,e,i){var o=i(11),n=i(47)("toStringTag"),s="Arguments"==o(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,i,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=r(e=Object(t),n))?i:s?o(e):"Object"==(a=o(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,i){t.exports={default:i(56),__esModule:!0}},function(t,e,i){i(57);var o=i(17).Object;t.exports=function(t,e){return o.create(t,e)}},function(t,e,i){var o=i(15);o(o.S,"Object",{create:i(33)})},function(t,e,i){t.exports={default:i(59),__esModule:!0}},function(t,e,i){i(60),t.exports=i(17).Object.keys},function(t,e,i){var o=i(49),n=i(35);i(61)("keys",function(){return function(t){return n(o(t))}})},function(t,e,i){var o=i(15),n=i(17),s=i(26);t.exports=function(t,e){var i=(n.Object||{})[t]||Object[t],r={};r[t]=e(i),o(o.S+o.F*s(function(){i(1)}),"Object",r)}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(63),s=o(n),r=i(66),a=o(r),h="function"==typeof a.default&&"symbol"==typeof s.default?function(t){return typeof t}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":typeof t};e.default="function"==typeof a.default&&"symbol"===h(s.default)?function(t){return"undefined"==typeof t?"undefined":h(t)}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":"undefined"==typeof t?"undefined":h(t)}},function(t,e,i){t.exports={default:i(64),__esModule:!0}},function(t,e,i){i(50),i(4),t.exports=i(65).f("iterator")},function(t,e,i){e.f=i(47)},function(t,e,i){t.exports={default:i(67),__esModule:!0}},function(t,e,i){i(68),i(79),i(80),i(81),t.exports=i(17).Symbol},function(t,e,i){var o=i(16),n=i(31),s=i(25),r=i(15),a=i(30),h=i(69).KEY,d=i(26),l=i(42),u=i(46),p=i(43),c=i(47),f=i(65),m=i(70),g=i(71),v=i(72),y=i(75),b=i(22),_=i(9),w=i(28),x=i(29),D=i(33),S=i(76),k=i(78),C=i(21),T=i(35),M=k.f,O=C.f,E=S.f,P=o.Symbol,I=o.JSON,A=I&&I.stringify,N="prototype",R=c("_hidden"),L=c("toPrimitive"),F={}.propertyIsEnumerable,H=l("symbol-registry"),Y=l("symbols"),j=l("op-symbols"),G=Object[N],z="function"==typeof P,W=o.QObject,B=!W||!W[N]||!W[N].findChild,U=s&&d(function(){return 7!=D(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a})?function(t,e,i){var o=M(G,e);o&&delete G[e],O(t,e,i),o&&t!==G&&O(G,e,o)}:O,V=function(t){var e=Y[t]=D(P[N]);return e._k=t,e},q=z&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},X=function(t,e,i){return t===G&&X(j,e,i),b(t),e=w(e,!0),b(i),n(Y,e)?(i.enumerable?(n(t,R)&&t[R][e]&&(t[R][e]=!1),i=D(i,{enumerable:x(0,!1)})):(n(t,R)||O(t,R,x(1,{})),t[R][e]=!0),U(t,e,i)):O(t,e,i)},Z=function(t,e){b(t);for(var i,o=v(e=_(e)),n=0,s=o.length;s>n;)X(t,i=o[n++],e[i]);return t},K=function(t,e){return void 0===e?D(t):Z(D(t),e)},$=function(t){var e=F.call(this,t=w(t,!0));return!(this===G&&n(Y,t)&&!n(j,t))&&(!(e||!n(this,t)||!n(Y,t)||n(this,R)&&this[R][t])||e)},J=function(t,e){if(t=_(t),e=w(e,!0),t!==G||!n(Y,e)||n(j,e)){var i=M(t,e);return!i||!n(Y,e)||n(t,R)&&t[R][e]||(i.enumerable=!0),i}},Q=function(t){for(var e,i=E(_(t)),o=[],s=0;i.length>s;)n(Y,e=i[s++])||e==R||e==h||o.push(e);return o},tt=function(t){for(var e,i=t===G,o=E(i?j:_(t)),s=[],r=0;o.length>r;)!n(Y,e=o[r++])||i&&!n(G,e)||s.push(Y[e]);return s};z||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(i){this===G&&e.call(j,i),n(this,R)&&n(this[R],t)&&(this[R][t]=!1),U(this,t,x(1,i))};return s&&B&&U(G,t,{configurable:!0,set:e}),V(t)},a(P[N],"toString",function(){return this._k}),k.f=J,C.f=X,i(77).f=S.f=Q,i(74).f=$,i(73).f=tt,s&&!i(14)&&a(G,"propertyIsEnumerable",$,!0),f.f=function(t){return V(c(t))}),r(r.G+r.W+r.F*!z,{Symbol:P});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),it=0;et.length>it;)c(et[it++]);for(var et=T(c.store),it=0;et.length>it;)m(et[it++]);r(r.S+r.F*!z,"Symbol",{for:function(t){return n(H,t+="")?H[t]:H[t]=P(t)},keyFor:function(t){if(q(t))return g(H,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){B=!0},useSimple:function(){B=!1}}),r(r.S+r.F*!z,"Object",{create:K,defineProperty:X,defineProperties:Z,getOwnPropertyDescriptor:J,getOwnPropertyNames:Q,getOwnPropertySymbols:tt}),I&&r(r.S+r.F*(!z||d(function(){var t=P();return"[null]"!=A([t])||"{}"!=A({a:t})||"{}"!=A(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!q(t)){for(var e,i,o=[t],n=1;arguments.length>n;)o.push(arguments[n++]);return e=o[1],"function"==typeof e&&(i=e),!i&&y(e)||(e=function(t,e){if(i&&(e=i.call(this,t,e)),!q(e))return e}),o[1]=e,A.apply(I,o)}}}),P[N][L]||i(20)(P[N],L,P[N].valueOf),u(P,"Symbol"),u(Math,"Math",!0),u(o.JSON,"JSON",!0)},function(t,e,i){var o=i(43)("meta"),n=i(23),s=i(31),r=i(21).f,a=0,h=Object.isExtensible||function(){return!0},d=!i(26)(function(){return h(Object.preventExtensions({}))}),l=function(t){r(t,o,{value:{i:"O"+ ++a,w:{}}})},u=function(t,e){if(!n(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!s(t,o)){if(!h(t))return"F";if(!e)return"E";l(t)}return t[o].i},p=function(t,e){if(!s(t,o)){if(!h(t))return!0;if(!e)return!1;l(t)}return t[o].w},c=function(t){return d&&f.NEED&&h(t)&&!s(t,o)&&l(t),t},f=t.exports={KEY:o,NEED:!1,fastKey:u,getWeak:p,onFreeze:c}},function(t,e,i){var o=i(16),n=i(17),s=i(14),r=i(65),a=i(21).f;t.exports=function(t){var e=n.Symbol||(n.Symbol=s?{}:o.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:r.f(t)})}},function(t,e,i){var o=i(35),n=i(9);t.exports=function(t,e){for(var i,s=n(t),r=o(s),a=r.length,h=0;a>h;)if(s[i=r[h++]]===e)return i}},function(t,e,i){var o=i(35),n=i(73),s=i(74);t.exports=function(t){var e=o(t),i=n.f;if(i)for(var r,a=i(t),h=s.f,d=0;a.length>d;)h.call(t,r=a[d++])&&e.push(r);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,i){var o=i(11);t.exports=Array.isArray||function(t){return"Array"==o(t)}},function(t,e,i){var o=i(9),n=i(77).f,s={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return n(t)}catch(t){return r.slice()}};t.exports.f=function(t){return r&&"[object Window]"==s.call(t)?a(t):n(o(t))}},function(t,e,i){var o=i(36),n=i(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return o(t,n)}},function(t,e,i){var o=i(74),n=i(29),s=i(9),r=i(28),a=i(31),h=i(24),d=Object.getOwnPropertyDescriptor;e.f=i(25)?d:function(t,e){if(t=s(t),e=r(e,!0),h)try{return d(t,e)}catch(t){}if(a(t,e))return n(!o.f.call(t,e),t[e])}},function(t,e){},function(t,e,i){i(70)("asyncIterator")},function(t,e,i){i(70)("observable")},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(83)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return go.apply(null,arguments)}function i(t){go=t}function o(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function n(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){var e;for(e in t)return!1;return!0}function r(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function a(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){var i,o=[];for(i=0;i0)for(i in bo)o=bo[i],n=e[o],g(n)||(t[o]=n);return t}function y(t){v(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),_o===!1&&(_o=!0,e.updateOffset(this),_o=!1)}function b(t){return t instanceof y||null!=t&&null!=t._isAMomentObject}function _(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=_(e)),i}function x(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;o0?"future":"past"];return C(i)?i(e):i.replace(/%s/i,e)}function L(t,e){var i=t.toLowerCase();Po[i]=Po[i+"s"]=Po[e]=t}function F(t){return"string"==typeof t?Po[t]||Po[t.toLowerCase()]:void 0}function H(t){var e,i,o={};for(i in t)d(t,i)&&(e=F(i),e&&(o[e]=t[i]));return o}function Y(t,e){Io[t]=e}function j(t){var e=[];for(var i in t)e.push({unit:i,priority:Io[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}function G(t,i){return function(o){return null!=o?(W(this,t,o),e.updateOffset(this,i),this):z(this,t)}}function z(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function W(t,e,i){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](i)}function B(t){return t=F(t),C(this[t])?this[t]():this}function U(t,e){if("object"==typeof t){t=H(t);for(var i=j(t),o=0;o=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function q(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(Lo[t]=n),e&&(Lo[e[0]]=function(){return V(n.apply(this,arguments),e[1],e[2])}),i&&(Lo[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function X(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function Z(t){var e,i,o=t.match(Ao);for(e=0,i=o.length;e=0&&No.test(t);)t=t.replace(No,i),No.lastIndex=0,o-=1;return t}function J(t,e,i){tn[t]=C(e)?e:function(t,o){return t&&i?i:e}}function Q(t,e){return d(tn,t)?tn[t](e._strict,e._locale):new RegExp(tt(t))}function tt(t){return et(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function et(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function it(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),r(e)&&(o=function(t,i){i[e]=w(t)}),i=0;i=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function _t(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function wt(t,e,i){var o=7+e-i,n=(7+_t(t,0,o).getUTCDay()-e)%7;return-n+o-1}function xt(t,e,i,o,n){var s,r,a=(7+i-o)%7,h=wt(t,o,n),d=1+7*(e-1)+a+h;return d<=0?(s=t-1,r=gt(s)+d):d>gt(t)?(s=t+1,r=d-gt(t)):(s=t,r=d),{year:s,dayOfYear:r}}function Dt(t,e,i){var o,n,s=wt(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return r<1?(n=t.year()-1,o=r+St(n,e,i)):r>St(t.year(),e,i)?(o=r-St(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function St(t,e,i){var o=wt(t,e,i),n=wt(t+1,e,i);return(gt(t)-o+n)/7}function kt(t){return Dt(t,this._week.dow,this._week.doy).week}function Ct(){return this._week.dow}function Tt(){return this._week.doy}function Mt(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Ot(t){var e=Dt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Et(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Pt(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function It(t,e){return t?o(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:this._weekdays}function At(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function Nt(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function Rt(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;o<7;++o)s=u([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=pn.call(this._weekdaysParse,r),n!==-1?n:null):"ddd"===e?(n=pn.call(this._shortWeekdaysParse,r),n!==-1?n:null):(n=pn.call(this._minWeekdaysParse,r),n!==-1?n:null):"dddd"===e?(n=pn.call(this._weekdaysParse,r),n!==-1?n:(n=pn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=pn.call(this._minWeekdaysParse,r),n!==-1?n:null))):"ddd"===e?(n=pn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=pn.call(this._weekdaysParse,r),n!==-1?n:(n=pn.call(this._minWeekdaysParse,r),n!==-1?n:null))):(n=pn.call(this._minWeekdaysParse,r),n!==-1?n:(n=pn.call(this._weekdaysParse,r),n!==-1?n:(n=pn.call(this._shortWeekdaysParse,r),n!==-1?n:null)))}function Lt(t,e,i){var o,n,s;if(this._weekdaysParseExact)return Rt.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;o<7;o++){if(n=u([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function Ft(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Et(t,this.localeData()),this.add(t-e,"d")):e}function Ht(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Yt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Pt(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function jt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Wt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=Dn),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function Gt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Wt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Sn),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function zt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Wt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=kn),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Wt(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],h=[],d=[];for(e=0;e<7;e++)i=u([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),h.push(s),d.push(o),d.push(n),d.push(s);for(r.sort(t),a.sort(t),h.sort(t),d.sort(t),e=0;e<7;e++)a[e]=et(a[e]),h[e]=et(h[e]),d[e]=et(d[e]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Bt(){return this.hours()%12||12}function Ut(){return this.hours()||24}function Vt(t,e){q(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function qt(t,e){return e._meridiemParse}function Xt(t){return"p"===(t+"").toLowerCase().charAt(0)}function Zt(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Kt(t){return t?t.toLowerCase().replace("_","-"):t}function $t(t){for(var e,i,o,n,s=0;s0;){if(o=Jt(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&x(n,i,!0)>=e-1)break;e--}s++}return null}function Jt(e){var i=null;if(!En[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Cn._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Qt(i)}catch(t){}return En[e]}function Qt(t,e){var i;return t&&(i=g(e)?ie(t):te(t,e),i&&(Cn=i)),Cn._abbr}function te(t,e){if(null!==e){var i=On;if(e.abbr=t,null!=En[t])k("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=En[t]._config;else if(null!=e.parentLocale){if(null==En[e.parentLocale])return Pn[e.parentLocale]||(Pn[e.parentLocale]=[]),Pn[e.parentLocale].push({name:t,config:e}),null;i=En[e.parentLocale]._config}return En[t]=new O(M(i,e)),Pn[t]&&Pn[t].forEach(function(t){te(t.name,t.config)}),Qt(t),En[t]}return delete En[t],null}function ee(t,e){if(null!=e){var i,o=On;null!=En[t]&&(o=En[t]._config),e=M(o,e),i=new O(e),i.parentLocale=En[t],En[t]=i,Qt(t)}else null!=En[t]&&(null!=En[t].parentLocale?En[t]=En[t].parentLocale:null!=En[t]&&delete En[t]);return En[t]}function ie(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Cn;if(!o(t)){if(e=Jt(t))return e;t=[t]}return $t(t)}function oe(){return So(En)}function ne(t){var e,i=t._a;return i&&c(t).overflow===-2&&(e=i[nn]<0||i[nn]>11?nn:i[sn]<1||i[sn]>st(i[on],i[nn])?sn:i[rn]<0||i[rn]>24||24===i[rn]&&(0!==i[an]||0!==i[hn]||0!==i[dn])?rn:i[an]<0||i[an]>59?an:i[hn]<0||i[hn]>59?hn:i[dn]<0||i[dn]>999?dn:-1,c(t)._overflowDayOfYear&&(esn)&&(e=sn),c(t)._overflowWeeks&&e===-1&&(e=ln),c(t)._overflowWeekday&&e===-1&&(e=un),c(t).overflow=e),t}function se(t){var e,i,o,n,s,r,a=t._i,h=In.exec(a)||An.exec(a);if(h){for(c(t).iso=!0,e=0,i=Rn.length;egt(n)&&(c(t)._overflowDayOfYear=!0),i=_t(n,0,t._dayOfYear),t._a[nn]=i.getUTCMonth(),t._a[sn]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[rn]&&0===t._a[an]&&0===t._a[hn]&&0===t._a[dn]&&(t._nextDay=!0,t._a[rn]=0),t._d=(t._useUTC?_t:bt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[rn]=24)}}function le(t){var e,i,o,n,s,r,a,h;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)s=1,r=4,i=ae(e.GG,t._a[on],Dt(be(),1,4).year),o=ae(e.W,1),n=ae(e.E,1),(n<1||n>7)&&(h=!0);else{s=t._locale._week.dow,r=t._locale._week.doy;var d=Dt(be(),s,r);i=ae(e.gg,t._a[on],d.year),o=ae(e.w,d.week),null!=e.d?(n=e.d,(n<0||n>6)&&(h=!0)):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(h=!0)):n=s}o<1||o>St(i,s,r)?c(t)._overflowWeeks=!0:null!=h?c(t)._overflowWeekday=!0:(a=xt(i,o,n,s,r),t._a[on]=a.year,t._dayOfYear=a.dayOfYear)}function ue(t){if(t._f===e.ISO_8601)return void se(t);t._a=[],c(t).empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=$(t._f,t._locale).match(Ao)||[],i=0;i0&&c(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Lo[s]?(o?c(t).empty=!1:c(t).unusedTokens.push(s),nt(s,o,t)):t._strict&&!o&&c(t).unusedTokens.push(s);c(t).charsLeftOver=h-d,a.length>0&&c(t).unusedInput.push(a),t._a[rn]<=12&&c(t).bigHour===!0&&t._a[rn]>0&&(c(t).bigHour=void 0),c(t).parsedDateParts=t._a.slice(0),c(t).meridiem=t._meridiem,t._a[rn]=pe(t._locale,t._a[rn],t._meridiem),de(t),ne(t)}function pe(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&e<12&&(e+=12),o||12!==e||(e=0),e):e}function ce(t){var e,i,o,n,s;if(0===t._f.length)return c(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Fe(){if(!g(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),t=ge(t),t._a){var e=t._isUTC?u(t._a):be(t._a);this._isDSTShifted=this.isValid()&&x(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function He(){return!!this.isValid()&&!this._isUTC}function Ye(){return!!this.isValid()&&this._isUTC}function je(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Ge(t,e){var i,o,n,s=t,a=null;return Se(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:r(t)?(s={},e?s[e]=t:s.milliseconds=t):(a=zn.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:w(a[sn])*i,h:w(a[rn])*i,m:w(a[an])*i,s:w(a[hn])*i,ms:w(ke(1e3*a[dn]))*i}):(a=Wn.exec(t))?(i="-"===a[1]?-1:1,s={y:ze(a[2],i),M:ze(a[3],i),w:ze(a[4],i),d:ze(a[5],i),h:ze(a[6],i),m:ze(a[7],i),s:ze(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Be(be(s.from),be(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new De(s),Se(t)&&d(t,"_locale")&&(o._locale=t._locale),o}function ze(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function We(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Be(t,e){var i;return t.isValid()&&e.isValid()?(e=Me(e,t),t.isBefore(e)?i=We(t,e):(i=We(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function Ue(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(k(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=Ge(i,o),Ve(this,n,t),this}}function Ve(t,i,o,n){var s=i._milliseconds,r=ke(i._days),a=ke(i._months);t.isValid()&&(n=null==n||n,s&&t._d.setTime(t._d.valueOf()+s*o),r&&W(t,"Date",z(t,"Date")+r*o),a&<(t,z(t,"Month")+a*o),n&&e.updateOffset(t,r||a))}function qe(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"}function Xe(t,i){var o=t||be(),n=Me(o,this).startOf("day"),s=e.calendarFormat(this,n)||"sameElse",r=i&&(C(i[s])?i[s].call(this,o):i[s]);return this.format(r||this.localeData().calendar(s,this,be(o)))}function Ze(){return new y(this)}function Ke(t,e){var i=b(t)?t:be(t);return!(!this.isValid()||!i.isValid())&&(e=F(g(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()s&&(e=s),Ii.call(this,t,e,i,o,n))}function Ii(t,e,i,o,n){var s=xt(t,e,i,o,n),r=_t(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Ai(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Ni(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function Ri(t,e){e[dn]=w(1e3*("0."+t))}function Li(){return this._isUTC?"UTC":""}function Fi(){return this._isUTC?"Coordinated Universal Time":""}function Hi(t){return be(1e3*t)}function Yi(){return be.apply(null,arguments).parseZone()}function ji(t){return t}function Gi(t,e,i,o){var n=ie(),s=u().set(o,e);return n[i](s,t)}function zi(t,e,i){if(r(t)&&(e=t,t=void 0),t=t||"",null!=e)return Gi(t,e,i,"month");var o,n=[];for(o=0;o<12;o++)n[o]=Gi(t,o,i,"month");return n}function Wi(t,e,i,o){"boolean"==typeof t?(r(e)&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,r(e)&&(i=e,e=void 0),e=e||"");var n=ie(),s=t?n._week.dow:0;if(null!=i)return Gi(e,(i+s)%7,o,"day");var a,h=[];for(a=0;a<7;a++)h[a]=Gi(e,(a+s)%7,o,"day");return h}function Bi(t,e){return zi(t,e,"months")}function Ui(t,e){return zi(t,e,"monthsShort")}function Vi(t,e,i){return Wi(t,e,i,"weekdays")}function qi(t,e,i){return Wi(t,e,i,"weekdaysShort")}function Xi(t,e,i){return Wi(t,e,i,"weekdaysMin")}function Zi(){var t=this._data;return this._milliseconds=ts(this._milliseconds),this._days=ts(this._days),this._months=ts(this._months),t.milliseconds=ts(t.milliseconds),t.seconds=ts(t.seconds),t.minutes=ts(t.minutes),t.hours=ts(t.hours),t.months=ts(t.months),t.years=ts(t.years),this}function Ki(t,e,i,o){var n=Ge(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function $i(t,e){return Ki(this,t,e,1)}function Ji(t,e){return Ki(this,t,e,-1)}function Qi(t){return t<0?Math.floor(t):Math.ceil(t)}function to(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data;return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*Qi(io(a)+r),r=0,a=0),h.milliseconds=s%1e3,t=_(s/1e3),h.seconds=t%60,e=_(t/60),h.minutes=e%60,i=_(e/60),h.hours=i%24,r+=_(i/24),n=_(eo(r)),a+=n,r-=Qi(io(n)),o=_(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function eo(t){return 4800*t/146097}function io(t){return 146097*t/4800; +}function oo(t){var e,i,o=this._milliseconds;if(t=F(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+eo(e),"month"===t?i:i/12;switch(e=this._days+Math.round(io(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function no(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12)}function so(t){return function(){return this.as(t)}}function ro(t){return t=F(t),this[t+"s"]()}function ao(t){return function(){return this._data[t]}}function ho(){return _(this.days()/7)}function lo(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function uo(t,e,i){var o=Ge(t).abs(),n=gs(o.as("s")),s=gs(o.as("m")),r=gs(o.as("h")),a=gs(o.as("d")),h=gs(o.as("M")),d=gs(o.as("y")),l=n0,l[4]=i,lo.apply(null,l)}function po(t){return void 0===t?gs:"function"==typeof t&&(gs=t,!0)}function co(t,e){return void 0!==vs[t]&&(void 0===e?vs[t]:(vs[t]=e,!0))}function fo(t){var e=this.localeData(),i=uo(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function mo(){var t,e,i,o=ys(this._milliseconds)/1e3,n=ys(this._days),s=ys(this._months);t=_(o/60),e=_(t/60),o%=60,t%=60,i=_(s/12),s%=12;var r=i,a=s,h=n,d=e,l=t,u=o,p=this.asSeconds();return p?(p<0?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(d||l||u?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(u?u+"S":""):"P0D"}var go,vo;vo=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;o68?1900:2e3)};var yn=G("FullYear",!0);q("w",["ww",2],"wo","week"),q("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),Y("week",5),Y("isoWeek",5),J("w",zo),J("ww",zo,Ho),J("W",zo),J("WW",zo,Ho),ot(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=w(t)});var bn={dow:0,doy:6};q("d",0,"do","day"),q("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),q("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),q("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),q("e",0,0,"weekday"),q("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),Y("day",11),Y("weekday",11),Y("isoWeekday",11),J("d",zo),J("e",zo),J("E",zo),J("dd",function(t,e){return e.weekdaysMinRegex(t)}),J("ddd",function(t,e){return e.weekdaysShortRegex(t)}),J("dddd",function(t,e){return e.weekdaysRegex(t)}),ot(["dd","ddd","dddd"],function(t,e,i,o){var n=i._locale.weekdaysParse(t,o,i._strict);null!=n?e.d=n:c(i).invalidWeekday=t}),ot(["d","e","E"],function(t,e,i,o){e[o]=w(t)});var _n="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),wn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Dn=Qo,Sn=Qo,kn=Qo;q("H",["HH",2],0,"hour"),q("h",["hh",2],0,Bt),q("k",["kk",2],0,Ut),q("hmm",0,0,function(){return""+Bt.apply(this)+V(this.minutes(),2)}),q("hmmss",0,0,function(){return""+Bt.apply(this)+V(this.minutes(),2)+V(this.seconds(),2)}),q("Hmm",0,0,function(){return""+this.hours()+V(this.minutes(),2)}),q("Hmmss",0,0,function(){return""+this.hours()+V(this.minutes(),2)+V(this.seconds(),2)}),Vt("a",!0),Vt("A",!1),L("hour","h"),Y("hour",13),J("a",qt),J("A",qt),J("H",zo),J("h",zo),J("HH",zo,Ho),J("hh",zo,Ho),J("hmm",Wo),J("hmmss",Bo),J("Hmm",Wo),J("Hmmss",Bo),it(["H","HH"],rn),it(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),it(["h","hh"],function(t,e,i){e[rn]=w(t),c(i).bigHour=!0}),it("hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o)),c(i).bigHour=!0}),it("hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[hn]=w(t.substr(n)),c(i).bigHour=!0}),it("Hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o))}),it("Hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[hn]=w(t.substr(n))});var Cn,Tn=/[ap]\.?m?\.?/i,Mn=G("Hours",!0),On={calendar:ko,longDateFormat:Co,invalidDate:To,ordinal:Mo,ordinalParse:Oo,relativeTime:Eo,months:fn,monthsShort:mn,week:bn,weekdays:_n,weekdaysMin:xn,weekdaysShort:wn,meridiemParse:Tn},En={},Pn={},In=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,An=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Nn=/Z|[+-]\d\d(?::?\d\d)?/,Rn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ln=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Fn=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=S("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),e.ISO_8601=function(){};var Hn=S("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=be.apply(null,arguments);return this.isValid()&&t.isValid()?tthis?this:t:m()}),jn=function(){return Date.now?Date.now():+new Date};Ce("Z",":"),Ce("ZZ",""),J("Z",$o),J("ZZ",$o),it(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Te($o,t)});var Gn=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var zn=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Wn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Ge.fn=De.prototype;var Bn=Ue(1,"add"),Un=Ue(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Vn=S("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});q(0,["gg",2],0,function(){return this.weekYear()%100}),q(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ci("gggg","weekYear"),Ci("ggggg","weekYear"),Ci("GGGG","isoWeekYear"),Ci("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),Y("weekYear",1),Y("isoWeekYear",1),J("G",Zo),J("g",Zo),J("GG",zo,Ho),J("gg",zo,Ho),J("GGGG",Vo,jo),J("gggg",Vo,jo),J("GGGGG",qo,Go),J("ggggg",qo,Go),ot(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=w(t)}),ot(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),q("Q",0,"Qo","quarter"),L("quarter","Q"),Y("quarter",7),J("Q",Fo),it("Q",function(t,e){e[nn]=3*(w(t)-1)}),q("D",["DD",2],"Do","date"),L("date","D"),Y("date",9),J("D",zo),J("DD",zo,Ho),J("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),it(["D","DD"],sn),it("Do",function(t,e){e[sn]=w(t.match(zo)[0],10)});var qn=G("Date",!0);q("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),Y("dayOfYear",4),J("DDD",Uo),J("DDDD",Yo),it(["DDD","DDDD"],function(t,e,i){i._dayOfYear=w(t)}),q("m",["mm",2],0,"minute"),L("minute","m"),Y("minute",14),J("m",zo),J("mm",zo,Ho),it(["m","mm"],an);var Xn=G("Minutes",!1);q("s",["ss",2],0,"second"),L("second","s"),Y("second",15),J("s",zo),J("ss",zo,Ho),it(["s","ss"],hn);var Zn=G("Seconds",!1);q("S",0,0,function(){return~~(this.millisecond()/100)}),q(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),q(0,["SSS",3],0,"millisecond"),q(0,["SSSS",4],0,function(){return 10*this.millisecond()}),q(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),q(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),q(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),q(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),q(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),Y("millisecond",16),J("S",Uo,Fo),J("SS",Uo,Ho),J("SSS",Uo,Yo);var Kn;for(Kn="SSSS";Kn.length<=9;Kn+="S")J(Kn,Xo);for(Kn="S";Kn.length<=9;Kn+="S")it(Kn,Ri);var $n=G("Milliseconds",!1);q("z",0,0,"zoneAbbr"),q("zz",0,0,"zoneName");var Jn=y.prototype;Jn.add=Bn,Jn.calendar=Xe,Jn.clone=Ze,Jn.diff=ii,Jn.endOf=mi,Jn.format=ai,Jn.from=hi,Jn.fromNow=di,Jn.to=li,Jn.toNow=ui,Jn.get=B,Jn.invalidAt=Si,Jn.isAfter=Ke,Jn.isBefore=$e,Jn.isBetween=Je,Jn.isSame=Qe,Jn.isSameOrAfter=ti,Jn.isSameOrBefore=ei,Jn.isValid=xi,Jn.lang=Vn,Jn.locale=pi,Jn.localeData=ci,Jn.max=Yn,Jn.min=Hn,Jn.parsingFlags=Di,Jn.set=U,Jn.startOf=fi,Jn.subtract=Un,Jn.toArray=bi,Jn.toObject=_i,Jn.toDate=yi,Jn.toISOString=si,Jn.inspect=ri,Jn.toJSON=wi,Jn.toString=ni,Jn.unix=vi,Jn.valueOf=gi,Jn.creationData=ki,Jn.year=yn,Jn.isLeapYear=yt,Jn.weekYear=Ti,Jn.isoWeekYear=Mi,Jn.quarter=Jn.quarters=Ai,Jn.month=ut,Jn.daysInMonth=pt,Jn.week=Jn.weeks=Mt,Jn.isoWeek=Jn.isoWeeks=Ot,Jn.weeksInYear=Ei,Jn.isoWeeksInYear=Oi,Jn.date=qn,Jn.day=Jn.days=Ft,Jn.weekday=Ht,Jn.isoWeekday=Yt,Jn.dayOfYear=Ni,Jn.hour=Jn.hours=Mn,Jn.minute=Jn.minutes=Xn,Jn.second=Jn.seconds=Zn,Jn.millisecond=Jn.milliseconds=$n,Jn.utcOffset=Ee,Jn.utc=Ie,Jn.local=Ae,Jn.parseZone=Ne,Jn.hasAlignedHourOffset=Re,Jn.isDST=Le,Jn.isLocal=He,Jn.isUtcOffset=Ye,Jn.isUtc=je,Jn.isUTC=je,Jn.zoneAbbr=Li,Jn.zoneName=Fi,Jn.dates=S("dates accessor is deprecated. Use date instead.",qn),Jn.months=S("months accessor is deprecated. Use month instead",ut),Jn.years=S("years accessor is deprecated. Use year instead",yn),Jn.zone=S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Pe),Jn.isDSTShifted=S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Fe);var Qn=O.prototype;Qn.calendar=E,Qn.longDateFormat=P,Qn.invalidDate=I,Qn.ordinal=A,Qn.preparse=ji,Qn.postformat=ji,Qn.relativeTime=N,Qn.pastFuture=R,Qn.set=T,Qn.months=rt,Qn.monthsShort=at,Qn.monthsParse=dt,Qn.monthsRegex=ft,Qn.monthsShortRegex=ct,Qn.week=kt,Qn.firstDayOfYear=Tt,Qn.firstDayOfWeek=Ct,Qn.weekdays=It,Qn.weekdaysMin=Nt,Qn.weekdaysShort=At,Qn.weekdaysParse=Lt,Qn.weekdaysRegex=jt,Qn.weekdaysShortRegex=Gt,Qn.weekdaysMinRegex=zt,Qn.isPM=Xt,Qn.meridiem=Zt,Qt("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=S("moment.lang is deprecated. Use moment.locale instead.",Qt),e.langData=S("moment.langData is deprecated. Use moment.localeData instead.",ie);var ts=Math.abs,es=so("ms"),is=so("s"),os=so("m"),ns=so("h"),ss=so("d"),rs=so("w"),as=so("M"),hs=so("y"),ds=ao("milliseconds"),ls=ao("seconds"),us=ao("minutes"),ps=ao("hours"),cs=ao("days"),fs=ao("months"),ms=ao("years"),gs=Math.round,vs={s:45,m:45,h:22,d:26,M:11},ys=Math.abs,bs=De.prototype;return bs.abs=Zi,bs.add=$i,bs.subtract=Ji,bs.as=oo,bs.asMilliseconds=es,bs.asSeconds=is,bs.asMinutes=os,bs.asHours=ns,bs.asDays=ss,bs.asWeeks=rs,bs.asMonths=as,bs.asYears=hs,bs.valueOf=no,bs._bubble=to,bs.get=ro,bs.milliseconds=ds,bs.seconds=ls,bs.minutes=us,bs.hours=ps,bs.days=cs,bs.weeks=ho,bs.months=fs,bs.years=ms,bs.humanize=fo,bs.toISOString=mo,bs.toString=mo,bs.toJSON=mo,bs.locale=pi,bs.localeData=ci,bs.toIsoString=S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",mo),bs.lang=Vn,q("X",0,0,"unix"),q("x",0,0,"valueOf"),J("x",Zo),J("X",Jo),it("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),it("x",function(t,e,i){i._d=new Date(w(t))}),e.version="2.17.1",i(be),e.fn=Jn,e.min=we,e.max=xe,e.now=jn,e.utc=u,e.unix=Hi,e.months=Bi,e.isDate=a,e.locale=Qt,e.invalid=m,e.duration=Ge,e.isMoment=b,e.weekdays=Vi,e.parseZone=Yi,e.localeData=ie,e.isDuration=Se,e.monthsShort=Ui,e.weekdaysMin=Xi,e.defineLocale=te,e.updateLocale=ee,e.locales=oe,e.weekdaysShort=qi,e.normalizeUnits=F,e.relativeTimeRounding=po,e.relativeTimeThreshold=co,e.calendarFormat=qe,e.prototype=Jn,e})}).call(e,i(84)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=85},function(t,e){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){n<16&&(e[o+n++]=u[t])});n<16;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:v+1,d=a-g+(h-v)/1e4;if(d<0&&void 0===t.clockseq&&(r=r+1&16383),(d<0||a>g)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");g=a,v=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var p=t.node||f,c=0;c<6;c++)s[n+c]=p[c];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;a<16;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;e<16;e++)0===(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},p=0;p<256;p++)l[p]=(p+256).toString(16).substr(1),u[l[p]]=p;var c=r(),f=[1|c[0],c[1],c[2],c[3],c[4],c[5]],m=16383&(c[6]<<8|c[7]),g=0,v=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){n<0&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=(0,l.default)(this._options.type),o=0,n=i.length;on?1:or)&&(s=h,r=d)}return s},n.prototype.min=function(t){var e,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(e=0,i=n.length;ethis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var s=i(58),r=o(s),a=i(1),h=i(88);n.prototype.setData=function(t){var e,i,o,n,s;if(this._data){for(this._data.off&&this._data.off("*",this.listener),e=this._data.getIds({filter:this._options&&this._options.filter}),s=[],o=0,n=e.length;os)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=!e||void 0===e.animation||e.animation;this.range.setRange(r-a/2,r+a/2,h)}}},n.prototype.fit=function(t){var e,i=!t||void 0===t.animation||t.animation,o=this.itemsData&&this.itemsData.getDataSet();1===o.length&&void 0===o.get()[0].end?(e=this.getDataRange(),this.moveTo(e.min.valueOf(),{animation:i})):(e=this.getItemRange(),this.range.setRange(e.min,e.max,i))},n.prototype.getItemRange=function(){var t=this.getDataRange(),e=null!==t.min?t.min.valueOf():null,i=null!==t.max?t.max.valueOf():null,o=null,n=null;if(null!=e&&null!=i){var s=function(t){return l.convert(t.data.start,"Date").valueOf()},r=function(t){var e=void 0!=t.data.end?t.data.end:t.data.start;return l.convert(e,"Date").valueOf()},a=i-e;a<=0&&(a=10);var h=a/this.props.center.width;if(l.forEach(this.itemSet.items,function(t){t.groupShowing&&(t.show(),t.repositionX());var a=s(t),d=r(t);if(this.options.rtl)var l=a-(t.getWidthRight()+10)*h,u=d+(t.getWidthLeft()+10)*h;else var l=a-(t.getWidthLeft()+10)*h,u=d+(t.getWidthRight()+10)*h;li&&(i=u,n=t)}.bind(this)),o&&n){var d=o.getWidthLeft()+10,u=n.getWidthRight()+10,p=this.props.center.width-d-u;p>0&&(this.options.rtl?(e=s(o)-u*a/p,i=r(n)+d*a/p):(e=s(o)-d*a/p,i=r(n)+u*a/p))}}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},n.prototype.getDataRange=function(){var t=null,e=null,i=this.itemsData&&this.itemsData.getDataSet();return i&&i.forEach(function(i){var o=l.convert(i.start,"Date").valueOf(),n=l.convert(void 0!=i.end?i.end:i.start,"Date").valueOf();(null===t||oe)&&(e=n)}),{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},n.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY;if(this.options.rtl)var o=l.getAbsoluteRight(this.dom.centerContainer)-e;else var o=e-l.getAbsoluteLeft(this.dom.centerContainer);var n=i-l.getAbsoluteTop(this.dom.centerContainer),s=this.itemSet.itemFromTarget(t),r=this.itemSet.groupFromTarget(t),a=v.customTimeFromTarget(t),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),u=this.body.util.getStep(),p=this._toTime(o),c=h?h(p,d,u):p,f=l.getTarget(t),m=null;return null!=s?m="item":null!=a?m="custom-time":l.hasParent(f,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&l.hasParent(f,this.timeAxis2.dom.foreground)?m="axis":l.hasParent(f,this.itemSet.dom.labelSet)?m="group-label":l.hasParent(f,this.currentTime.bar)?m="current-time":l.hasParent(f,this.dom.center)&&(m="background"),{event:t,item:s?s.id:null,group:r?r.groupId:null,what:m,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:p,snappedTime:c}},n.prototype.toggleRollingMode=function(){this.range.rolling?this.range.stopRolling():(void 0==this.options.rollingMode&&this.setOptions(this.options),this.range.startRolling())},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(89),s=o(n),r=i(62),a=o(r),h=i(95),d=o(h),l=i(96),u=o(l),p=i(100),c=o(p),f=i(1),m=function(){function t(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,d.default)(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},f.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new c.default(n),this.wrapper=void 0}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===("undefined"==typeof t?"undefined":(0,a.default)(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),this.options.filter===!1&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):e!==!0&&e.indexOf(n)===-1||(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);if(this.options.showButton===!0){var s=document.createElement("div");s.className="vis-configuration vis-config-button",s.innerHTML="generate options",s.onclick=function(){t._printOptions()},s.onmouseover=function(){s.className="vis-configuration vis-config-button hover"},s.onmouseout=function(){s.className="vis-configuration vis-config-button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-configuration vis-config-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(s)}this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?i-1:0),n=1;n2&&void 0!==arguments[2]&&arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,i===!0?o.innerHTML=""+t+":":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&t.indexOf(e)!==-1&&(n=t.indexOf(e));for(var s=0;ss&&1!==s&&(a.max=Math.ceil(e*l),d=a.max,h="range increased"),a.value=e}else a.value=o;var u=document.createElement("input");u.className="vis-configuration vis-config-rangeinput",u.value=a.value;var p=this;a.onchange=function(){u.value=this.value,p._update(Number(this.value),i)},a.oninput=function(){u.value=this.value};var c=this._makeLabel(i[i.length-1],i),f=this._makeItem(i,c,a,u);""!==h&&this.popupHistory[f]!==d&&(this.popupHistory[f]=d,this._setupPopup(h,f))}},{key:"_setupPopup",value:function(t,e){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],h=f.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var d=this._getValue(h);if(a instanceof Array)this._handleArray(a,d,h);else if("string"==typeof a)this._makeTextInput(a,d,h);else if("boolean"==typeof a)this._makeCheckbox(a,d,h);else if(a instanceof Object){var l=!0;if(e.indexOf("physics")!==-1&&this.moduleOptions.physics.solver!==r&&(l=!1),l===!0)if(void 0!==a.enabled){var u=f.copyAndExtendArray(h,"enabled"),p=this._getValue(u);if(p===!0){var c=this._makeLabel(r,h,!0);this._makeItem(h,c),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,p,h)}else{var m=this._makeLabel(r,h,!0);this._makeItem(h,m),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i;t="true"===t||t,t="false"!==t&&t;for(var n=0;nvar options = "+(0,s.default)(t,null,2)+""}},{key:"getOptions",value:function(){for(var t={},e=0;e0&&void 0!==arguments[0]?arguments[0]:1;(0,a.default)(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return(0,d.default)(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};if("string"==typeof t)return e[t]}},{key:"setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),p.isString(t)===!0){if(p.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(p.isValidRGBA(t)===!0){var r=t.substr(5).substr(0,t.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(p.isValidHex(t)===!0){var a=p.hexToRGB(t);i={r:a.r,g:a.g,b:a.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var h=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:h}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+(0,s.default)(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e===!0&&(this.previousColor=p.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e===!0&&(this.initialColor=p.extend({},t)),this.color=t;var i=p.RGBToHSV(t.r,t.g,t.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=p.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=p.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.color,e=p.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(t){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(t){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var i=this;this.opacityRange.onchange=function(){i._setOpacity(this.value)},this.opacityRange.oninput=function(){i._setOpacity(this.value)},this.brightnessRange.onchange=function(){i._setBrightness(this.value)},this.brightnessRange.oninput=function(){i._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new l(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),u.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var a=2*Math.PI/360,h=1/360,d=1/this.r,l=void 0;for(s=0;s<360;s++)for(r=0;r0?d._handlers[t]=o:(i.off(t,s),delete d._handlers[t]))}),d},d.emit=function(e,o){t=o.target,i.emit(e,o)},d.destroy=function(){var t=i.element.hammer,e=t.indexOf(d);e!==-1&&t.splice(e,1),t.length||delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(t,e,i){var o;/*! Hammer.JS - v2.0.7 - 2016-04-22 * http://hammerjs.github.io/ * * Copyright (c) 2016 Jorik Tangelder; * Licensed under the MIT license */ -!function(n,s,r,a){function h(t,e,i){return setTimeout(c(t,i),e)}function d(t,e,i){return!!Array.isArray(t)&&(l(t,i[e],i),!0)}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function p(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&mt(o,i)}function c(t,e){return function(){return t.apply(e,arguments)}}function f(t,e){return typeof t==yt?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function g(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function v(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function y(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function S(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=N(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=A(o);e.timeStamp=wt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=H(a,h),e.distance=F(a,h),P(i,e),e.offsetDirection=L(e.deltaX,e.deltaY);var d=R(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=d.x,e.overallVelocityY=d.y,e.overallVelocity=_t(d.x)>_t(d.y)?d.x:d.y,e.scale=r?j(r.pointers,o):1,e.rotation=r?Y(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,I(i,e);var l=t.element;y(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==At&&s.eventType!==Lt||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function I(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=Ft&&(h>Nt||r.velocity===a)){var d=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,u=R(h,d,l);o=u.x,n=u.y,i=_t(u.x)>_t(u.y)?u.x:u.y,s=L(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function N(t){for(var e=[],i=0;i=_t(e)?t<0?Yt:jt:e<0?Gt:zt}function F(t,e,i){i||(i=Vt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function H(t,e,i){i||(i=Vt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function Y(t,e){return H(e[1],e[0],qt)+H(t[1],t[0],qt)}function j(t,e){return F(e[0],e[1],qt)/F(t[0],t[1],qt)}function G(){this.evEl=Zt,this.evWin=Kt,this.pressed=!1,T.apply(this,arguments)}function z(){this.evEl=Qt,this.evWin=te,T.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function W(){this.evTarget=ie,this.evWin=oe,this.started=!1,T.apply(this,arguments)}function B(t,e){var i=x(t.touches),o=x(t.changedTouches);return e&(Lt|Ft)&&(i=D(i.concat(o),"identifier",!0)),[i,o]}function U(){this.evTarget=se,this.targetIds={},T.apply(this,arguments)}function V(t,e){var i=x(t.touches),o=this.targetIds;if(e&(At|Rt)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=x(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return y(t.target,h)}),e===At)for(n=0;n-1&&o.splice(t,1)};setTimeout(n,re)}}function K(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,o=0;o-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;o<_e&&e(i.options.event+et(o)),e(i.options.event),t.additionalEvent&&e(t.additionalEvent),o>=_e&&e(i.options.event+et(o))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=De)},canEmit:function(){for(var t=0;te.threshold&&n&e.direction},attrTest:function(t){return nt.prototype.attrTest.call(this,t)&&(this.state&ye||!(this.state&ye)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=it(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),p(rt,nt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ce]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ye)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),p(at,tt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[ue]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(Lt|Ft)&&!n)this.reset();else if(t.eventType&At)this.reset(),this._timer=h(function(){this.state=we,this.tryEmit()},e.time,this);else if(t.eventType&Lt)return we;return De},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===we&&(t&&t.eventType&Lt?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=wt(),this.manager.emit(this.options.event,this._input)))}}),p(ht,nt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ce]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ye)}}),p(dt,nt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Wt|Bt,pointers:1},getTouchAction:function(){return st.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Wt|Bt)?e=t.overallVelocity:i&Wt?e=t.overallVelocityX:i&Bt&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&_t(e)>this.options.velocity&&t.eventType&Lt},emit:function(t){var e=it(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),p(lt,tt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[pe]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distances.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),v):n.distance<=r?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),v):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print((0,d.default)(i))+t.printLocation(o,e),v),m=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=1e9,r="",a=[],h=e.toLowerCase(),d=void 0;for(var l in i){var u=void 0;if(void 0!==i[l].__type__&&n===!0){var p=t.findInOptions(e,i[l],f.copyAndExtendArray(o,l));s>p.distance&&(r=p.closestMatch,a=p.path,s=p.distance,d=p.indexMatch)}else l.toLowerCase().indexOf(h)!==-1&&(d=l),u=t.levenshteinDistance(e,l),s>u&&(r=l,a=f.copyArray(o),s=u)}return{closestMatch:r,path:a,distance:s,indexMatch:d}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Problem value found at: \n",o="\n\n"+i+"options = {\n",n=0;n1e3&&(i=1e3),e.body.dom.rollingModeBtn.style.visibility="hidden",e.currentTimeTimer=setTimeout(t,i)}var e=this;t()},n.prototype.stopRolling=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),this.rolling=!1,this.body.dom.rollingModeBtn.style.visibility="visible")},n.prototype.setRange=function(t,e,i,o,n){o!==!0&&(o=!1);var s=void 0!=t?p.convert(t,"Date").valueOf():null,r=void 0!=e?p.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var h=this,l=this.start,c=this.end,f="object"===("undefined"==typeof i?"undefined":(0,u.default)(i))&&"duration"in i?i.duration:500,g="object"===("undefined"==typeof i?"undefined":(0,u.default)(i))&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",v=p.easingFunctions[g];if(!v)throw new Error("Unknown easing function "+(0,d.default)(g)+". Choose from: "+(0,a.default)(p.easingFunctions).join(", "));var y=(new Date).valueOf(),b=!1,_=function t(){if(!h.props.touch.dragging){var e=(new Date).valueOf(),i=e-y,a=v(i/f),d=i>f,u=d||null===s?s:l+(s-l)*a,g=d||null===r?r:c+(r-c)*a;w=h._applyRange(u,g),m.updateHiddenDates(h.options.moment,h.body,h.options.hiddenDates),b=b||w;var _={start:new Date(h.start),end:new Date(h.end),byUser:o,event:p.elementsCensor(n)};w&&h.body.emitter.emit("rangechange",_),d?b&&h.body.emitter.emit("rangechanged",_):h.animationTimer=setTimeout(t,20)}};return _()}var w=this._applyRange(s,r);if(m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),w){var x={start:new Date(this.start),end:new Date(this.end),byUser:o,event:p.elementsCensor(n)};this.body.emitter.emit("rangechange",x),this.body.emitter.emit("rangechanged",x)}},n.prototype.getMillisecondsPerPixel=function(){return(this.end-this.start)/this.body.dom.center.clientWidth},n.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},n.prototype._applyRange=function(t,e){var i,o=null!=t?p.convert(t,"Date").valueOf():this.start,n=null!=e?p.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?p.convert(this.options.max,"Date").valueOf():null,r=null!=this.options.min?p.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(ns&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=r&&o=this.start-h&&n<=this.end?(o=this.start,n=this.end):(i=a-(n-o),o-=i/2,n+=i/2)}}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);d<0&&(d=0),n-o>d&&(this.end-this.start===d&&othis.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},n.prototype.getRange=function(){return{start:this.start,end:this.end}},n.prototype.conversion=function(t,e){return n.conversion(this.start,this.end,t,e)},n.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},n.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this._isInsideRange(t)&&this.props.touch.allowDragging&&(this.stopRolling(),this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},n.prototype._onDrag=function(t){if(t&&this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction; -s(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height;if(this.options.rtl)var a=i/r*o;else var a=-i/r*o;var h=this.props.touch.start+a,d=this.props.touch.end+a,l=m.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),u=m.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(l!=h||u!=d)return this.deltaDifference+=i,this.props.touch.start=l,this.props.touch.end=u,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d);var c=new Date(this.start),f=new Date(this.end);this.body.emitter.emit("rangechange",{start:c,end:f,byUser:!0,event:p.elementsCensor(t)}),this.body.emitter.emit("panmove")}},n.prototype._onDragEnd=function(t){this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0,event:p.elementsCensor(t)}))},n.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),this.options.zoomKey&&!t[this.options.zoomKey]&&this.options.zoomable||!this.options.zoomable&&this.options.moveable){if(this.options.horizontalScroll){t.preventDefault();var i=e*(this.end-this.start)/20,o=this.start-i,n=this.end-i;this.setRange(o,n,!1,!0,t)}}else if(this.options.zoomable&&this.options.moveable&&this._isInsideRange(t)&&e){var s;s=e<0?1-e/5:1/(1+e/5);var r;if(this.rolling)r=(this.start+this.end)/2;else{var a=this.getPointer({x:t.clientX,y:t.clientY},this.body.dom.center);r=this._pointerToDate(a)}this.zoom(s,r,e,t),t.preventDefault()}},n.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},n.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=this.getPointer(t.center,this.body.dom.center)),this.stopRolling();var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,i),s=o-n,r=i-n+(this.props.touch.start-(i-n))*e,a=i+s+(this.props.touch.end-(i+s))*e;this.startToFront=1-e<=0,this.endToFront=e-1<=0;var h=m.snapAwayFromHidden(this.body.hiddenDates,r,1-e,!0),d=m.snapAwayFromHidden(this.body.hiddenDates,a,e-1,!0);h==r&&d==a||(this.props.touch.start=h,this.props.touch.end=d,this.scaleOffset=1-t.scale,r=h,a=d),this.setRange(r,a,!1,!0,t),this.startToFront=!1,this.endToFront=!0}},n.prototype._isInsideRange=function(t){var e=t.center?t.center.x:t.clientX;if(this.options.rtl)var i=e-p.getAbsoluteLeft(this.body.dom.centerContainer);else var i=p.getAbsoluteRight(this.body.dom.centerContainer)-e;var o=this.body.util.toTime(i);return o>=this.start&&o<=this.end},n.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(s(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},n.prototype.getPointer=function(t,e){return this.options.rtl?{x:p.getAbsoluteRight(e)-t.x,y:t.y-p.getAbsoluteTop(e)}:{x:t.x-p.getAbsoluteLeft(e),y:t.y-p.getAbsoluteTop(e)}},n.prototype.zoom=function(t,e,i,o){null==e&&(e=(this.start+this.end)/2);var n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),s=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,e),r=n-s,a=e-s+(this.start-(e-s))*t,h=e+r+(this.end-(e+r))*t;this.startToFront=!(i>0),this.endToFront=!(-i>0);var d=m.snapAwayFromHidden(this.body.hiddenDates,a,i,!0),l=m.snapAwayFromHidden(this.body.hiddenDates,h,-i,!0);d==a&&l==h||(a=d,h=l),this.setRange(a,h,!1,!0,o),this.startToFront=!1,this.endToFront=!0},n.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},n.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n,!1,!0,event)},t.exports=n},function(t,e,i){function o(t,e){this.options=null,this.props=null}var n=i(1);o.prototype.setOptions=function(t){t&&n.extend(this.options,t)},o.prototype.redraw=function(){return!1},o.prototype.destroy=function(){},o.prototype._isResized=function(){var 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},t.exports=o},function(t,e){e.convertHiddenOptions=function(t,i,o){if(o&&!Array.isArray(o))return e.convertHiddenOptions(t,i,[o]);if(i.hiddenDates=[],o&&1==Array.isArray(o)){for(var n=0;n=4*a){var p=0,c=s.clone();switch(o[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-p,"days"),c.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),c.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(p,"months"),c.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(p,"years"),c.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}for(;d=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o=r&&nt.range.end){var h={start:t.range.start,end:i};i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,h,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale}i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,t.range,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale},e.toTime=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return new Date(i/n.scale+n.offset)}var s=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end),r=t.range.end-t.range.start-s,a=r*i/o,h=e.getAccumulatedHiddenDuration(t.body.hiddenDates,t.range,a),d=new Date(h+a+t.range.start);return d},e.getHiddenDurationBetween=function(t,e,i){for(var o=0,n=0;n=e&&r=e&&r<=i&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,o,n){return n=t(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,o,n)},e.getHiddenDurationBefore=function(t,e,i,o){var n=0;o=t(o).toDate().valueOf();for(var s=0;s=i.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?o<0?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&t-1||h))return t.dataTransfer.dropEffect="move",h=!0,!1}function n(t){try{var e=JSON.parse(t.dataTransfer.getData("text"));if(!e.content)return}catch(t){return!1}return h=!1,t.center={x:t.clientX,y:t.clientY},s.itemSet._onAddItem(t),!1}this.dom={},this.dom.container=t,this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.rollingModeBtn=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.rollingModeBtn.className="vis-rolling-mode-btn",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.rollingModeBtn),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.on("rangechange",function(){this.initialDrawDone===!0&&this._redraw()}.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("panmove",this._onDrag.bind(this));var s=this;this._origRedraw=this._redraw.bind(this),this._redraw=p.throttle(this._origRedraw),this.on("_change",function(t){s.itemSet&&s.itemSet.initialItemSetDrawn&&t&&1==t.queue?s._redraw():s._origRedraw()}),this.hammer=new l(this.dom.root);var r=this.hammer.get("pinch").set({enable:!0});u.disablePreventDefaultVertically(r),this.hammer.get("pan").set({threshold:5,direction:l.DIRECTION_HORIZONTAL}),this.listeners={};var a=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];a.forEach(function(t){var e=function(e){s.isActive()&&s.emit(t,e)};s.hammer.on(t,e),s.listeners[t]=e}),u.onTouch(this.hammer,function(t){s.emit("touch",t)}.bind(this)),u.onRelease(this.hammer,function(t){s.emit("release",t)}.bind(this)),this.dom.centerContainer.addEventListener?(this.dom.centerContainer.addEventListener("mousewheel",e.bind(this),!1),this.dom.centerContainer.addEventListener("DOMMouseScroll",e.bind(this),!1)):this.dom.centerContainer.attachEvent("onmousewheel",e.bind(this)),this.dom.left.parentNode.addEventListener("scroll",i.bind(this)),this.dom.right.parentNode.addEventListener("scroll",i.bind(this));var h=!1;if(this.dom.center.addEventListener("dragover",o.bind(this),!1),this.dom.center.addEventListener("drop",n.bind(this),!1),this.customTimes=[],this.touch={},this.redrawCount=0,this.initialDrawDone=!1,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},n.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates","locale","locales","moment","rtl","zoomKey","horizontalScroll","verticalScroll"];if(p.selectiveExtend(e,this.options,t),this.dom.rollingModeBtn.style.visibility="hidden",this.options.rtl&&(this.dom.container.style.direction="rtl",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical-rtl"),this.options.verticalScroll&&(this.options.rtl?this.dom.rightContainer.className="vis-panel vis-right vis-vertical-scroll":this.dom.leftContainer.className="vis-panel vis-left vis-vertical-scroll"),this.options.orientation={item:void 0,axis:void 0},"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"===(0,h.default)(t.orientation)&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new c(this.body);i.setOptions=function(t){var e=t?p.extend({},t):{};e.orientation="top",c.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);o!==-1&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),"hiddenDates"in this.options&&m.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new f(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),"configure"in t){this.configurator||(this.configurator=this._createConfigurator()),this.configurator.setOptions(t.configure);var n=p.deepExtend({},this.options);this.components.forEach(function(t){p.deepExtend(n,t.options)}),this.configurator.setModuleOptions({global:n})}this._redraw()},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},n.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));i.length>0&&i[0].setCustomTime(t)},n.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));return e[0].getCustomTime()},n.prototype.setCustomTimeTitle=function(t,e){var i=this.customTimes.filter(function(t){return t.options.id===e});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));if(i.length>0)return i[0].setCustomTitle(t)},n.prototype.getEventProperties=function(t){return{event:t}},n.prototype.addCustomTime=function(t,e){var i=void 0!==t?p.convert(t,"Date").valueOf():new Date,o=this.customTimes.some(function(t){return t.options.id===e});if(o)throw new Error("A custom time with id "+(0,r.default)(e)+" already exists");var n=new g(this.body,p.extend({},this.options,{time:i,id:e}));return this.customTimes.push(n),this.components.push(n),this._redraw(),e},n.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},n.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},n.prototype.fit=function(t){var e=this.getDataRange();if(null!==e.min||null!==e.max){var i=e.max-e.min,o=new Date(e.min.valueOf()-.01*i),n=new Date(e.max.valueOf()+.01*i),s=!t||void 0===t.animation||t.animation;this.range.setRange(o,n,s)}},n.prototype.getDataRange=function(){throw new Error("Cannot invoke abstract method getDataRange")},n.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0===n.animation||n.animation,this.range.setRange(n.start,n.end,o)}else o=!i||void 0===i.animation||i.animation,this.range.setRange(t,e,o)},n.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=p.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=!e||void 0===e.animation||e.animation;this.range.setRange(n,s,r)},n.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},n.prototype.zoomIn=function(t){if(!(!t||t<0||t>1)){var e=this.getWindow(),i=e.start.valueOf(),o=e.end.valueOf(),n=o-i,s=n/(1+t),r=(n-s)/2,a=i+r,h=o-r;this.setWindow({start:a,end:h})}},n.prototype.zoomOut=function(t){if(!(!t||t<0||t>1)){var e=this.getWindow(),i=e.start.valueOf(),o=e.end.valueOf(),n=o-i,s=i-n*t/2,r=o+n*t/2;this.setWindow({start:s,end:r})}},n.prototype.redraw=function(){this._redraw()},n.prototype._redraw=function(){this.redrawCount++;var t=!1,e=this.options,i=this.props,o=this.dom;if(o&&o.container&&0!=o.root.offsetWidth){m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),"top"==e.orientation?(p.addClassName(o.root,"vis-top"),p.removeClassName(o.root,"vis-bottom")):(p.removeClassName(o.root,"vis-top"),p.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=p.option.asSize(e.maxHeight,""),o.root.style.minHeight=p.option.asSize(e.minHeight,""),o.root.style.width=p.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top,i.borderRootHeight=o.root.offsetHeight-o.root.clientHeight,i.borderRootWidth=o.root.offsetWidth-o.root.clientWidth,0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(i.borderRootWidth=i.borderRootHeight),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var n=Math.max(i.left.height,i.center.height,i.right.height),s=i.top.height+n+i.bottom.height+i.borderRootHeight+i.border.top+i.border.bottom;o.root.style.height=p.option.asSize(e.height,s+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-i.borderRootHeight;var r=i.root.height-i.top.height-i.bottom.height-i.borderRootHeight;i.centerContainer.height=r,i.leftContainer.height=r,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-i.borderRootWidth,this.initialDrawDone||(i.scrollbarWidth=p.getScrollBarWidth()),e.verticalScroll?e.rtl?(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth+i.scrollbarWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth+i.scrollbarWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right),this._setDOM();var a=this._updateScrollTop();"top"!=e.orientation.item&&(a+=Math.max(i.centerContainer.height-i.center.height-i.border.top-i.border.bottom,0)),o.center.style.top=a+"px";var h=0==i.scrollTop?"hidden":"",d=i.scrollTop==i.scrollTopMin?"hidden":"";o.shadowTop.style.visibility=h,o.shadowBottom.style.visibility=d,o.shadowTopLeft.style.visibility=h,o.shadowBottomLeft.style.visibility=d,o.shadowTopRight.style.visibility=h,o.shadowBottomRight.style.visibility=d,e.verticalScroll&&(o.rightContainer.className="vis-panel vis-right vis-vertical-scroll",o.leftContainer.className="vis-panel vis-left vis-vertical-scroll",o.shadowTopRight.style.visibility="hidden",o.shadowBottomRight.style.visibility="hidden",o.shadowTopLeft.style.visibility="hidden",o.shadowBottomLeft.style.visibility="hidden",o.left.style.top="0px",o.right.style.top="0px"),(!e.verticalScroll||i.center.heighti.centerContainer.height;this.hammer.get("pan").set({direction:u?l.DIRECTION_ALL:l.DIRECTION_HORIZONTAL}),this.components.forEach(function(e){t=e.redraw()||t});var c=5;if(t){if(this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTope&&o.push(h.id):h.lefti&&o.push(h.id)}return o},n.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;in)return}}if(i&&i!=this.groupTouchParams.group){var h=e.get(i.groupId),d=e.get(this.groupTouchParams.group.groupId);d&&h&&(this.options.groupOrderSwap(d,h,e),e.update(d),e.update(h));var l=e.getIds({order:this.options.groupOrder});if(!p.equalArray(l,this.groupTouchParams.originalOrder))for(var u=this.groupTouchParams.originalOrder,c=this.groupTouchParams.group.groupId,m=Math.min(u.length,l.length),g=0,v=0,y=0;g=m)break;if(l[g+v]!=c)if(u[g+y]!=c){var b=l.indexOf(u[g+y]),_=e.get(l[g+v]),w=e.get(u[g+y]);this.options.groupOrderSwap(_,w,e),e.update(_),e.update(w);var x=l[g+v];l[g+v]=u[g+y],l[b]=x,g++}else y=1;else v=1}}}},n.prototype._onGroupDragEnd=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this,i=e.groupTouchParams.group.groupId,o=e.groupsData.getDataSet(),n=p.extend({},o.get(i));e.options.onMoveGroup(n,function(t){if(t)t[o._fieldId]=i,o.update(t);else{var n=o.getIds({order:e.options.groupOrder});if(!p.equalArray(n,e.groupTouchParams.originalOrder))for(var s=e.groupTouchParams.originalOrder,r=Math.min(s.length,n.length),a=0;a=r)break;var h=n.indexOf(s[a]),d=o.get(n[a]),l=o.get(s[a]);e.options.groupOrderSwap(d,l,o),groupsData.update(d),groupsData.update(l);var u=n[a];n[a]=s[a],n[h]=u,a++}}}),e.body.emitter.emit("groupDragged",{groupId:i})}},n.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.srcEvent&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey),i=t.srcEvent&&t.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var o=this.getSelection(),n=this.itemFromTarget(t),s=n?[n.id]:[];this.setSelection(s);var r=this.getSelection();(r.length>0||o.length>0)&&this.body.emitter.emit("select",{items:r,event:p.elementsCensor(t)})}},n.prototype._onMouseOver=function(t){var e=this.itemFromTarget(t);if(e){var i=this.itemFromRelatedTarget(t);if(e!==i){if(e.getTitle()){null==e.popup&&e.setPopup(new l.default(this.body.dom.root,this.options.tooltip.overflowMethod||"flip"));var o=this.body.dom.centerContainer;e.popup.setPosition(t.clientX-p.getAbsoluteLeft(o)+o.offsetLeft,t.clientY-p.getAbsoluteTop(o)+o.offsetTop),e.popup.show()}this.body.emitter.emit("itemover",{item:e.id,event:p.elementsCensor(t)})}}},n.prototype._onMouseOut=function(t){var e=this.itemFromTarget(t);if(e){var i=this.itemFromRelatedTarget(t);e!==i&&(null!=e.popup&&e.popup.hide(),this.body.emitter.emit("itemout",{item:e.id,event:p.elementsCensor(t)}))}},n.prototype._onMouseMove=function(t){var e=this.itemFromTarget(t);if(e&&this.options.tooltip.followMouse&&e.popup&&!e.popup.hidden){var i=this.body.dom.centerContainer;e.popup.setPosition(t.clientX-p.getAbsoluteLeft(i)+i.offsetLeft,t.clientY-p.getAbsoluteTop(i)+i.offsetTop),e.popup.show()}},n.prototype._onMouseWheel=function(t){this.touchParams.itemIsDragging&&this._onDragEnd(t)},n.prototype._onUpdateItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this;if(t){var i=e.itemsData.get(t.id);this.options.onUpdate(i,function(t){t&&e.itemsData.getDataSet().update(t)})}}},n.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(!o){if(this.options.rtl)var n=p.getAbsoluteRight(this.dom.frame),s=n-t.center.x;else var n=p.getAbsoluteLeft(this.dom.frame),s=t.center.x-n;var r=this.body.util.toTime(s),a=this.body.util.getScale(),h=this.body.util.getStep(),d={start:i?i(r,a,h):r,content:"new item"};if("drop"==t.type){var l=JSON.parse(t.dataTransfer.getData("text"));if(d.content=l.content,d.type=l.type||"box",d[this.itemsData._fieldId]=l.id||p.randomUUID(),"range"==l.type||l.end&&l.start)if(l.end)d.end=l.end,d.start=l.start;else{var u=this.body.util.toTime(s+this.props.width/5);d.end=i?i(u,a,h):u}}else if(d[this.itemsData._fieldId]=p.randomUUID(),"range"===this.options.type){var u=this.body.util.toTime(s+this.props.width/5);d.end=i?i(u,a,h):u}var c=this.groupFromTarget(t);c&&(d.group=c.groupId),d=this._cloneItemData(d),this.options.onAdd(d,function(i){i&&(e.itemsData.getDataSet().add(i),"drop"==t.type&&e.setSelection([i.id]))})}}},n.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[],o=t.srcEvent&&t.srcEvent.shiftKey||!1;if(o&&this.options.multiselect){var s=this.itemsData.get(e.id).group,r=void 0;this.options.multiselectPerGroup&&i.length>0&&(r=this.itemsData.get(i[0]).group),this.options.multiselectPerGroup&&void 0!=r&&r!=s||i.push(e.id);var a=n._getItemRange(this.itemsData.get(i,this.itemOptions));if(!this.options.multiselectPerGroup||r==s){i=[];for(var h in this.items)if(this.items.hasOwnProperty(h)){var d=this.items[h],l=d.data.start,u=void 0!==d.data.end?d.data.end:l;!(l>=a.min&&u<=a.max)||this.options.multiselectPerGroup&&r!=this.itemsData.get(d.id).group||d instanceof x||i.push(d.id)}}}else{var c=i.indexOf(e.id);c==-1?i.push(e.id):i.splice(c,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection(),event:p.elementsCensor(t)})}}},n._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},n.prototype.itemFromElement=function(t){for(var e=t;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},n.prototype.itemFromTarget=function(t){return this.itemFromElement(t.target)},n.prototype.itemFromRelatedTarget=function(t){return this.itemFromElement(t.relatedTarget)},n.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.clientY,i=0;ir&&er)return n}else if(0===i&&en-this.padding&&(a=!0),s=a?this.x-i:this.x,r=h?this.y-e:this.y}else r=this.y-e,r+e+this.padding>o&&(r=o-e-this.padding),rn&&(s=n-i-this.padding),s0&&this.current.milliseconds()0&&this.current.seconds()0&&this.current.minutes()0&&this.current.hours()0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=n(t);if("year"==e){var s=o.year()+Math.round(o.month()/12);o.year(Math.round(s/i)*i),o.month(0),o.date(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("month"==e)o.date()>15?(o.date(1),o.add(1,"month")):o.date(1),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.hours(24*Math.round(o.hours()/24));break;default:o.hours(12*Math.round(o.hours()/12))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.hours(12*Math.round(o.hours()/12));break;default:o.hours(6*Math.round(o.hours()/6))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("hour"==e){switch(i){case 4:o.minutes(60*Math.round(o.minutes()/60));break;default:o.minutes(30*Math.round(o.minutes()/30))}o.seconds(0),o.milliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.minutes(5*Math.round(o.minutes()/5)),o.seconds(0);break;case 5:o.seconds(60*Math.round(o.seconds()/60));break;default:o.seconds(30*Math.round(o.seconds()/30))}o.milliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.seconds(5*Math.round(o.seconds()/5)),o.milliseconds(0);break;case 5:o.milliseconds(1e3*Math.round(o.milliseconds()/1e3));break;default:o.milliseconds(500*Math.round(o.milliseconds()/500))}else if("millisecond"==e){var r=i>5?i/2:1;o.milliseconds(Math.round(o.milliseconds()/r)*r)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}var t=this.moment(this.current);switch(this.scale){case"millisecond":return 0==t.milliseconds();case"second":return 0==t.seconds();case"minute":return 0==t.hours()&&0==t.minutes();case"hour":return 0==t.hours();case"weekday":case"day":return 1==t.date();case"month":return 0==t.month();case"year":return!1;default:return!1}},o.prototype.getLabelMinor=function(t){if(void 0==t&&(t=this.current),"function"==typeof this.format.minorLabels)return this.format.minorLabels(t,this.scale,this.step);var e=this.format.minorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getLabelMajor=function(t){if(void 0==t&&(t=this.current),"function"==typeof this.format.majorLabels)return this.format.majorLabels(t,this.scale,this.step);var e=this.format.majorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(s().add(1,"day"),"day")?" vis-tomorrow":t.isSame(s().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}function n(t){return t.isSame(new Date,"year")?" vis-current-year":""}var s=this.moment,r=this.moment(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return e(a)+t(a.milliseconds()).trim();case"second":return e(a)+t(a.seconds()).trim();case"minute":return e(a)+t(a.minutes()).trim();case"hour":return"vis-h"+a.hours()+(4==this.step?"-h"+(a.hours()+4):"")+e(a)+t(a.hours());case"weekday":return"vis-"+a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":return"vis-day"+a.date()+" vis-"+a.format("MMMM").toLowerCase()+e(a)+o(a)+(this.step<=2?e(a):"")+(this.step<=2?" vis-"+a.format("dddd").toLowerCase():""+t(a.date()-1));case"month":return"vis-"+a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var d=a.year();return"vis-year"+d+n(a)+t(d);default:return""}},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i){this.groupId=t,this.subgroups={},this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.isVisible=null,e&&e.nestedGroups&&(this.nestedGroups=e.nestedGroups,0==e.showNested?this.showNested=!1:this.showNested=!0),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;var o=this;this.itemSet.body.emitter.on("checkRangedItems",function(){o.checkRangedItems=!0}),this._create(),this.setData(e)}var s=i(58),r=o(s),a=i(1),h=i(115);i(116);n.prototype._create=function(){var t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;var e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;var i=document.createElement("div");i.className="vis-group",i["timeline-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)},n.prototype.setData=function(t){var e,i;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.appendChild(e);this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else e instanceof Object?i(t,this.dom.inner):void 0!==e&&null!==e?this.dom.inner.innerHTML=e:this.dom.inner.innerHTML=this.groupId||"";if(this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?a.removeClassName(this.dom.inner,"vis-hidden"):a.addClassName(this.dom.inner,"vis-hidden"),t&&t.nestedGroups)if(0==t.showNested?this.showNested=!1:this.showNested=!0,a.addClassName(this.dom.label,"vis-nesting-group"),this.showNested)a.removeClassName(this.dom.label,"collapsed"),a.addClassName(this.dom.label,"expanded");else{a.removeClassName(this.dom.label,"expanded");var o=this.itemSet.options.rtl?"collapsed-rtl":"collapsed";a.addClassName(this.dom.label,o)}t&&t.nestedInGroup&&(a.addClassName(this.dom.label,"vis-nested-group"),this.itemSet.options&&this.itemSet.options.rtl?this.dom.inner.style.paddingRight="30px":this.dom.inner.style.paddingLeft="30px");var n=t&&t.className||null;n!=this.className&&(this.className&&(a.removeClassName(this.dom.label,this.className),a.removeClassName(this.dom.foreground,this.className),a.removeClassName(this.dom.background,this.className),a.removeClassName(this.dom.axis,this.className)),a.addClassName(this.dom.label,n),a.addClassName(this.dom.foreground,n),a.addClassName(this.dom.background,n),a.addClassName(this.dom.axis,n),this.className=n),this.style&&(a.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(a.addCssText(this.dom.label,t.style),this.style=t.style)},n.prototype.getLabelWidth=function(){return this.props.label.width},n.prototype.redraw=function(t,e,i){var o=!1,n=this.dom.marker.clientHeight;n!=this.lastMarkerHeight&&(this.lastMarkerHeight=n,a.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()}),i=!0),this._calculateSubGroupHeights(e);var s=this.dom.foreground;if(this.top=s.offsetTop,this.right=s.offsetLeft,this.width=s.offsetWidth,this.isVisible=this._isGroupVisible(t,e),"function"==typeof this.itemSet.options.order){if(i){var r=this,d=!1;a.forEach(this.items,function(t){t.displayed||(t.redraw(),r.visibleItems.push(t)),t.repositionX(d)});var l=this.orderedItems.byStart.slice().sort(function(t,e){return r.itemSet.options.order(t.data,e.data)});h.stack(l,e,!0)}this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t)}else this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t),this.itemSet.options.stack?h.stack(this.visibleItems,e,i):h.nostack(this.visibleItems,e,this.subgroups,this.itemSet.options.stackSubgroups);this._updateSubgroupsSizes();var u=this._calculateHeight(e),s=this.dom.foreground;this.top=s.offsetTop,this.right=s.offsetLeft,this.width=s.offsetWidth,o=a.updateProperty(this,"height",u)||o,o=a.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||o,o=a.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||o,this.dom.background.style.height=u+"px",this.dom.foreground.style.height=u+"px",this.dom.label.style.height=u+"px";for(var p=0,c=this.visibleItems.length;p0){var e=this;this.resetSubgroups(),a.forEach(this.visibleItems,function(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=!0)})}},n.prototype._isGroupVisible=function(t,e){var i=this.top<=t.body.domProps.centerContainer.height-t.body.domProps.scrollTop+e.axis&&this.top+this.height+e.axis>=-t.body.domProps.scrollTop;return i},n.prototype._calculateHeight=function(t){var e,i=this.visibleItems;if(i.length>0){var o=i[0].top,n=i[0].top+i[0].height;if(a.forEach(i,function(t){o=Math.min(o,t.top),n=Math.max(n,t.top+t.height)}),o>t.axis){var s=o-t.axis;n-=s,a.forEach(i,function(t){t.top-=s})}e=n+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},n.prototype.show=function(){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)},n.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},n.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,top:0,start:t.data.start,end:t.data.end,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),new Date(t.data.start)new Date(this.subgroups[t.data.subgroup].end)&&(this.subgroups[t.data.subgroup].end=t.data.end),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),this.visibleItems.indexOf(t)==-1){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},n.prototype._updateSubgroupsSizes=function(){var t=this;if(t.subgroups)for(var e in t.subgroups){var i=t.subgroups[e].items[0].data.start,o=t.subgroups[e].items[0].data.end;t.subgroups[e].items.forEach(function(t){new Date(t.data.start)new Date(o)&&(o=t.data.end)}),t.subgroups[e].start=i,t.subgroups[e].end=o}},n.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;i0)for(var l=0;lh}),1==this.checkRangedItems)for(this.checkRangedItems=!1,l=0;lh})}for(var l=0;l=0;s--){var r=e[s];if(n(r))break;void 0===o[r.id]&&(o[r.id]=!0,i.push(r))}for(var s=t+1;so[r].index&&e.collisionByTimes(o[n],o[r])){s=o[r];break}null!=s&&(o[n].top=s.top+s.height)}while(s)}for(var a=0;ae.right&&t.top-o.vertical+ie.top:t.left-o.horizontal+ie.left&&t.top-o.vertical+ie.top},e.collisionByTimes=function(t,e){return t.start<=e.start&&t.end>=e.start&&t.tope.top||e.start<=t.start&&e.end>=t.start&&e.topt.top}},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,this.options=i,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(101),i(117));o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-range",o.prototype.isVisible=function(t){return this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.visibleFrame=document.createElement("div"),t.visibleFrame.className="vis-item-visible-frame",t.box.appendChild(t.visibleFrame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.box.className=this.baseClassName+o,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintOnItemUpdateTimeTooltip(t.box),this._repaintDeleteButton(t.box),this._repaintDragCenter(),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);void 0!==t&&t!==!0||(n<-o&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n+.5,1);switch(this.overflow?(this.options.rtl?this.right=n:this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.options.rtl?this.right=n:this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.options.rtl?this.dom.box.style.right=this.right+"px":this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.options.rtl?this.dom.content.style.right="0":this.dom.content.style.left="0";break;case"right":this.options.rtl?this.dom.content.style.right=Math.max(r-i,0)+"px":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.options.rtl?this.dom.content.style.right=Math.max((r-i)/2,0)+"px":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:n<0?-n:0,this.options.rtl?this.dom.content.style.right=e+"px":(this.dom.content.style.left=e+"px",this.dom.content.style.width="calc(100% - "+e+"px)")}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.groupShowing=!0,this.dirty=!0,this.popup=null,this.top=null,this.right=null,this.left=null,this.width=null,this.height=null,this.editable=null,this.data&&this.data.hasOwnProperty("editable")&&("boolean"==typeof this.data.editable?this.editable={updateTime:this.data.editable,updateGroup:this.data.editable,remove:this.data.editable}:"object"===(0,h.default)(i.editable)&&(this.editable={},l.selectiveExtend(["updateTime","updateGroup","remove"],this.editable,t.editable)))}var s=i(58),r=o(s),a=i(62),h=o(a),d=i(101),l=i(1),u=i(84);n.prototype.stack=!0,n.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),t.hasOwnProperty("editable")&&("boolean"==typeof t.editable?this.editable={updateTime:this.data.editable,updateGroup:this.data.editable,remove:this.data.editable}:"object"===(0,h.default)(options.editable)&&(this.editable={},l.selectiveExtend(["updateTime","updateGroup","remove"],this.editable,t.editable))),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},n.prototype.isVisible=function(t){return!1},n.prototype.show=function(){return!1},n.prototype.hide=function(){return!1},n.prototype.redraw=function(){},n.prototype.repositionX=function(){},n.prototype.repositionY=function(){},n.prototype._repaintDragCenter=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragCenter){var t=this,e=document.createElement("div");e.className="vis-drag-center",e.dragCenterItem=this,new d(e).on("doubletap",function(e){e.stopPropagation(),t.parent.itemSet._onUpdateItem(t)}),this.dom.box?this.dom.box.appendChild(e):this.dom.point&&this.dom.point.appendChild(e),this.dom.dragCenter=e}else!this.selected&&this.dom.dragCenter&&(this.dom.dragCenter.parentNode&&this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter),this.dom.dragCenter=null)},n.prototype._repaintDeleteButton=function(t){var e=(this.options.editable.overrideItems||null==this.editable)&&this.options.editable.remove||!this.options.editable.overrideItems&&null!=this.editable&&this.editable.remove;if(this.selected&&e&&!this.dom.deleteButton){var i=this,o=document.createElement("div");this.options.rtl?o.className="vis-delete-rtl":o.className="vis-delete",o.title="Delete this item",new d(o).on("tap",function(t){t.stopPropagation(),i.parent.removeFromDataSet(i)}),t.appendChild(o),this.dom.deleteButton=o}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},n.prototype._repaintOnItemUpdateTimeTooltip=function(t){if(this.options.tooltipOnItemUpdateTime){var e=(this.options.editable.updateTime||this.data.editable===!0)&&this.data.editable!==!1;if(this.selected&&e&&!this.dom.onItemUpdateTimeTooltip){var i=document.createElement("div");i.className="vis-onUpdateTime-tooltip",t.appendChild(i),this.dom.onItemUpdateTimeTooltip=i}else!this.selected&&this.dom.onItemUpdateTimeTooltip&&(this.dom.onItemUpdateTimeTooltip.parentNode&&this.dom.onItemUpdateTimeTooltip.parentNode.removeChild(this.dom.onItemUpdateTimeTooltip),this.dom.onItemUpdateTimeTooltip=null);if(this.dom.onItemUpdateTimeTooltip){this.dom.onItemUpdateTimeTooltip.style.visibility=this.parent.itemSet.touchParams.itemIsDragging?"visible":"hidden",this.options.rtl?this.dom.onItemUpdateTimeTooltip.style.right=this.dom.content.style.right:this.dom.onItemUpdateTimeTooltip.style.left=this.dom.content.style.left;var o,n=50,s=this.parent.itemSet.body.domProps.scrollTop;o="top"==this.options.orientation.item?this.top:this.parent.height-this.top-this.height;var r=o+this.parent.top-n<-s;r?(this.dom.onItemUpdateTimeTooltip.style.bottom="",this.dom.onItemUpdateTimeTooltip.style.top=this.height+2+"px"):(this.dom.onItemUpdateTimeTooltip.style.top="",this.dom.onItemUpdateTimeTooltip.style.bottom=this.height+2+"px");var a,h;this.options.tooltipOnItemUpdateTime&&this.options.tooltipOnItemUpdateTime.template?(h=this.options.tooltipOnItemUpdateTime.template.bind(this),a=h(this.data)):(a="start: "+u(this.data.start).format("MM/DD/YYYY hh:mm"),this.data.end&&(a+="
end: "+u(this.data.end).format("MM/DD/YYYY hh:mm"))),this.dom.onItemUpdateTimeTooltip.innerHTML=a}}},n.prototype._updateContents=function(t){var e,i,o,n,s=this.parent.itemSet.itemsData.get(this.id),r=this.dom.box||this.dom.point,a=r.getElementsByClassName("vis-item-visible-frame")[0];if(this.options.visibleFrameTemplate?(n=this.options.visibleFrameTemplate.bind(this),o=n(s,r)):o="",a)if(o instanceof Object&&!(o instanceof Element))n(s,a);else{var h=this._contentToString(this.itemVisibleFrameContent)!==this._contentToString(o);if(h){if(o instanceof Element)a.innerHTML="",a.appendChild(o);else if(void 0!=o)a.innerHTML=o;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.itemVisibleFrameContent=o}}if(this.options.template?(i=this.options.template.bind(this),e=i(s,t)):e=this.data.content,e instanceof Object&&!(e instanceof Element))i(s,t);else{var h=this._contentToString(this.content)!==this._contentToString(e);if(h){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}}},n.prototype._updateTitle=function(){null!=this.data.title&&null!=this.popup&&this.popup.setText(this.data.title||"")},n.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=(0,r.default)(this.data)}for(var i=0;it.start&&this.data.start.getTime()-ot.start&&this.data.start.getTime()t.start&&this.data.start.getTime()-o/2t.start&&this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e;if(void 0!==this.data.subgroup){var i=this.data.subgroup,o=this.parent.subgroups;o[i].index;this.dom.box.style.height=this.parent.subgroups[i].height+"px";var n=this.options.orientation.item;"top"==n?this.dom.box.style.top=this.parent.top+this.parent.subgroups[i].top+"px":this.dom.box.style.top=this.parent.top+this.parent.height-this.parent.subgroups[i].top-this.parent.subgroups[i].height+"px",this.dom.box.style.bottom=""}else this.parent instanceof s?(e=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top="top"==n?"0":"",this.dom.box.style.bottom="top"==n?"":"0"):(e=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=e+"px"},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this.dom={foreground:null,lines:[],majorTexts:[],minorTexts:[],redundant:{lines:[],majorTexts:[],minorTexts:[]}},this.props={range:{start:0,end:0,minimumStep:0},lineTop:0},this.defaultOptions={orientation:{axis:"bottom"},showMinorLabels:!0,showMajorLabels:!0,maxMinorChars:7,format:d.FORMAT,moment:u,timeAxis:null},this.options=a.extend({},this.defaultOptions),this.body=t,this._create(),this.setOptions(e)}var s=i(62),r=o(s),a=i(1),h=i(108),d=i(113),l=i(109),u=i(84);n.prototype=new h,n.prototype.setOptions=function(t){t&&(a.selectiveExtend(["showMinorLabels","showMajorLabels","maxMinorChars","hiddenDates","timeAxis","moment","rtl"],this.options,t),a.selectiveDeepExtend(["format"],this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.axis=t.orientation:"object"===(0,r.default)(t.orientation)&&"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis)),"locale"in t&&("function"==typeof u.locale?u.locale(t.locale):u.lang(t.locale)))},n.prototype._create=function(){this.dom.foreground=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.foreground.className="vis-time-axis vis-foreground",this.dom.background.className="vis-time-axis vis-background"},n.prototype.destroy=function(){this.dom.foreground.parentNode&&this.dom.foreground.parentNode.removeChild(this.dom.foreground),this.dom.background.parentNode&&this.dom.background.parentNode.removeChild(this.dom.background),this.body=null},n.prototype.redraw=function(){var t=this.props,e=this.dom.foreground,i=this.dom.background,o="top"==this.options.orientation.axis?this.body.dom.top:this.body.dom.bottom,n=e.parentNode!==o;this._calculateCharSize();var s=this.options.showMinorLabels&&"none"!==this.options.orientation.axis,r=this.options.showMajorLabels&&"none"!==this.options.orientation.axis;t.minorLabelHeight=s?t.minorCharHeight:0,t.majorLabelHeight=r?t.majorCharHeight:0,t.height=t.minorLabelHeight+t.majorLabelHeight,t.width=e.offsetWidth,t.minorLineHeight=this.body.domProps.root.height-t.majorLabelHeight-("top"==this.options.orientation.axis?this.body.domProps.bottom.height:this.body.domProps.top.height),t.minorLineWidth=1,t.majorLineHeight=t.minorLineHeight+t.majorLabelHeight,t.majorLineWidth=1;var a=e.nextSibling,h=i.nextSibling;return e.parentNode&&e.parentNode.removeChild(e),i.parentNode&&i.parentNode.removeChild(i),e.style.height=this.props.height+"px",this._repaintLabels(),a?o.insertBefore(e,a):o.appendChild(e),h?this.body.dom.backgroundVertical.insertBefore(i,h):this.body.dom.backgroundVertical.appendChild(i),this._isResized()||n},n.prototype._repaintLabels=function(){var t=this.options.orientation.axis,e=a.convert(this.body.range.start,"Number"),i=a.convert(this.body.range.end,"Number"),o=this.body.util.toTime((this.props.minorCharWidth||10)*this.options.maxMinorChars).valueOf(),n=o-l.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this.body.range,o);n-=this.body.util.toTime(0).valueOf();var s=new d(new Date(e),new Date(i),n,this.body.hiddenDates);s.setMoment(this.options.moment),this.options.format&&s.setFormat(this.options.format),this.options.timeAxis&&s.setScale(this.options.timeAxis),this.step=s;var r=this.dom;r.redundant.lines=r.lines,r.redundant.majorTexts=r.majorTexts,r.redundant.minorTexts=r.minorTexts,r.lines=[],r.majorTexts=[],r.minorTexts=[];var h,u,c,f,m,g,v,y,b,_,w=0,x=void 0,D=0,S=1e3;for(s.start(),u=s.getCurrent(),f=this.body.util.toScreen(u);s.hasNext()&&D=.4*v;if(this.options.showMinorLabels&&k){var C=this._repaintMinorText(c,b,t,_);C.style.width=w+"px"}m&&this.options.showMajorLabels?(c>0&&(void 0==x&&(x=c),C=this._repaintMajorText(c,s.getLabelMajor(),t,_)),y=this._repaintMajorLine(c,w,t,_)):k?y=this._repaintMinorLine(c,w,t,_):y&&(y.style.width=parseInt(y.style.width)+w+"px")}if(D!==S||p||(console.warn("Something is wrong with the Timeline scale. Limited drawing of grid lines to "+S+" lines."),p=!0),this.options.showMajorLabels){var T=this.body.util.toTime(0),M=s.getLabelMajor(T),O=M.length*(this.props.majorCharWidth||10)+10;(void 0==x||O1e3&&(o=1e3),e.redraw(),e.body.emitter.emit("currentTimeTick"),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="date",a="object",h="dom",d="moment",l="any",u={configure:{enabled:{boolean:o},filter:{boolean:o,function:"function"},container:{dom:h},__type__:{object:a,boolean:o,function:"function"}},align:{string:i},rtl:{boolean:o,undefined:"undefined"},rollingMode:{boolean:o,undefined:"undefined"},verticalScroll:{boolean:o,undefined:"undefined"},horizontalScroll:{boolean:o,undefined:"undefined"},autoResize:{boolean:o},throttleRedraw:{number:n},clickToUse:{boolean:o},dataAttributes:{string:i,array:s},editable:{add:{boolean:o,undefined:"undefined"},remove:{boolean:o,undefined:"undefined"},updateGroup:{boolean:o,undefined:"undefined"},updateTime:{boolean:o,undefined:"undefined"},overrideItems:{boolean:o,undefined:"undefined"},__type__:{boolean:o,object:a}},end:{number:n,date:r,string:i,moment:d},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a,function:"function"}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a,function:"function"}},__type__:{object:a}},moment:{function:"function"},groupOrder:{string:i,function:"function"},groupEditable:{add:{boolean:o,undefined:"undefined"},remove:{boolean:o,undefined:"undefined"},order:{boolean:o,undefined:"undefined"},__type__:{boolean:o,object:a}},groupOrderSwap:{function:"function"},height:{string:i,number:n},hiddenDates:{start:{date:r,number:n,string:i,moment:d},end:{date:r,number:n,string:i,moment:d},repeat:{string:i},__type__:{object:a,array:s}},itemsAlwaysDraggable:{boolean:o},locale:{string:i},locales:{__any__:{any:l},__type__:{object:a}},margin:{axis:{number:n},item:{horizontal:{number:n,undefined:"undefined"},vertical:{number:n,undefined:"undefined"},__type__:{object:a,number:n}},__type__:{object:a,number:n}},max:{date:r,number:n,string:i,moment:d},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:r,number:n,string:i,moment:d},minHeight:{number:n,string:i},moveable:{boolean:o},multiselect:{boolean:o},multiselectPerGroup:{boolean:o},onAdd:{function:"function"},onUpdate:{function:"function"},onMove:{function:"function"},onMoving:{function:"function"},onRemove:{function:"function"},onAddGroup:{function:"function"},onMoveGroup:{function:"function"},onRemoveGroup:{function:"function"},order:{function:"function"},orientation:{axis:{string:i,undefined:"undefined"},item:{string:i,undefined:"undefined"},__type__:{string:i,object:a}},selectable:{boolean:o},showCurrentTime:{boolean:o},showMajorLabels:{boolean:o},showMinorLabels:{boolean:o},stack:{boolean:o},stackSubgroups:{boolean:o},snap:{function:"function",null:"null"},start:{date:r,number:n,string:i,moment:d},template:{function:"function"},groupTemplate:{function:"function"},visibleFrameTemplate:{string:i,function:"function"},tooltip:{followMouse:{boolean:o},overflowMethod:{string:["cap","flip"]},__type__:{object:a}},tooltipOnItemUpdateTime:{template:{function:"function"},__type__:{boolean:o,object:a}},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:a}},type:{string:i},width:{string:i,number:n},zoomable:{boolean:o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},__type__:{object:a}},p={global:{align:["center","left","right"],direction:!1,autoResize:!0,clickToUse:!1,editable:{add:!1,remove:!1,updateGroup:!1,updateTime:!1},end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},groupsDraggable:!1,height:"",locale:"",margin:{axis:[20,0,100,1],item:{horizontal:[10,0,100,1],vertical:[10,0,100,1]}},max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!1,multiselect:!1,multiselectPerGroup:!1,orientation:{axis:["both","bottom","top"],item:["bottom","top"]},selectable:!0,showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,stack:!0,stackSubgroups:!0,start:"",tooltip:{followMouse:!1,overflowMethod:"flip"},tooltipOnItemUpdateTime:!1,type:["box","point","range","background"],width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1]}};e.allOptions=u,e.configureOptions=p},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i,o){if(!(Array.isArray(i)||i instanceof u||i instanceof p)&&i instanceof Object){var n=o;o=i,i=n}o&&o.throttleRedraw&&console.warn('Graph2d option "throttleRedraw" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.');var s=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},moment:d,width:null,height:null,maxHeight:null,minHeight:null},this.options=l.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:s._toScreen.bind(s),toGlobalScreen:s._toGlobalScreen.bind(s),toTime:s._toTime.bind(s),toGlobalTime:s._toGlobalTime.bind(s)}},this.range=new c(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new m(this.body),this.components.push(this.timeAxis),this.currentTime=new g(this.body),this.components.push(this.currentTime),this.linegraph=new y(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){s.emit("click",s.getEventProperties(t))}),this.on("doubletap",function(t){s.emit("doubleClick",s.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){s.emit("contextmenu",s.getEventProperties(t))},o&&this.setOptions(o),i&&this.setGroups(i),e&&this.setItems(e),this._redraw()}var s=i(94),r=o(s),a=i(105),h=o(a),d=(i(106),i(101),i(84)),l=i(1),u=i(90),p=i(92),c=i(107),f=i(110),m=i(122),g=i(127),v=i(125),y=i(130),b=i(105).printStyle,_=i(138).allOptions,w=i(138).configureOptions; -n.prototype=new f,n.prototype.setOptions=function(t){var e=h.default.validate(t,_);e===!0&&console.log("%cErrors have been found in the supplied options object.",b),f.prototype.setOptions.call(this,t)},n.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof u||t instanceof p?t:new u(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},n.prototype.setGroups=function(t){var e;e=t?t instanceof u||t instanceof p?t:new u(t):null,this.groupsData=e,this.linegraph.setGroups(e)},n.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:'"+t+"'"},n.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]&&(this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]))},n.prototype.getDataRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var o=0;os?s:t,e=null==e?s:e0&&d.push(u.screenToValue(n)),!p.hidden&&this.itemsData.length>0&&d.push(p.screenToValue(n)),{event:t,what:h,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:s,value:d}},n.prototype._createConfigurator=function(){return new r.default(this,this.dom.container,w)},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this.id=a.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,stack:!1,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,sideBySide:!1,align:"center"},interpolation:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{},legend:{},groups:{visibility:{}}},this.options=a.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1,this.forceGraphUpdate=!0;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=a.option.asSize(-i.props.width),i.forceGraphUpdate=!0,i.redraw.call(i)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups}}var s=i(62),r=o(s),a=i(1),h=i(89),d=i(90),l=i(92),u=i(108),p=i(131),c=i(133),f=i(137),m=i(134),g=i(136),v=i(135),y="__ungrouped__";n.prototype=new u,n.prototype._create=function(){var t=document.createElement("div");t.className="vis-line-graph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new p(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new p(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new f(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new f(this.body,this.options.legend,"right",this.options.groups),this.show()},n.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","stack","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var a={};for(this._getRelevantData(r,a,n,s),this._applySampling(r,a),e=0;e0)switch(t.options.style){case"line":l.hasOwnProperty(r[e])||(l[r[e]]=g.calcPath(a[r[e]],t)),g.draw(l[r[e]],t,this.framework);case"point":case"points":"point"!=t.options.style&&"points"!=t.options.style&&1!=t.options.drawPoints.enabled||v.draw(a[r[e]],t,this.framework);break;case"bar":}}}return h.cleanupElements(this.svgElements),!1},n.prototype._stack=function(t,e){var i,o,n,s,r;i=0;for(var a=0;at[a].x){r=e[h],s=0==h?r:e[h-1],i=h;break}}void 0===r&&(s=e[e.length-1],r=e[e.length-1]),o=r.x-s.x,n=r.y-s.y,0==o?t[a].y=t[a].orginalY+r.y:t[a].y=t[a].orginalY+n/o*(t[a].x-s.x)+s.y}},n.prototype._getRelevantData=function(t,e,i,o){var n,s,r,h;if(t.length>0)for(s=0;s0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=new Array(r),l=0;l0){for(s=0;s0&&(n=this.groups[t[s]],r.stack===!0&&"bar"===r.style?"left"===r.yAxisOrientation?a=a.concat(n.getItems()):h=h.concat(n.getItems()):i[t[s]]=n.getYRange(o,t[s]));m.getStackedYRange(a,i,t,"__barStackLeft","left"),m.getStackedYRange(h,i,t,"__barStackRight","right")}},n.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=di?i:h,l=l=0&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-major",t.props.majorCharHeight),t.master===!0&&(n?t._redrawLine(o,i,"vis-grid vis-horizontal vis-major",t.options.majorLinesOffset,t.props.majorLineWidth):t._redrawLine(o,i,"vis-grid vis-horizontal vis-minor",t.options.minorLinesOffset,t.props.minorLineWidth))});var a=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(a=this.props.titleCharHeight);var d=this.options.icons===!0?Math.max(this.options.iconWidth,a)+this.options.labelOffsetX+15:a+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-d&&this.options.visible===!0?(this.width=this.maxLabelSize+d,this.options.width=this.width+"px",h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+d),this.options.width=this.width+"px",h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):(h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),e=!1),e},n.prototype.convertValue=function(t){return this.scale.convertValue(t)},n.prototype.screenToValue=function(t){return this.scale.screenToValue(t)},n.prototype._redrawLabel=function(t,e,i,o,n){var s=h.getDOMElement("div",this.DOMelements.labels,this.dom.frame);s.className=o,s.innerHTML=e,"left"===i?(s.style.left="-"+this.options.labelOffsetX+"px",s.style.textAlign="right"):(s.style.right="-"+this.options.labelOffsetX+"px",s.style.textAlign="left"),s.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var r=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize6&&void 0!==arguments[6]&&arguments[6],a=arguments.length>7&&void 0!==arguments[7]&&arguments[7];if(this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.customLines=null,this.containerHeight=n,this.majorCharHeight=s,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=o,this.formattingFunction=a,i||o){var h=this,d=function(t){var e=t-t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx]);return t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx])>.5*(h.magnitudefactor*h.minorSteps[h.minorStepIdx])?e+h.magnitudefactor*h.minorSteps[h.minorStepIdx]:e};i&&(this._start-=2*this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._start=d(this._start)),o&&(this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._end=d(this._end)),this.determineScale()}}i.prototype.setCharHeight=function(t){this.majorCharHeight=t},i.prototype.setHeight=function(t){this.containerHeight=t},i.prototype.determineScale=function(){var t=this._end-this._start;this.scale=this.containerHeight/t;var 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);var o=0;i<0&&(o=i);for(var n=!1,s=o;Math.abs(s)<=Math.abs(i);s++){this.magnitudefactor=Math.pow(10,s);for(var r=0;r=e){n=!0,this.minorStepIdx=r;break}}if(n===!0)break}},i.prototype.is_major=function(t){return t%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])===0},i.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]},i.prototype.getFirstMajor=function(){var t=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(t-this._start%t)%t)},i.prototype.formatValue=function(t){var e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?""+e:"string"==typeof e?e:t.toPrecision(5)},i.prototype.getLines=function(){for(var t=[],e=this.getStep(),i=(e-this._start%e)%e,o=this._start+i;this._end-o>1e-5;o+=e)o!=this._start&&t.push({major:this.is_major(o),y:this.convertValue(o),val:this.formatValue(o)});return t},i.prototype.followScale=function(t){var e=this.minorStepIdx,i=this._start,o=this._end,n=this,s=function(){n.magnitudefactor*=2},r=function(){n.magnitudefactor/=2};t.minorStepIdx<=1&&this.minorStepIdx<=1||t.minorStepIdx>1&&this.minorStepIdx>1||(t.minorStepIdxo+1e-5)r(),d=!1;else{if(!this.autoScaleStart&&this._start=0)){r(),d=!1;continue}console.warn("Can't adhere to given 'min' range, due to zeroalign")}this.autoScaleStart&&this.autoScaleEnd&&ue.x?1:-1})):this.itemsData=[]},n.prototype.getItems=function(){return this.itemsData},n.prototype.setZeroPosition=function(t){this.zeroPosition=t},n.prototype.setOptions=function(t){if(void 0!==t){var e=["sampling","style","sort","yAxisOrientation","barChart","zIndex","excludeFromStacking","excludeFromLegend"];a.selectiveDeepExtend(e,this.options,t),"function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),a.mergeOptions(this.options,t,"interpolation"),a.mergeOptions(this.options,t,"drawPoints"),a.mergeOptions(this.options,t,"shaded"),t.interpolation&&"object"==(0,r.default)(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5))}},n.prototype.update=function(t){this.group=t,this.content=t.content||"graph",this.className=t.className||this.className||"vis-graph-group"+this.groupsUsingDefaultStyles[0]%10,this.visible=void 0===t.visible||t.visible,this.style=t.style,this.setOptions(t.options)},n.prototype.getLegend=function(t,e,i,o,n){if(void 0==i||null==i){var s=document.createElementNS("http://www.w3.org/2000/svg","svg");i={svg:s,svgElements:{},options:this.options,groups:[this]}}switch(void 0!=o&&null!=o||(o=0),void 0!=n&&null!=n||(n=.5*e),this.options.style){case"line":d.drawIcon(this,o,n,t,e,i);break;case"points":case"point":l.drawIcon(this,o,n,t,e,i);break;case"bar":h.drawIcon(this,o,n,t,e,i)}return{icon:i.svg,label:this.content,orientation:this.options.yAxisOrientation}},n.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,o=0;ot[o].y?t[o].y:e,i=i0&&(i=Math.min(i,Math.abs(e[o-1].screen_x-e[o].screen_x))),0===i&&(void 0===t[e[o].screen_x]&&(t[e[o].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].screen_x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=t0){t.sort(function(t,e){return t.screen_x===e.screen_x?t.groupIde[s].screen_y?e[s].screen_y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n0){var i=[];return i=1==e.options.interpolation.enabled?o._catmullRom(t,e):o._linear(t)}},o.drawIcon=function(t,e,i,o,s,r){var a,h,d=.5*s,l=n.getSVGElement("rect",r.svgElements,r.svg);if(l.setAttributeNS(null,"x",e),l.setAttributeNS(null,"y",i-d),l.setAttributeNS(null,"width",o),l.setAttributeNS(null,"height",2*d),l.setAttributeNS(null,"class","vis-outline"),a=n.getSVGElement("path",r.svgElements,r.svg),a.setAttributeNS(null,"class",t.className),void 0!==t.style&&a.setAttributeNS(null,"style",t.style),a.setAttributeNS(null,"d","M"+e+","+i+" L"+(e+o)+","+i),1==t.options.shaded.enabled&&(h=n.getSVGElement("path",r.svgElements,r.svg),"top"==t.options.shaded.orientation?h.setAttributeNS(null,"d","M"+e+", "+(i-d)+"L"+e+","+i+" L"+(e+o)+","+i+" L"+(e+o)+","+(i-d)):h.setAttributeNS(null,"d","M"+e+","+i+" L"+e+","+(i+d)+" L"+(e+o)+","+(i+d)+"L"+(e+o)+","+i),h.setAttributeNS(null,"class",t.className+" vis-icon-fill"),void 0!==t.options.shaded.style&&""!==t.options.shaded.style&&h.setAttributeNS(null,"style",t.options.shaded.style)),1==t.options.drawPoints.enabled){var u={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size,className:t.className};n.drawPoint(e+.5*o,i,u,r.svgElements,r.svg)}},o.drawShading=function(t,e,i,o){if(1==e.options.shaded.enabled){var s=Number(o.svg.style.height.replace("px","")),r=n.getSVGElement("path",o.svgElements,o.svg),a="L";1==e.options.interpolation.enabled&&(a="C");var h,d=0;d="top"==e.options.shaded.orientation?0:"bottom"==e.options.shaded.orientation?s:Math.min(Math.max(0,e.zeroPosition),s),h="group"==e.options.shaded.orientation&&null!=i&&void 0!=i?"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" L"+i[i.length-1][0]+","+i[i.length-1][1]+" "+this.serializePath(i,a,!0)+i[0][0]+","+i[0][1]+" Z":"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" V"+d+" H"+t[0][0]+" Z",r.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&r.setAttributeNS(null,"style",e.options.shaded.style),r.setAttributeNS(null,"d",h)}},o.draw=function(t,e,i){if(null!=t&&void 0!=t){var o=n.getSVGElement("path",i.svgElements,i.svg);o.setAttributeNS(null,"class",e.className),void 0!==e.style&&o.setAttributeNS(null,"style",e.style);var s="L";1==e.options.interpolation.enabled&&(s="C"),o.setAttributeNS(null,"d","M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,s,!1))}},o.serializePath=function(t,e,i){if(t.length<2)return"";var o=e;if(i)for(var n=t.length-2;n>0;n--)o+=t[n][0]+","+t[n][1]+" ";else for(var n=1;n0&&(f=1/f),m=3*g*(g+v),m>0&&(m=1/m),a={screen_x:(-b*o.screen_x+p*n.screen_x+_*s.screen_x)*f,screen_y:(-b*o.screen_y+p*n.screen_y+_*s.screen_y)*f},h={screen_x:(y*n.screen_x+c*s.screen_x-b*r.screen_x)*m,screen_y:(y*n.screen_y+c*s.screen_y-b*r.screen_y)*m},0==a.screen_x&&0==a.screen_y&&(a=n),0==h.screen_x&&0==h.screen_y&&(h=s),x.push([a.screen_x,a.screen_y]),x.push([h.screen_x,h.screen_y]),x.push([s.screen_x,s.screen_y]);return x},o._linear=function(t){for(var e=[],i=0;i")}this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},n.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=(0,r.default)(this.groups);t.sort(function(t,e){return t\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function p(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&mt(o,i)}function c(t,e){return function(){return t.apply(e,arguments)}}function f(t,e){return typeof t==yt?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function g(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function v(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function y(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function S(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=A(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=N(o);e.timeStamp=wt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=H(a,h),e.distance=F(a,h),P(i,e),e.offsetDirection=L(e.deltaX,e.deltaY);var d=R(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=d.x,e.overallVelocityY=d.y,e.overallVelocity=_t(d.x)>_t(d.y)?d.x:d.y,e.scale=r?j(r.pointers,o):1,e.rotation=r?Y(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,I(i,e);var l=t.element;y(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==Nt&&s.eventType!==Lt||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function I(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=Ft&&(h>At||r.velocity===a)){var d=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,u=R(h,d,l);o=u.x,n=u.y,i=_t(u.x)>_t(u.y)?u.x:u.y,s=L(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function A(t){for(var e=[],i=0;i=_t(e)?t<0?Yt:jt:e<0?Gt:zt}function F(t,e,i){i||(i=Vt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function H(t,e,i){i||(i=Vt);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function Y(t,e){return H(e[1],e[0],qt)+H(t[1],t[0],qt)}function j(t,e){return F(e[0],e[1],qt)/F(t[0],t[1],qt)}function G(){this.evEl=Zt,this.evWin=Kt,this.pressed=!1,T.apply(this,arguments)}function z(){this.evEl=Qt,this.evWin=te,T.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function W(){this.evTarget=ie,this.evWin=oe,this.started=!1,T.apply(this,arguments)}function B(t,e){var i=x(t.touches),o=x(t.changedTouches);return e&(Lt|Ft)&&(i=D(i.concat(o),"identifier",!0)),[i,o]}function U(){this.evTarget=se,this.targetIds={},T.apply(this,arguments)}function V(t,e){var i=x(t.touches),o=this.targetIds;if(e&(Nt|Rt)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=x(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return y(t.target,h)}),e===Nt)for(n=0;n-1&&o.splice(t,1)};setTimeout(n,re)}}function K(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,o=0;o-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;o<_e&&e(i.options.event+et(o)),e(i.options.event),t.additionalEvent&&e(t.additionalEvent),o>=_e&&e(i.options.event+et(o))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=De)},canEmit:function(){for(var t=0;te.threshold&&n&e.direction},attrTest:function(t){return nt.prototype.attrTest.call(this,t)&&(this.state&ye||!(this.state&ye)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=it(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),p(rt,nt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ce]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ye)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),p(at,tt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[ue]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(Lt|Ft)&&!n)this.reset();else if(t.eventType&Nt)this.reset(),this._timer=h(function(){this.state=we,this.tryEmit()},e.time,this);else if(t.eventType&Lt)return we;return De},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===we&&(t&&t.eventType&Lt?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=wt(),this.manager.emit(this.options.event,this._input)))}}),p(ht,nt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ce]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ye)}}),p(dt,nt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Wt|Bt,pointers:1},getTouchAction:function(){return st.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Wt|Bt)?e=t.overallVelocity:i&Wt?e=t.overallVelocityX:i&Bt&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&_t(e)>this.options.velocity&&t.eventType&Lt},emit:function(t){var e=it(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),p(lt,tt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[pe]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distances.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),v):n.distance<=r?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),v):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print((0,d.default)(i))+t.printLocation(o,e),v),m=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=1e9,r="",a=[],h=e.toLowerCase(),d=void 0;for(var l in i){var u=void 0;if(void 0!==i[l].__type__&&n===!0){var p=t.findInOptions(e,i[l],f.copyAndExtendArray(o,l));s>p.distance&&(r=p.closestMatch,a=p.path,s=p.distance,d=p.indexMatch)}else l.toLowerCase().indexOf(h)!==-1&&(d=l),u=t.levenshteinDistance(e,l),s>u&&(r=l,a=f.copyArray(o),s=u)}return{closestMatch:r,path:a,distance:s,indexMatch:d}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Problem value found at: \n",o="\n\n"+i+"options = {\n",n=0;n1e3&&(i=1e3),e.body.dom.rollingModeBtn.style.visibility="hidden",e.currentTimeTimer=setTimeout(t,i)}var e=this;t()},n.prototype.stopRolling=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),this.rolling=!1,this.body.dom.rollingModeBtn.style.visibility="visible")},n.prototype.setRange=function(t,e,i,o,n){o!==!0&&(o=!1);var s=void 0!=t?p.convert(t,"Date").valueOf():null,r=void 0!=e?p.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var h=this,l=this.start,c=this.end,f="object"===("undefined"==typeof i?"undefined":(0,u.default)(i))&&"duration"in i?i.duration:500,g="object"===("undefined"==typeof i?"undefined":(0,u.default)(i))&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",v=p.easingFunctions[g];if(!v)throw new Error("Unknown easing function "+(0,d.default)(g)+". Choose from: "+(0,a.default)(p.easingFunctions).join(", "));var y=(new Date).valueOf(),b=!1,_=function t(){if(!h.props.touch.dragging){var e=(new Date).valueOf(),i=e-y,a=v(i/f),d=i>f,u=d||null===s?s:l+(s-l)*a,p=d||null===r?r:c+(r-c)*a;w=h._applyRange(u,p),m.updateHiddenDates(h.options.moment,h.body,h.options.hiddenDates),b=b||w;var g={start:new Date(h.start),end:new Date(h.end),byUser:o,event:n};w&&h.body.emitter.emit("rangechange",g),d?b&&h.body.emitter.emit("rangechanged",g):h.animationTimer=setTimeout(t,20)}};return _()}var w=this._applyRange(s,r);if(m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),w){var x={start:new Date(this.start),end:new Date(this.end),byUser:o,event:n};this.body.emitter.emit("rangechange",x),this.body.emitter.emit("rangechanged",x)}},n.prototype.getMillisecondsPerPixel=function(){return(this.end-this.start)/this.body.dom.center.clientWidth},n.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},n.prototype._applyRange=function(t,e){var i,o=null!=t?p.convert(t,"Date").valueOf():this.start,n=null!=e?p.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?p.convert(this.options.max,"Date").valueOf():null,r=null!=this.options.min?p.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(ns&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=r&&o=this.start-h&&n<=this.end?(o=this.start,n=this.end):(i=a-(n-o),o-=i/2,n+=i/2)}}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);d<0&&(d=0),n-o>d&&(this.end-this.start===d&&othis.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},n.prototype.getRange=function(){return{start:this.start,end:this.end}},n.prototype.conversion=function(t,e){return n.conversion(this.start,this.end,t,e)},n.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},n.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this._isInsideRange(t)&&this.props.touch.allowDragging&&(this.stopRolling(),this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},n.prototype._onDrag=function(t){if(t&&this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;s(e);var i="horizontal"==e?t.deltaX:t.deltaY; +i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height;if(this.options.rtl)var a=i/r*o;else var a=-i/r*o;var h=this.props.touch.start+a,d=this.props.touch.end+a,l=m.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),u=m.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(l!=h||u!=d)return this.deltaDifference+=i,this.props.touch.start=l,this.props.touch.end=u,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d);var p=new Date(this.start),c=new Date(this.end);this.body.emitter.emit("rangechange",{start:p,end:c,byUser:!0,event:t}),this.body.emitter.emit("panmove")}},n.prototype._onDragEnd=function(t){this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0,event:t}))},n.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),this.options.zoomKey&&!t[this.options.zoomKey]&&this.options.zoomable||!this.options.zoomable&&this.options.moveable){if(this.options.horizontalScroll){t.preventDefault();var i=e*(this.end-this.start)/20,o=this.start-i,n=this.end-i;this.setRange(o,n,!1,!0,t)}}else if(this.options.zoomable&&this.options.moveable&&this._isInsideRange(t)&&e){var s;s=e<0?1-e/5:1/(1+e/5);var r;if(this.rolling)r=(this.start+this.end)/2;else{var a=this.getPointer({x:t.clientX,y:t.clientY},this.body.dom.center);r=this._pointerToDate(a)}this.zoom(s,r,e,t),t.preventDefault()}},n.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},n.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=this.getPointer(t.center,this.body.dom.center)),this.stopRolling();var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,i),s=o-n,r=i-n+(this.props.touch.start-(i-n))*e,a=i+s+(this.props.touch.end-(i+s))*e;this.startToFront=1-e<=0,this.endToFront=e-1<=0;var h=m.snapAwayFromHidden(this.body.hiddenDates,r,1-e,!0),d=m.snapAwayFromHidden(this.body.hiddenDates,a,e-1,!0);h==r&&d==a||(this.props.touch.start=h,this.props.touch.end=d,this.scaleOffset=1-t.scale,r=h,a=d),this.setRange(r,a,!1,!0,t),this.startToFront=!1,this.endToFront=!0}},n.prototype._isInsideRange=function(t){var e=t.center?t.center.x:t.clientX;if(this.options.rtl)var i=e-p.getAbsoluteLeft(this.body.dom.centerContainer);else var i=p.getAbsoluteRight(this.body.dom.centerContainer)-e;var o=this.body.util.toTime(i);return o>=this.start&&o<=this.end},n.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(s(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},n.prototype.getPointer=function(t,e){return this.options.rtl?{x:p.getAbsoluteRight(e)-t.x,y:t.y-p.getAbsoluteTop(e)}:{x:t.x-p.getAbsoluteLeft(e),y:t.y-p.getAbsoluteTop(e)}},n.prototype.zoom=function(t,e,i,o){null==e&&(e=(this.start+this.end)/2);var n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),s=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,e),r=n-s,a=e-s+(this.start-(e-s))*t,h=e+r+(this.end-(e+r))*t;this.startToFront=!(i>0),this.endToFront=!(-i>0);var d=m.snapAwayFromHidden(this.body.hiddenDates,a,i,!0),l=m.snapAwayFromHidden(this.body.hiddenDates,h,-i,!0);d==a&&l==h||(a=d,h=l),this.setRange(a,h,!1,!0,o),this.startToFront=!1,this.endToFront=!0},n.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},n.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n,!1,!0,null)},t.exports=n},function(t,e,i){function o(t,e){this.options=null,this.props=null}var n=i(1);o.prototype.setOptions=function(t){t&&n.extend(this.options,t)},o.prototype.redraw=function(){return!1},o.prototype.destroy=function(){},o.prototype._isResized=function(){var 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},t.exports=o},function(t,e){e.convertHiddenOptions=function(t,i,o){if(o&&!Array.isArray(o))return e.convertHiddenOptions(t,i,[o]);if(i.hiddenDates=[],o&&1==Array.isArray(o)){for(var n=0;n=4*a){var p=0,c=s.clone();switch(o[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-p,"days"),c.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),c.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(p,"months"),c.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(p,"years"),c.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}for(;d=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o=r&&nt.range.end){var h={start:t.range.start,end:i};i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,h,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale}i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,t.range,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale},e.toTime=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return new Date(i/n.scale+n.offset)}var s=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end),r=t.range.end-t.range.start-s,a=r*i/o,h=e.getAccumulatedHiddenDuration(t.body.hiddenDates,t.range,a),d=new Date(h+a+t.range.start);return d},e.getHiddenDurationBetween=function(t,e,i){for(var o=0,n=0;n=e&&r=e&&r<=i&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,o,n){return n=t(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,o,n)},e.getHiddenDurationBefore=function(t,e,i,o){var n=0;o=t(o).toDate().valueOf();for(var s=0;s=i.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?o<0?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&t-1||h))return t.dataTransfer.dropEffect="move",h=!0,!1}function n(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation();try{var e=JSON.parse(t.dataTransfer.getData("text"));if(!e.content)return}catch(t){return!1}return h=!1,t.center={x:t.clientX,y:t.clientY},s.itemSet._onAddItem(t),!1}this.dom={},this.dom.container=t,this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.rollingModeBtn=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.rollingModeBtn.className="vis-rolling-mode-btn",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.rollingModeBtn),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.on("rangechange",function(){this.initialDrawDone===!0&&this._redraw()}.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("panmove",this._onDrag.bind(this));var s=this;this._origRedraw=this._redraw.bind(this),this._redraw=p.throttle(this._origRedraw),this.on("_change",function(t){s.itemSet&&s.itemSet.initialItemSetDrawn&&t&&1==t.queue?s._redraw():s._origRedraw()}),this.hammer=new l(this.dom.root);var r=this.hammer.get("pinch").set({enable:!0});u.disablePreventDefaultVertically(r),this.hammer.get("pan").set({threshold:5,direction:l.DIRECTION_HORIZONTAL}),this.listeners={};var a=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];a.forEach(function(t){var e=function(e){s.isActive()&&s.emit(t,e)};s.hammer.on(t,e),s.listeners[t]=e}),u.onTouch(this.hammer,function(t){s.emit("touch",t)}.bind(this)),u.onRelease(this.hammer,function(t){s.emit("release",t)}.bind(this)),this.dom.centerContainer.addEventListener?(this.dom.centerContainer.addEventListener("mousewheel",e.bind(this),!1),this.dom.centerContainer.addEventListener("DOMMouseScroll",e.bind(this),!1)):this.dom.centerContainer.attachEvent("onmousewheel",e.bind(this)),this.dom.left.parentNode.addEventListener("scroll",i.bind(this)),this.dom.right.parentNode.addEventListener("scroll",i.bind(this));var h=!1;if(this.dom.center.addEventListener("dragover",o.bind(this),!1),this.dom.center.addEventListener("drop",n.bind(this),!1),this.customTimes=[],this.touch={},this.redrawCount=0,this.initialDrawDone=!1,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},n.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates","locale","locales","moment","rtl","zoomKey","horizontalScroll","verticalScroll"];if(p.selectiveExtend(e,this.options,t),this.dom.rollingModeBtn.style.visibility="hidden",this.options.rtl&&(this.dom.container.style.direction="rtl",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical-rtl"),this.options.verticalScroll&&(this.options.rtl?this.dom.rightContainer.className="vis-panel vis-right vis-vertical-scroll":this.dom.leftContainer.className="vis-panel vis-left vis-vertical-scroll"),this.options.orientation={item:void 0,axis:void 0},"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"===(0,h.default)(t.orientation)&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new c(this.body);i.setOptions=function(t){var e=t?p.extend({},t):{};e.orientation="top",c.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);o!==-1&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),"hiddenDates"in this.options&&m.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new f(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),"configure"in t){this.configurator||(this.configurator=this._createConfigurator()),this.configurator.setOptions(t.configure);var n=p.deepExtend({},this.options);this.components.forEach(function(t){p.deepExtend(n,t.options)}),this.configurator.setModuleOptions({global:n})}this._redraw()},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},n.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));i.length>0&&i[0].setCustomTime(t)},n.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));return e[0].getCustomTime()},n.prototype.setCustomTimeTitle=function(t,e){var i=this.customTimes.filter(function(t){return t.options.id===e});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));if(i.length>0)return i[0].setCustomTitle(t)},n.prototype.getEventProperties=function(t){return{event:t}},n.prototype.addCustomTime=function(t,e){var i=void 0!==t?p.convert(t,"Date").valueOf():new Date,o=this.customTimes.some(function(t){return t.options.id===e});if(o)throw new Error("A custom time with id "+(0,r.default)(e)+" already exists");var n=new g(this.body,p.extend({},this.options,{time:i,id:e}));return this.customTimes.push(n),this.components.push(n),this._redraw(),e},n.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},n.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},n.prototype.fit=function(t){var e=this.getDataRange();if(null!==e.min||null!==e.max){var i=e.max-e.min,o=new Date(e.min.valueOf()-.01*i),n=new Date(e.max.valueOf()+.01*i),s=!t||void 0===t.animation||t.animation;this.range.setRange(o,n,s)}},n.prototype.getDataRange=function(){throw new Error("Cannot invoke abstract method getDataRange")},n.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0===n.animation||n.animation,this.range.setRange(n.start,n.end,o)}else o=!i||void 0===i.animation||i.animation,this.range.setRange(t,e,o)},n.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=p.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=!e||void 0===e.animation||e.animation;this.range.setRange(n,s,r)},n.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},n.prototype.zoomIn=function(t,e){if(!(!t||t<0||t>1)){var i=this.getWindow(),o=i.start.valueOf(),n=i.end.valueOf(),s=n-o,r=s/(1+t),a=(s-r)/2,h=o+a,d=n-a;this.setWindow(h,d,e)}},n.prototype.zoomOut=function(t,e){if(!(!t||t<0||t>1)){var i=this.getWindow(),o=i.start.valueOf(),n=i.end.valueOf(),s=n-o,r=o-s*t/2,a=n+s*t/2;this.setWindow(r,a,e)}},n.prototype.redraw=function(){this._redraw()},n.prototype._redraw=function(){this.redrawCount++;var t=!1,e=this.options,i=this.props,o=this.dom;if(o&&o.container&&0!=o.root.offsetWidth){m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),"top"==e.orientation?(p.addClassName(o.root,"vis-top"),p.removeClassName(o.root,"vis-bottom")):(p.removeClassName(o.root,"vis-top"),p.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=p.option.asSize(e.maxHeight,""),o.root.style.minHeight=p.option.asSize(e.minHeight,""),o.root.style.width=p.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top,i.borderRootHeight=o.root.offsetHeight-o.root.clientHeight,i.borderRootWidth=o.root.offsetWidth-o.root.clientWidth,0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(i.borderRootWidth=i.borderRootHeight),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var n=Math.max(i.left.height,i.center.height,i.right.height),s=i.top.height+n+i.bottom.height+i.borderRootHeight+i.border.top+i.border.bottom;o.root.style.height=p.option.asSize(e.height,s+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-i.borderRootHeight;var r=i.root.height-i.top.height-i.bottom.height-i.borderRootHeight;i.centerContainer.height=r,i.leftContainer.height=r,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-i.borderRootWidth,this.initialDrawDone||(i.scrollbarWidth=p.getScrollBarWidth()),e.verticalScroll?e.rtl?(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth+i.scrollbarWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth+i.scrollbarWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right),this._setDOM();var a=this._updateScrollTop();"top"!=e.orientation.item&&(a+=Math.max(i.centerContainer.height-i.center.height-i.border.top-i.border.bottom,0)),o.center.style.top=a+"px";var h=0==i.scrollTop?"hidden":"",d=i.scrollTop==i.scrollTopMin?"hidden":"";o.shadowTop.style.visibility=h,o.shadowBottom.style.visibility=d,o.shadowTopLeft.style.visibility=h,o.shadowBottomLeft.style.visibility=d,o.shadowTopRight.style.visibility=h,o.shadowBottomRight.style.visibility=d,e.verticalScroll&&(o.rightContainer.className="vis-panel vis-right vis-vertical-scroll",o.leftContainer.className="vis-panel vis-left vis-vertical-scroll",o.shadowTopRight.style.visibility="hidden",o.shadowBottomRight.style.visibility="hidden",o.shadowTopLeft.style.visibility="hidden",o.shadowBottomLeft.style.visibility="hidden",o.left.style.top="0px",o.right.style.top="0px"),(!e.verticalScroll||i.center.heighti.centerContainer.height;this.hammer.get("pan").set({direction:u?l.DIRECTION_ALL:l.DIRECTION_HORIZONTAL}),this.components.forEach(function(e){t=e.redraw()||t});var c=5;if(t){if(this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTope&&o.push(h.id):h.lefti&&o.push(h.id)}return o},n.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;in)return}}if(i&&i!=this.groupTouchParams.group){var h=e.get(i.groupId),d=e.get(this.groupTouchParams.group.groupId);d&&h&&(this.options.groupOrderSwap(d,h,e),e.update(d),e.update(h));var l=e.getIds({order:this.options.groupOrder});if(!p.equalArray(l,this.groupTouchParams.originalOrder))for(var u=this.groupTouchParams.originalOrder,c=this.groupTouchParams.group.groupId,m=Math.min(u.length,l.length),g=0,v=0,y=0;g=m)break;if(l[g+v]!=c)if(u[g+y]!=c){var b=l.indexOf(u[g+y]),_=e.get(l[g+v]),w=e.get(u[g+y]);this.options.groupOrderSwap(_,w,e),e.update(_),e.update(w);var x=l[g+v];l[g+v]=u[g+y],l[b]=x,g++}else y=1;else v=1}}}},n.prototype._onGroupDragEnd=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this,i=e.groupTouchParams.group.groupId,o=e.groupsData.getDataSet(),n=p.extend({},o.get(i));e.options.onMoveGroup(n,function(t){if(t)t[o._fieldId]=i,o.update(t);else{var n=o.getIds({order:e.options.groupOrder});if(!p.equalArray(n,e.groupTouchParams.originalOrder))for(var s=e.groupTouchParams.originalOrder,r=Math.min(s.length,n.length),a=0;a=r)break;var h=n.indexOf(s[a]),d=o.get(n[a]),l=o.get(s[a]);e.options.groupOrderSwap(d,l,o),o.update(d),o.update(l);var u=n[a];n[a]=s[a],n[h]=u,a++}}}),e.body.emitter.emit("groupDragged",{groupId:i})}},n.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.srcEvent&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey),i=t.srcEvent&&t.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var o=this.getSelection(),n=this.itemFromTarget(t),s=n?[n.id]:[];this.setSelection(s);var r=this.getSelection();(r.length>0||o.length>0)&&this.body.emitter.emit("select",{items:r,event:t})}},n.prototype._onMouseOver=function(t){var e=this.itemFromTarget(t);if(e){var i=this.itemFromRelatedTarget(t);if(e!==i){var o=e.getTitle();if(o){null==this.popup&&(this.popup=new l.default(this.body.dom.root,this.options.tooltip.overflowMethod||"flip")),this.popup.setText(o);var n=this.body.dom.centerContainer;this.popup.setPosition(t.clientX-p.getAbsoluteLeft(n)+n.offsetLeft,t.clientY-p.getAbsoluteTop(n)+n.offsetTop),this.popup.show()}else null!=this.popup&&this.popup.hide();this.body.emitter.emit("itemover",{item:e.id,event:t})}}},n.prototype._onMouseOut=function(t){var e=this.itemFromTarget(t);if(e){var i=this.itemFromRelatedTarget(t);e!==i&&(null!=this.popup&&this.popup.hide(),this.body.emitter.emit("itemout",{item:e.id,event:t}))}},n.prototype._onMouseMove=function(t){var e=this.itemFromTarget(t);if(e&&this.options.tooltip.followMouse&&this.popup&&!this.popup.hidden){var i=this.body.dom.centerContainer;this.popup.setPosition(t.clientX-p.getAbsoluteLeft(i)+i.offsetLeft,t.clientY-p.getAbsoluteTop(i)+i.offsetTop),this.popup.show()}},n.prototype._onMouseWheel=function(t){this.touchParams.itemIsDragging&&this._onDragEnd(t)},n.prototype._onUpdateItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this;if(t){var i=e.itemsData.get(t.id);this.options.onUpdate(i,function(t){t&&e.itemsData.getDataSet().update(t)})}}},n.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(!o){if(this.options.rtl)var n=p.getAbsoluteRight(this.dom.frame),s=n-t.center.x;else var n=p.getAbsoluteLeft(this.dom.frame),s=t.center.x-n;var r=this.body.util.toTime(s),a=this.body.util.getScale(),h=this.body.util.getStep(),d={start:i?i(r,a,h):r,content:"new item"};if("drop"==t.type){var l=JSON.parse(t.dataTransfer.getData("text"));if(d.content=l.content,d.type=l.type||"box",d[this.itemsData._fieldId]=l.id||p.randomUUID(),"range"==l.type||l.end&&l.start)if(l.end)d.end=l.end,d.start=l.start;else{var u=this.body.util.toTime(s+this.props.width/5);d.end=i?i(u,a,h):u}}else if(d[this.itemsData._fieldId]=p.randomUUID(),"range"===this.options.type){var u=this.body.util.toTime(s+this.props.width/5);d.end=i?i(u,a,h):u}var c=this.groupFromTarget(t);c&&(d.group=c.groupId),d=this._cloneItemData(d),this.options.onAdd(d,function(i){i&&(e.itemsData.getDataSet().add(i),"drop"==t.type&&e.setSelection([i.id]))})}}},n.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[],o=t.srcEvent&&t.srcEvent.shiftKey||!1;if(o&&this.options.multiselect){var s=this.itemsData.get(e.id).group,r=void 0;this.options.multiselectPerGroup&&i.length>0&&(r=this.itemsData.get(i[0]).group),this.options.multiselectPerGroup&&void 0!=r&&r!=s||i.push(e.id);var a=n._getItemRange(this.itemsData.get(i,this.itemOptions));if(!this.options.multiselectPerGroup||r==s){i=[];for(var h in this.items)if(this.items.hasOwnProperty(h)){var d=this.items[h],l=d.data.start,u=void 0!==d.data.end?d.data.end:l;!(l>=a.min&&u<=a.max)||this.options.multiselectPerGroup&&r!=this.itemsData.get(d.id).group||d instanceof x||i.push(d.id)}}}else{var p=i.indexOf(e.id);p==-1?i.push(e.id):i.splice(p,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection(),event:t})}}},n._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},n.prototype.itemFromElement=function(t){for(var e=t;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},n.prototype.itemFromTarget=function(t){return this.itemFromElement(t.target)},n.prototype.itemFromRelatedTarget=function(t){return this.itemFromElement(t.relatedTarget)},n.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.clientY,i=0;ir&&er)return n}else if(0===i&&en-this.padding&&(a=!0),s=a?this.x-i:this.x,r=h?this.y-e:this.y}else r=this.y-e,r+e+this.padding>o&&(r=o-e-this.padding),rn&&(s=n-i-this.padding),s0&&this.current.milliseconds()0&&this.current.seconds()0&&this.current.minutes()0&&this.current.hours()0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=n(t);if("year"==e){var s=o.year()+Math.round(o.month()/12);o.year(Math.round(s/i)*i),o.month(0),o.date(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("month"==e)o.date()>15?(o.date(1),o.add(1,"month")):o.date(1),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.hours(24*Math.round(o.hours()/24));break;default:o.hours(12*Math.round(o.hours()/12))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.hours(12*Math.round(o.hours()/12));break;default:o.hours(6*Math.round(o.hours()/6))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("hour"==e){switch(i){case 4:o.minutes(60*Math.round(o.minutes()/60));break;default:o.minutes(30*Math.round(o.minutes()/30))}o.seconds(0),o.milliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.minutes(5*Math.round(o.minutes()/5)),o.seconds(0);break;case 5:o.seconds(60*Math.round(o.seconds()/60));break;default:o.seconds(30*Math.round(o.seconds()/30))}o.milliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.seconds(5*Math.round(o.seconds()/5)),o.milliseconds(0);break;case 5:o.milliseconds(1e3*Math.round(o.milliseconds()/1e3));break;default:o.milliseconds(500*Math.round(o.milliseconds()/500))}else if("millisecond"==e){var r=i>5?i/2:1;o.milliseconds(Math.round(o.milliseconds()/r)*r)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}var t=this.moment(this.current);switch(this.scale){case"millisecond":return 0==t.milliseconds();case"second":return 0==t.seconds();case"minute":return 0==t.hours()&&0==t.minutes();case"hour":return 0==t.hours();case"weekday":case"day":return 1==t.date();case"month":return 0==t.month();case"year":return!1;default:return!1}},o.prototype.getLabelMinor=function(t){if(void 0==t&&(t=this.current),t instanceof Date&&(t=this.moment(t)),"function"==typeof this.format.minorLabels)return this.format.minorLabels(t,this.scale,this.step);var e=this.format.minorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getLabelMajor=function(t){if(void 0==t&&(t=this.current),t instanceof Date&&(t=this.moment(t)),"function"==typeof this.format.majorLabels)return this.format.majorLabels(t,this.scale,this.step);var e=this.format.majorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(s().add(1,"day"),"day")?" vis-tomorrow":t.isSame(s().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}function n(t){return t.isSame(new Date,"year")?" vis-current-year":""}var s=this.moment,r=this.moment(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return e(a)+t(a.milliseconds()).trim();case"second":return e(a)+t(a.seconds()).trim();case"minute":return e(a)+t(a.minutes()).trim();case"hour":return"vis-h"+a.hours()+(4==this.step?"-h"+(a.hours()+4):"")+e(a)+t(a.hours());case"weekday":return"vis-"+a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":return"vis-day"+a.date()+" vis-"+a.format("MMMM").toLowerCase()+e(a)+o(a)+(this.step<=2?e(a):"")+(this.step<=2?" vis-"+a.format("dddd").toLowerCase():""+t(a.date()-1));case"month":return"vis-"+a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var d=a.year();return"vis-year"+d+n(a)+t(d);default:return""}},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i){this.groupId=t,this.subgroups={},this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.isVisible=null,e&&e.nestedGroups&&(this.nestedGroups=e.nestedGroups,0==e.showNested?this.showNested=!1:this.showNested=!0),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;var o=this;this.itemSet.body.emitter.on("checkRangedItems",function(){o.checkRangedItems=!0}),this._create(),this.setData(e)}var s=i(58),r=o(s),a=i(1),h=i(115);i(116);n.prototype._create=function(){var t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;var e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;var i=document.createElement("div");i.className="vis-group",i["timeline-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)},n.prototype.setData=function(t){var e,i;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.appendChild(e);this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else e instanceof Object?i(t,this.dom.inner):void 0!==e&&null!==e?this.dom.inner.innerHTML=e:this.dom.inner.innerHTML=this.groupId||"";if(this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?a.removeClassName(this.dom.inner,"vis-hidden"):a.addClassName(this.dom.inner,"vis-hidden"),t&&t.nestedGroups)if(0==t.showNested?this.showNested=!1:this.showNested=!0,a.addClassName(this.dom.label,"vis-nesting-group"),this.showNested)a.removeClassName(this.dom.label,"collapsed"),a.addClassName(this.dom.label,"expanded");else{a.removeClassName(this.dom.label,"expanded");var o=this.itemSet.options.rtl?"collapsed-rtl":"collapsed";a.addClassName(this.dom.label,o)}t&&t.nestedInGroup&&(a.addClassName(this.dom.label,"vis-nested-group"),this.itemSet.options&&this.itemSet.options.rtl?this.dom.inner.style.paddingRight="30px":this.dom.inner.style.paddingLeft="30px");var n=t&&t.className||null;n!=this.className&&(this.className&&(a.removeClassName(this.dom.label,this.className),a.removeClassName(this.dom.foreground,this.className),a.removeClassName(this.dom.background,this.className),a.removeClassName(this.dom.axis,this.className)),a.addClassName(this.dom.label,n),a.addClassName(this.dom.foreground,n),a.addClassName(this.dom.background,n),a.addClassName(this.dom.axis,n),this.className=n),this.style&&(a.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(a.addCssText(this.dom.label,t.style),this.style=t.style)},n.prototype.getLabelWidth=function(){return this.props.label.width},n.prototype.redraw=function(t,e,i){var o=!1,n=this.dom.marker.clientHeight;n!=this.lastMarkerHeight&&(this.lastMarkerHeight=n,a.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()}),i=!0),this._calculateSubGroupHeights(e);var s=this.dom.foreground;if(this.top=s.offsetTop,this.right=s.offsetLeft,this.width=s.offsetWidth,this.isVisible=this._isGroupVisible(t,e),"function"==typeof this.itemSet.options.order){if(i){var r=this,d=!1;a.forEach(this.items,function(t){t.displayed||(t.redraw(),r.visibleItems.push(t)),t.repositionX(d)});var l=this.orderedItems.byStart.slice().sort(function(t,e){return r.itemSet.options.order(t.data,e.data)});h.stack(l,e,!0)}this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t)}else this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t),this.itemSet.options.stack?h.stack(this.visibleItems,e,i):h.nostack(this.visibleItems,e,this.subgroups,this.itemSet.options.stackSubgroups);this._updateSubgroupsSizes();var u=this._calculateHeight(e),s=this.dom.foreground;this.top=s.offsetTop,this.right=s.offsetLeft,this.width=s.offsetWidth,o=a.updateProperty(this,"height",u)||o,o=a.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||o,o=a.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||o,this.dom.background.style.height=u+"px",this.dom.foreground.style.height=u+"px",this.dom.label.style.height=u+"px";for(var p=0,c=this.visibleItems.length;p0){var e=this;this.resetSubgroups(),a.forEach(this.visibleItems,function(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=!0)})}},n.prototype._isGroupVisible=function(t,e){var i=this.top<=t.body.domProps.centerContainer.height-t.body.domProps.scrollTop+e.axis&&this.top+this.height+e.axis>=-t.body.domProps.scrollTop;return i},n.prototype._calculateHeight=function(t){var e,i=this.visibleItems;if(i.length>0){var o=i[0].top,n=i[0].top+i[0].height;if(a.forEach(i,function(t){o=Math.min(o,t.top),n=Math.max(n,t.top+t.height)}),o>t.axis){var s=o-t.axis;n-=s,a.forEach(i,function(t){t.top-=s})}e=n+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},n.prototype.show=function(){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)},n.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},n.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,top:0,start:t.data.start,end:t.data.end,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),new Date(t.data.start)new Date(this.subgroups[t.data.subgroup].end)&&(this.subgroups[t.data.subgroup].end=t.data.end),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),this.visibleItems.indexOf(t)==-1){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},n.prototype._updateSubgroupsSizes=function(){var t=this;if(t.subgroups)for(var e in t.subgroups){var i=t.subgroups[e].items[0].data.start,o=t.subgroups[e].items[0].data.end;t.subgroups[e].items.forEach(function(t){new Date(t.data.start)new Date(o)&&(o=t.data.end)}),t.subgroups[e].start=i,t.subgroups[e].end=o}},n.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;i0)for(var l=0;lh}),1==this.checkRangedItems)for(this.checkRangedItems=!1,l=0;lh})}for(var l=0;l=0;s--){var r=e[s];if(n(r))break;void 0===o[r.id]&&(o[r.id]=!0,i.push(r))}for(var s=t+1;so[r].index&&e.collisionByTimes(o[n],o[r])){s=o[r];break}null!=s&&(o[n].top=s.top+s.height)}while(s)}for(var a=0;ae.right&&t.top-o.vertical+ie.top:t.left-o.horizontal+ie.left&&t.top-o.vertical+ie.top},e.collisionByTimes=function(t,e){return t.start<=e.start&&t.end>=e.start&&t.tope.top||e.start<=t.start&&e.end>=t.start&&e.topt.top}},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,this.options=i,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(101),i(117));o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-range",o.prototype.isVisible=function(t){return this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.visibleFrame=document.createElement("div"),t.visibleFrame.className="vis-item-visible-frame",t.box.appendChild(t.visibleFrame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=this.editable.updateTime||this.editable.updateGroup,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.box.className=this.baseClassName+o,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintOnItemUpdateTimeTooltip(t.box),this._repaintDeleteButton(t.box),this._repaintDragCenter(),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);void 0!==t&&t!==!0||(n<-o&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n+.5,1);switch(this.overflow?(this.options.rtl?this.right=n:this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.options.rtl?this.right=n:this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.options.rtl?this.dom.box.style.right=this.right+"px":this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.options.rtl?this.dom.content.style.right="0":this.dom.content.style.left="0";break;case"right":this.options.rtl?this.dom.content.style.right=Math.max(r-i,0)+"px":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.options.rtl?this.dom.content.style.right=Math.max((r-i)/2,0)+"px":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:n<0?-n:0,this.options.rtl?this.dom.content.style.right=e+"px":(this.dom.content.style.left=e+"px",this.dom.content.style.width="calc(100% - "+e+"px)")}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.groupShowing=!0,this.dirty=!0,this.top=null,this.right=null,this.left=null,this.width=null,this.height=null,this.editable=null,this._updateEditStatus()}var s=i(62),r=o(s),a=i(58),h=o(a),d=i(101),l=i(1),u=i(82);n.prototype.stack=!0,n.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this._updateEditStatus(),this.dirty=!0,this.displayed&&this.redraw()},n.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},n.prototype.isVisible=function(t){return!1},n.prototype.show=function(){return!1},n.prototype.hide=function(){return!1},n.prototype.redraw=function(){},n.prototype.repositionX=function(){},n.prototype.repositionY=function(){},n.prototype._repaintDragCenter=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragCenter){var t=this,e=document.createElement("div");e.className="vis-drag-center",e.dragCenterItem=this,new d(e).on("doubletap",function(e){e.stopPropagation(),t.parent.itemSet._onUpdateItem(t)}),this.dom.box?this.dom.box.appendChild(e):this.dom.point&&this.dom.point.appendChild(e),this.dom.dragCenter=e}else!this.selected&&this.dom.dragCenter&&(this.dom.dragCenter.parentNode&&this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter),this.dom.dragCenter=null)},n.prototype._repaintDeleteButton=function(t){var e=(this.options.editable.overrideItems||null==this.editable)&&this.options.editable.remove||!this.options.editable.overrideItems&&null!=this.editable&&this.editable.remove;if(this.selected&&e&&!this.dom.deleteButton){var i=this,o=document.createElement("div");this.options.rtl?o.className="vis-delete-rtl":o.className="vis-delete",o.title="Delete this item",new d(o).on("tap",function(t){t.stopPropagation(),i.parent.removeFromDataSet(i)}),t.appendChild(o),this.dom.deleteButton=o}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},n.prototype._repaintOnItemUpdateTimeTooltip=function(t){if(this.options.tooltipOnItemUpdateTime){var e=(this.options.editable.updateTime||this.data.editable===!0)&&this.data.editable!==!1;if(this.selected&&e&&!this.dom.onItemUpdateTimeTooltip){var i=document.createElement("div");i.className="vis-onUpdateTime-tooltip",t.appendChild(i),this.dom.onItemUpdateTimeTooltip=i}else!this.selected&&this.dom.onItemUpdateTimeTooltip&&(this.dom.onItemUpdateTimeTooltip.parentNode&&this.dom.onItemUpdateTimeTooltip.parentNode.removeChild(this.dom.onItemUpdateTimeTooltip),this.dom.onItemUpdateTimeTooltip=null);if(this.dom.onItemUpdateTimeTooltip){this.dom.onItemUpdateTimeTooltip.style.visibility=this.parent.itemSet.touchParams.itemIsDragging?"visible":"hidden",this.options.rtl?this.dom.onItemUpdateTimeTooltip.style.right=this.dom.content.style.right:this.dom.onItemUpdateTimeTooltip.style.left=this.dom.content.style.left;var o,n=50,s=this.parent.itemSet.body.domProps.scrollTop;o="top"==this.options.orientation.item?this.top:this.parent.height-this.top-this.height;var r=o+this.parent.top-n<-s;r?(this.dom.onItemUpdateTimeTooltip.style.bottom="",this.dom.onItemUpdateTimeTooltip.style.top=this.height+2+"px"):(this.dom.onItemUpdateTimeTooltip.style.top="",this.dom.onItemUpdateTimeTooltip.style.bottom=this.height+2+"px");var a,h;this.options.tooltipOnItemUpdateTime&&this.options.tooltipOnItemUpdateTime.template?(h=this.options.tooltipOnItemUpdateTime.template.bind(this),a=h(this.data)):(a="start: "+u(this.data.start).format("MM/DD/YYYY hh:mm"),this.data.end&&(a+="
end: "+u(this.data.end).format("MM/DD/YYYY hh:mm"))),this.dom.onItemUpdateTimeTooltip.innerHTML=a}}},n.prototype._updateContents=function(t){var e,i,o,n,s=this.parent.itemSet.itemsData.get(this.id),r=this.dom.box||this.dom.point,a=r.getElementsByClassName("vis-item-visible-frame")[0];if(this.options.visibleFrameTemplate?(n=this.options.visibleFrameTemplate.bind(this),o=n(s,r)):o="",a)if(o instanceof Object&&!(o instanceof Element))n(s,a);else{var h=this._contentToString(this.itemVisibleFrameContent)!==this._contentToString(o);if(h){if(o instanceof Element)a.innerHTML="",a.appendChild(o);else if(void 0!=o)a.innerHTML=o;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.itemVisibleFrameContent=o}}if(this.options.template?(i=this.options.template.bind(this),e=i(s,t,this.data)):e=this.data.content,e instanceof Object&&!(e instanceof Element))i(s,t);else{var h=this._contentToString(this.content)!==this._contentToString(e);if(h){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}}},n.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=(0,h.default)(this.data)}for(var i=0;it.start&&this.data.start.getTime()-ot.start&&this.data.start.getTime()t.start&&this.data.start.getTime()-o/2t.start&&this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e,i=this.options.orientation.item;if(void 0!==this.data.subgroup){var o=this.data.subgroup,n=this.parent.subgroups;n[o].index;this.dom.box.style.height=this.parent.subgroups[o].height+"px","top"==i?this.dom.box.style.top=this.parent.top+this.parent.subgroups[o].top+"px":this.dom.box.style.top=this.parent.top+this.parent.height-this.parent.subgroups[o].top-this.parent.subgroups[o].height+"px",this.dom.box.style.bottom=""}else this.parent instanceof s?(e=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.bottom="bottom"==i?"0":"",this.dom.box.style.top="top"==i?"0":""):(e=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=e+"px"},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this.dom={foreground:null,lines:[],majorTexts:[],minorTexts:[],redundant:{lines:[],majorTexts:[],minorTexts:[]}},this.props={range:{start:0,end:0,minimumStep:0},lineTop:0},this.defaultOptions={orientation:{axis:"bottom"},showMinorLabels:!0,showMajorLabels:!0,maxMinorChars:7,format:d.FORMAT,moment:u,timeAxis:null},this.options=a.extend({},this.defaultOptions),this.body=t,this._create(),this.setOptions(e)}var s=i(62),r=o(s),a=i(1),h=i(108),d=i(113),l=i(109),u=i(82);n.prototype=new h,n.prototype.setOptions=function(t){t&&(a.selectiveExtend(["showMinorLabels","showMajorLabels","maxMinorChars","hiddenDates","timeAxis","moment","rtl"],this.options,t),a.selectiveDeepExtend(["format"],this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.axis=t.orientation:"object"===(0,r.default)(t.orientation)&&"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis)),"locale"in t&&("function"==typeof u.locale?u.locale(t.locale):u.lang(t.locale)))},n.prototype._create=function(){this.dom.foreground=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.foreground.className="vis-time-axis vis-foreground",this.dom.background.className="vis-time-axis vis-background"},n.prototype.destroy=function(){this.dom.foreground.parentNode&&this.dom.foreground.parentNode.removeChild(this.dom.foreground),this.dom.background.parentNode&&this.dom.background.parentNode.removeChild(this.dom.background),this.body=null},n.prototype.redraw=function(){var t=this.props,e=this.dom.foreground,i=this.dom.background,o="top"==this.options.orientation.axis?this.body.dom.top:this.body.dom.bottom,n=e.parentNode!==o;this._calculateCharSize();var s=this.options.showMinorLabels&&"none"!==this.options.orientation.axis,r=this.options.showMajorLabels&&"none"!==this.options.orientation.axis;t.minorLabelHeight=s?t.minorCharHeight:0,t.majorLabelHeight=r?t.majorCharHeight:0,t.height=t.minorLabelHeight+t.majorLabelHeight,t.width=e.offsetWidth,t.minorLineHeight=this.body.domProps.root.height-t.majorLabelHeight-("top"==this.options.orientation.axis?this.body.domProps.bottom.height:this.body.domProps.top.height),t.minorLineWidth=1,t.majorLineHeight=t.minorLineHeight+t.majorLabelHeight,t.majorLineWidth=1;var a=e.nextSibling,h=i.nextSibling;return e.parentNode&&e.parentNode.removeChild(e),i.parentNode&&i.parentNode.removeChild(i),e.style.height=this.props.height+"px",this._repaintLabels(),a?o.insertBefore(e,a):o.appendChild(e),h?this.body.dom.backgroundVertical.insertBefore(i,h):this.body.dom.backgroundVertical.appendChild(i),this._isResized()||n},n.prototype._repaintLabels=function(){var t=this.options.orientation.axis,e=a.convert(this.body.range.start,"Number"),i=a.convert(this.body.range.end,"Number"),o=this.body.util.toTime((this.props.minorCharWidth||10)*this.options.maxMinorChars).valueOf(),n=o-l.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this.body.range,o);n-=this.body.util.toTime(0).valueOf();var s=new d(new Date(e),new Date(i),n,this.body.hiddenDates);s.setMoment(this.options.moment),this.options.format&&s.setFormat(this.options.format),this.options.timeAxis&&s.setScale(this.options.timeAxis),this.step=s;var r=this.dom;r.redundant.lines=r.lines,r.redundant.majorTexts=r.majorTexts,r.redundant.minorTexts=r.minorTexts,r.lines=[],r.majorTexts=[],r.minorTexts=[];var h,u,c,f,m,g,v,y,b,_,w=0,x=void 0,D=0,S=1e3;for(s.start(),u=s.getCurrent(),f=this.body.util.toScreen(u);s.hasNext()&&D=.4*v;if(this.options.showMinorLabels&&k){var C=this._repaintMinorText(c,b,t,_);C.style.width=w+"px"}m&&this.options.showMajorLabels?(c>0&&(void 0==x&&(x=c),C=this._repaintMajorText(c,s.getLabelMajor(),t,_)),y=this._repaintMajorLine(c,w,t,_)):k?y=this._repaintMinorLine(c,w,t,_):y&&(y.style.width=parseInt(y.style.width)+w+"px")}if(D!==S||p||(console.warn("Something is wrong with the Timeline scale. Limited drawing of grid lines to "+S+" lines."),p=!0),this.options.showMajorLabels){var T=this.body.util.toTime(0),M=s.getLabelMajor(T),O=M.length*(this.props.majorCharWidth||10)+10;(void 0==x||O1e3&&(o=1e3),e.redraw(),e.body.emitter.emit("currentTimeTick"),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="date",a="object",h="dom",d="moment",l="any",u={configure:{enabled:{boolean:o},filter:{boolean:o,function:"function"},container:{dom:h},__type__:{object:a,boolean:o,function:"function"}},align:{string:i},rtl:{boolean:o,undefined:"undefined"},rollingMode:{boolean:o,undefined:"undefined"},verticalScroll:{boolean:o,undefined:"undefined"},horizontalScroll:{boolean:o,undefined:"undefined"},autoResize:{boolean:o},throttleRedraw:{number:n},clickToUse:{boolean:o},dataAttributes:{string:i,array:s},editable:{add:{boolean:o,undefined:"undefined"},remove:{boolean:o,undefined:"undefined"},updateGroup:{boolean:o,undefined:"undefined"},updateTime:{boolean:o,undefined:"undefined"},overrideItems:{boolean:o,undefined:"undefined"},__type__:{boolean:o,object:a}},end:{number:n,date:r,string:i,moment:d},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a,function:"function"}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a,function:"function"}},__type__:{object:a}},moment:{function:"function"},groupOrder:{string:i,function:"function"},groupEditable:{add:{boolean:o,undefined:"undefined"},remove:{boolean:o,undefined:"undefined"},order:{boolean:o,undefined:"undefined"},__type__:{boolean:o,object:a}},groupOrderSwap:{function:"function"},height:{string:i,number:n},hiddenDates:{start:{date:r,number:n,string:i,moment:d},end:{date:r,number:n,string:i,moment:d},repeat:{string:i},__type__:{object:a,array:s}},itemsAlwaysDraggable:{boolean:o},locale:{string:i},locales:{__any__:{any:l},__type__:{object:a}},margin:{axis:{number:n},item:{horizontal:{number:n,undefined:"undefined"},vertical:{number:n,undefined:"undefined"},__type__:{object:a,number:n}},__type__:{object:a,number:n}},max:{date:r,number:n,string:i,moment:d},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:r,number:n,string:i,moment:d},minHeight:{number:n,string:i},moveable:{boolean:o},multiselect:{boolean:o},multiselectPerGroup:{boolean:o},onAdd:{function:"function"},onUpdate:{function:"function"},onMove:{function:"function"},onMoving:{function:"function"},onRemove:{function:"function"},onAddGroup:{function:"function"},onMoveGroup:{function:"function"},onRemoveGroup:{function:"function"},order:{function:"function"},orientation:{axis:{string:i,undefined:"undefined"},item:{string:i,undefined:"undefined"},__type__:{string:i,object:a}},selectable:{boolean:o},showCurrentTime:{boolean:o},showMajorLabels:{boolean:o},showMinorLabels:{boolean:o},stack:{boolean:o},stackSubgroups:{boolean:o},snap:{function:"function",null:"null"},start:{date:r,number:n,string:i,moment:d},template:{function:"function"},groupTemplate:{function:"function"},visibleFrameTemplate:{string:i,function:"function"},tooltip:{followMouse:{boolean:o},overflowMethod:{string:["cap","flip"]},__type__:{object:a}},tooltipOnItemUpdateTime:{template:{function:"function"},__type__:{boolean:o,object:a}},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:a}},type:{string:i},width:{string:i,number:n},zoomable:{boolean:o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},__type__:{object:a}},p={global:{align:["center","left","right"],direction:!1,autoResize:!0,clickToUse:!1,editable:{add:!1,remove:!1,updateGroup:!1,updateTime:!1},end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},groupsDraggable:!1,height:"",locale:"",margin:{axis:[20,0,100,1],item:{horizontal:[10,0,100,1],vertical:[10,0,100,1]}},max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!1,multiselect:!1,multiselectPerGroup:!1,orientation:{axis:["both","bottom","top"],item:["bottom","top"]},selectable:!0,showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,stack:!0,stackSubgroups:!0,start:"",tooltip:{followMouse:!1,overflowMethod:"flip"},tooltipOnItemUpdateTime:!1,type:["box","point","range","background"],width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1]}};e.allOptions=u,e.configureOptions=p},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i,o){if(!(Array.isArray(i)||i instanceof u||i instanceof p)&&i instanceof Object){var n=o;o=i,i=n}o&&o.throttleRedraw&&console.warn('Graph2d option "throttleRedraw" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.');var s=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},moment:d,width:null,height:null,maxHeight:null,minHeight:null},this.options=l.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:s._toScreen.bind(s),toGlobalScreen:s._toGlobalScreen.bind(s),toTime:s._toTime.bind(s),toGlobalTime:s._toGlobalTime.bind(s)}},this.range=new c(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new m(this.body),this.components.push(this.timeAxis),this.currentTime=new g(this.body),this.components.push(this.currentTime),this.linegraph=new y(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){s.emit("click",s.getEventProperties(t))}),this.on("doubletap",function(t){s.emit("doubleClick",s.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){s.emit("contextmenu",s.getEventProperties(t))},o&&this.setOptions(o),i&&this.setGroups(i),e&&this.setItems(e),this._redraw()}var s=i(94),r=o(s),a=i(105),h=o(a),d=(i(106),i(101),i(82)),l=i(1),u=i(88),p=i(92),c=i(107),f=i(110),m=i(122),g=i(127),v=i(125),y=i(130),b=i(105).printStyle,_=i(138).allOptions,w=i(138).configureOptions;n.prototype=new f,n.prototype.setOptions=function(t){var e=h.default.validate(t,_);e===!0&&console.log("%cErrors have been found in the supplied options object.",b), +f.prototype.setOptions.call(this,t)},n.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof u||t instanceof p?t:new u(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},n.prototype.setGroups=function(t){var e;e=t?t instanceof u||t instanceof p?t:new u(t):null,this.groupsData=e,this.linegraph.setGroups(e)},n.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:'"+t+"'"},n.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]&&(this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]))},n.prototype.getDataRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var o=0;os?s:t,e=null==e?s:e0&&d.push(u.screenToValue(n)),!p.hidden&&this.itemsData.length>0&&d.push(p.screenToValue(n)),{event:t,what:h,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:s,value:d}},n.prototype._createConfigurator=function(){return new r.default(this,this.dom.container,w)},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this.id=a.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,stack:!1,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,sideBySide:!1,align:"center"},interpolation:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{},legend:{},groups:{visibility:{}}},this.options=a.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1,this.forceGraphUpdate=!0;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=a.option.asSize(-i.props.width),i.forceGraphUpdate=!0,i.redraw.call(i)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups}}var s=i(62),r=o(s),a=i(1),h=i(87),d=i(88),l=i(92),u=i(108),p=i(131),c=i(133),f=i(137),m=i(134),g=i(136),v=i(135),y="__ungrouped__";n.prototype=new u,n.prototype._create=function(){var t=document.createElement("div");t.className="vis-line-graph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new p(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new p(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new f(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new f(this.body,this.options.legend,"right",this.options.groups),this.show()},n.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","stack","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var a={};for(this._getRelevantData(r,a,n,s),this._applySampling(r,a),e=0;e0)switch(t.options.style){case"line":l.hasOwnProperty(r[e])||(l[r[e]]=g.calcPath(a[r[e]],t)),g.draw(l[r[e]],t,this.framework);case"point":case"points":"point"!=t.options.style&&"points"!=t.options.style&&1!=t.options.drawPoints.enabled||v.draw(a[r[e]],t,this.framework);break;case"bar":}}}return h.cleanupElements(this.svgElements),!1},n.prototype._stack=function(t,e){var i,o,n,s,r;i=0;for(var a=0;at[a].x){r=e[h],s=0==h?r:e[h-1],i=h;break}}void 0===r&&(s=e[e.length-1],r=e[e.length-1]),o=r.x-s.x,n=r.y-s.y,0==o?t[a].y=t[a].orginalY+r.y:t[a].y=t[a].orginalY+n/o*(t[a].x-s.x)+s.y}},n.prototype._getRelevantData=function(t,e,i,o){var n,s,r,h;if(t.length>0)for(s=0;s0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=new Array(r),l=0;l0){for(s=0;s0&&(n=this.groups[t[s]],r.stack===!0&&"bar"===r.style?"left"===r.yAxisOrientation?a=a.concat(o):h=h.concat(o):i[t[s]]=n.getYRange(o,t[s]));m.getStackedYRange(a,i,t,"__barStackLeft","left"),m.getStackedYRange(h,i,t,"__barStackRight","right")}},n.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=di?i:h,l=l=0&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-major",t.props.majorCharHeight),t.master===!0&&(n?t._redrawLine(o,i,"vis-grid vis-horizontal vis-major",t.options.majorLinesOffset,t.props.majorLineWidth):t._redrawLine(o,i,"vis-grid vis-horizontal vis-minor",t.options.minorLinesOffset,t.props.minorLineWidth))});var a=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(a=this.props.titleCharHeight);var d=this.options.icons===!0?Math.max(this.options.iconWidth,a)+this.options.labelOffsetX+15:a+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-d&&this.options.visible===!0?(this.width=this.maxLabelSize+d,this.options.width=this.width+"px",h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+d),this.options.width=this.width+"px",h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):(h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),e=!1),e},n.prototype.convertValue=function(t){return this.scale.convertValue(t)},n.prototype.screenToValue=function(t){return this.scale.screenToValue(t)},n.prototype._redrawLabel=function(t,e,i,o,n){var s=h.getDOMElement("div",this.DOMelements.labels,this.dom.frame);s.className=o,s.innerHTML=e,"left"===i?(s.style.left="-"+this.options.labelOffsetX+"px",s.style.textAlign="right"):(s.style.right="-"+this.options.labelOffsetX+"px",s.style.textAlign="left"),s.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var r=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize6&&void 0!==arguments[6]&&arguments[6],a=arguments.length>7&&void 0!==arguments[7]&&arguments[7];if(this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.customLines=null,this.containerHeight=n,this.majorCharHeight=s,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=o,this.formattingFunction=a,i||o){var h=this,d=function(t){var e=t-t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx]);return t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx])>.5*(h.magnitudefactor*h.minorSteps[h.minorStepIdx])?e+h.magnitudefactor*h.minorSteps[h.minorStepIdx]:e};i&&(this._start-=2*this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._start=d(this._start)),o&&(this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._end=d(this._end)),this.determineScale()}}i.prototype.setCharHeight=function(t){this.majorCharHeight=t},i.prototype.setHeight=function(t){this.containerHeight=t},i.prototype.determineScale=function(){var t=this._end-this._start;this.scale=this.containerHeight/t;var 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);var o=0;i<0&&(o=i);for(var n=!1,s=o;Math.abs(s)<=Math.abs(i);s++){this.magnitudefactor=Math.pow(10,s);for(var r=0;r=e){n=!0,this.minorStepIdx=r;break}}if(n===!0)break}},i.prototype.is_major=function(t){return t%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])===0},i.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]},i.prototype.getFirstMajor=function(){var t=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(t-this._start%t)%t)},i.prototype.formatValue=function(t){var e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?""+e:"string"==typeof e?e:t.toPrecision(5)},i.prototype.getLines=function(){for(var t=[],e=this.getStep(),i=(e-this._start%e)%e,o=this._start+i;this._end-o>1e-5;o+=e)o!=this._start&&t.push({major:this.is_major(o),y:this.convertValue(o),val:this.formatValue(o)});return t},i.prototype.followScale=function(t){var e=this.minorStepIdx,i=this._start,o=this._end,n=this,s=function(){n.magnitudefactor*=2},r=function(){n.magnitudefactor/=2};t.minorStepIdx<=1&&this.minorStepIdx<=1||t.minorStepIdx>1&&this.minorStepIdx>1||(t.minorStepIdxo+1e-5)r(),d=!1;else{if(!this.autoScaleStart&&this._start=0)){r(),d=!1;continue}console.warn("Can't adhere to given 'min' range, due to zeroalign")}this.autoScaleStart&&this.autoScaleEnd&&ue.x?1:-1})):this.itemsData=[]},n.prototype.getItems=function(){return this.itemsData},n.prototype.setZeroPosition=function(t){this.zeroPosition=t},n.prototype.setOptions=function(t){if(void 0!==t){var e=["sampling","style","sort","yAxisOrientation","barChart","zIndex","excludeFromStacking","excludeFromLegend"];a.selectiveDeepExtend(e,this.options,t),"function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),a.mergeOptions(this.options,t,"interpolation"),a.mergeOptions(this.options,t,"drawPoints"),a.mergeOptions(this.options,t,"shaded"),t.interpolation&&"object"==(0,r.default)(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5))}},n.prototype.update=function(t){this.group=t,this.content=t.content||"graph",this.className=t.className||this.className||"vis-graph-group"+this.groupsUsingDefaultStyles[0]%10,this.visible=void 0===t.visible||t.visible,this.style=t.style,this.setOptions(t.options)},n.prototype.getLegend=function(t,e,i,o,n){if(void 0==i||null==i){var s=document.createElementNS("http://www.w3.org/2000/svg","svg");i={svg:s,svgElements:{},options:this.options,groups:[this]}}switch(void 0!=o&&null!=o||(o=0),void 0!=n&&null!=n||(n=.5*e),this.options.style){case"line":d.drawIcon(this,o,n,t,e,i);break;case"points":case"point":l.drawIcon(this,o,n,t,e,i);break;case"bar":h.drawIcon(this,o,n,t,e,i)}return{icon:i.svg,label:this.content,orientation:this.options.yAxisOrientation}},n.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,o=0;ot[o].y?t[o].y:e,i=i0&&(i=Math.min(i,Math.abs(e[o-1].screen_x-e[o].screen_x))),0===i&&(void 0===t[e[o].screen_x]&&(t[e[o].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].screen_x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=t0){t.sort(function(t,e){return t.screen_x===e.screen_x?t.groupIde[s].screen_y?e[s].screen_y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n0){var i=[];return i=1==e.options.interpolation.enabled?o._catmullRom(t,e):o._linear(t)}},o.drawIcon=function(t,e,i,o,s,r){var a,h,d=.5*s,l=n.getSVGElement("rect",r.svgElements,r.svg);if(l.setAttributeNS(null,"x",e),l.setAttributeNS(null,"y",i-d),l.setAttributeNS(null,"width",o),l.setAttributeNS(null,"height",2*d),l.setAttributeNS(null,"class","vis-outline"),a=n.getSVGElement("path",r.svgElements,r.svg),a.setAttributeNS(null,"class",t.className),void 0!==t.style&&a.setAttributeNS(null,"style",t.style),a.setAttributeNS(null,"d","M"+e+","+i+" L"+(e+o)+","+i),1==t.options.shaded.enabled&&(h=n.getSVGElement("path",r.svgElements,r.svg),"top"==t.options.shaded.orientation?h.setAttributeNS(null,"d","M"+e+", "+(i-d)+"L"+e+","+i+" L"+(e+o)+","+i+" L"+(e+o)+","+(i-d)):h.setAttributeNS(null,"d","M"+e+","+i+" L"+e+","+(i+d)+" L"+(e+o)+","+(i+d)+"L"+(e+o)+","+i),h.setAttributeNS(null,"class",t.className+" vis-icon-fill"),void 0!==t.options.shaded.style&&""!==t.options.shaded.style&&h.setAttributeNS(null,"style",t.options.shaded.style)),1==t.options.drawPoints.enabled){var u={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size,className:t.className};n.drawPoint(e+.5*o,i,u,r.svgElements,r.svg)}},o.drawShading=function(t,e,i,o){if(1==e.options.shaded.enabled){var s=Number(o.svg.style.height.replace("px","")),r=n.getSVGElement("path",o.svgElements,o.svg),a="L";1==e.options.interpolation.enabled&&(a="C");var h,d=0;d="top"==e.options.shaded.orientation?0:"bottom"==e.options.shaded.orientation?s:Math.min(Math.max(0,e.zeroPosition),s),h="group"==e.options.shaded.orientation&&null!=i&&void 0!=i?"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" L"+i[i.length-1][0]+","+i[i.length-1][1]+" "+this.serializePath(i,a,!0)+i[0][0]+","+i[0][1]+" Z":"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" V"+d+" H"+t[0][0]+" Z",r.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&r.setAttributeNS(null,"style",e.options.shaded.style),r.setAttributeNS(null,"d",h)}},o.draw=function(t,e,i){if(null!=t&&void 0!=t){var o=n.getSVGElement("path",i.svgElements,i.svg);o.setAttributeNS(null,"class",e.className),void 0!==e.style&&o.setAttributeNS(null,"style",e.style);var s="L";1==e.options.interpolation.enabled&&(s="C"),o.setAttributeNS(null,"d","M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,s,!1))}},o.serializePath=function(t,e,i){if(t.length<2)return"";var o=e;if(i)for(var n=t.length-2;n>0;n--)o+=t[n][0]+","+t[n][1]+" ";else for(var n=1;n0&&(f=1/f),m=3*g*(g+v),m>0&&(m=1/m),a={screen_x:(-b*o.screen_x+p*n.screen_x+_*s.screen_x)*f,screen_y:(-b*o.screen_y+p*n.screen_y+_*s.screen_y)*f},h={screen_x:(y*n.screen_x+c*s.screen_x-b*r.screen_x)*m,screen_y:(y*n.screen_y+c*s.screen_y-b*r.screen_y)*m},0==a.screen_x&&0==a.screen_y&&(a=n),0==h.screen_x&&0==h.screen_y&&(h=s),x.push([a.screen_x,a.screen_y]),x.push([h.screen_x,h.screen_y]),x.push([s.screen_x,s.screen_y]);return x},o._linear=function(t){for(var e=[],i=0;i")}this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},n.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=(0,r.default)(this.groups);t.sort(function(t,e){return t diff) { + smallest_diff = diff; + } + } + + return smallest_diff; }; /** @@ -9858,15 +9897,13 @@ return /******/ (function(modules) { // webpackBootstrap if (this.defaultXBarWidth !== undefined) { this.xBarWidth = this.defaultXBarWidth; } else { - var dataX = this.getDistinctValues(data, this.colX); - this.xBarWidth = dataX[1] - dataX[0] || 1; + this.xBarWidth = this.getSmallestDifference(data, this.colX) || 1; } if (this.defaultYBarWidth !== undefined) { this.yBarWidth = this.defaultYBarWidth; } else { - var dataY = this.getDistinctValues(data, this.colY); - this.yBarWidth = dataY[1] - dataY[0] || 1; + this.yBarWidth = this.getSmallestDifference(data, this.colY) || 1; } } @@ -10093,7 +10130,6 @@ return /******/ (function(modules) { // webpackBootstrap }; // TODO: these events are never cleaned up... can give a 'memory leakage' - util.addEventListener(this.frame.canvas, 'keydown', onkeydown); util.addEventListener(this.frame.canvas, 'mousedown', onmousedown); util.addEventListener(this.frame.canvas, 'touchstart', ontouchstart); util.addEventListener(this.frame.canvas, 'mousewheel', onmousewheel); @@ -10279,7 +10315,6 @@ return /******/ (function(modules) { // webpackBootstrap break; default: throw new Error('Can not determine point drawing method ' + 'for graph style \'' + this.style + '\''); - break; } this._pointDrawingMethod = method; @@ -10652,7 +10687,7 @@ return /******/ (function(modules) { // webpackBootstrap from = new Point3d(x, yRange.min, zRange.min); to = new Point3d(x, yRange.max, zRange.min); this._line3d(ctx, from, to, this.gridColor); - } else { + } else if (this.showXAxis) { from = new Point3d(x, yRange.min, zRange.min); to = new Point3d(x, yRange.min + gridLenX, zRange.min); this._line3d(ctx, from, to, this.axisColor); @@ -10662,10 +10697,12 @@ return /******/ (function(modules) { // webpackBootstrap this._line3d(ctx, from, to, this.axisColor); } - yText = armVector.x > 0 ? yRange.min : yRange.max; - var point3d = new Point3d(x, yText, zRange.min); - var msg = ' ' + this.xValueLabel(x) + ' '; - this.drawAxisLabelX(ctx, point3d, msg, armAngle, textMargin); + if (this.showXAxis) { + yText = armVector.x > 0 ? yRange.min : yRange.max; + var point3d = new Point3d(x, yText, zRange.min); + var msg = ' ' + this.xValueLabel(x) + ' '; + this.drawAxisLabelX(ctx, point3d, msg, armAngle, textMargin); + } step.next(); } @@ -10683,7 +10720,7 @@ return /******/ (function(modules) { // webpackBootstrap from = new Point3d(xRange.min, y, zRange.min); to = new Point3d(xRange.max, y, zRange.min); this._line3d(ctx, from, to, this.gridColor); - } else { + } else if (this.showYAxis) { from = new Point3d(xRange.min, y, zRange.min); to = new Point3d(xRange.min + gridLenY, y, zRange.min); this._line3d(ctx, from, to, this.axisColor); @@ -10693,71 +10730,79 @@ return /******/ (function(modules) { // webpackBootstrap this._line3d(ctx, from, to, this.axisColor); } - xText = armVector.y > 0 ? xRange.min : xRange.max; - point3d = new Point3d(xText, y, zRange.min); - var msg = ' ' + this.yValueLabel(y) + ' '; - this.drawAxisLabelY(ctx, point3d, msg, armAngle, textMargin); + if (this.showYAxis) { + xText = armVector.y > 0 ? xRange.min : xRange.max; + point3d = new Point3d(xText, y, zRange.min); + var msg = ' ' + this.yValueLabel(y) + ' '; + this.drawAxisLabelY(ctx, point3d, msg, armAngle, textMargin); + } step.next(); } // draw z-grid lines and axis - ctx.lineWidth = 1; - prettyStep = this.defaultZStep === undefined; - step = new StepNumber(zRange.min, zRange.max, this.zStep, prettyStep); - step.start(true); + if (this.showZAxis) { + ctx.lineWidth = 1; + prettyStep = this.defaultZStep === undefined; + step = new StepNumber(zRange.min, zRange.max, this.zStep, prettyStep); + step.start(true); - xText = armVector.x > 0 ? xRange.min : xRange.max; - yText = armVector.y < 0 ? yRange.min : yRange.max; + xText = armVector.x > 0 ? xRange.min : xRange.max; + yText = armVector.y < 0 ? yRange.min : yRange.max; - while (!step.end()) { - var z = step.getCurrent(); + while (!step.end()) { + var z = step.getCurrent(); - // TODO: make z-grid lines really 3d? - var from3d = new Point3d(xText, yText, z); - var from2d = this._convert3Dto2D(from3d); - to = new Point2d(from2d.x - textMargin, from2d.y); - this._line(ctx, from2d, to, this.axisColor); + // TODO: make z-grid lines really 3d? + var from3d = new Point3d(xText, yText, z); + var from2d = this._convert3Dto2D(from3d); + to = new Point2d(from2d.x - textMargin, from2d.y); + this._line(ctx, from2d, to, this.axisColor); - var msg = this.zValueLabel(z) + ' '; - this.drawAxisLabelZ(ctx, from3d, msg, 5); + var msg = this.zValueLabel(z) + ' '; + this.drawAxisLabelZ(ctx, from3d, msg, 5); - step.next(); - } + step.next(); + } - ctx.lineWidth = 1; - from = new Point3d(xText, yText, zRange.min); - to = new Point3d(xText, yText, zRange.max); - this._line3d(ctx, from, to, this.axisColor); + ctx.lineWidth = 1; + from = new Point3d(xText, yText, zRange.min); + to = new Point3d(xText, yText, zRange.max); + this._line3d(ctx, from, to, this.axisColor); + } // draw x-axis - var xMin2d; - var xMax2d; - ctx.lineWidth = 1; + if (this.showXAxis) { + var xMin2d; + var xMax2d; + ctx.lineWidth = 1; - // line at yMin - xMin2d = new Point3d(xRange.min, yRange.min, zRange.min); - xMax2d = new Point3d(xRange.max, yRange.min, zRange.min); - this._line3d(ctx, xMin2d, xMax2d, this.axisColor); - // line at ymax - xMin2d = new Point3d(xRange.min, yRange.max, zRange.min); - xMax2d = new Point3d(xRange.max, yRange.max, zRange.min); - this._line3d(ctx, xMin2d, xMax2d, this.axisColor); + // line at yMin + xMin2d = new Point3d(xRange.min, yRange.min, zRange.min); + xMax2d = new Point3d(xRange.max, yRange.min, zRange.min); + this._line3d(ctx, xMin2d, xMax2d, this.axisColor); + // line at ymax + xMin2d = new Point3d(xRange.min, yRange.max, zRange.min); + xMax2d = new Point3d(xRange.max, yRange.max, zRange.min); + this._line3d(ctx, xMin2d, xMax2d, this.axisColor); + } // draw y-axis - ctx.lineWidth = 1; - // line at xMin - from = new Point3d(xRange.min, yRange.min, zRange.min); - to = new Point3d(xRange.min, yRange.max, zRange.min); - this._line3d(ctx, from, to, this.axisColor); - // line at xMax - from = new Point3d(xRange.max, yRange.min, zRange.min); - to = new Point3d(xRange.max, yRange.max, zRange.min); - this._line3d(ctx, from, to, this.axisColor); + if (this.showYAxis) { + ctx.lineWidth = 1; + // line at xMin + from = new Point3d(xRange.min, yRange.min, zRange.min); + to = new Point3d(xRange.min, yRange.max, zRange.min); + this._line3d(ctx, from, to, this.axisColor); + // line at xMax + from = new Point3d(xRange.max, yRange.min, zRange.min); + to = new Point3d(xRange.max, yRange.max, zRange.min); + this._line3d(ctx, from, to, this.axisColor); + } // draw x-label var xLabel = this.xLabel; - if (xLabel.length > 0) { + if (xLabel.length > 0 && this.showXAxis) { yOffset = 0.1 / this.scale.y; xText = (xRange.max + 3 * xRange.min) / 4; yText = armVector.x > 0 ? yRange.min - yOffset : yRange.max + yOffset; @@ -10767,7 +10812,7 @@ return /******/ (function(modules) { // webpackBootstrap // draw y-label var yLabel = this.yLabel; - if (yLabel.length > 0) { + if (yLabel.length > 0 && this.showYAxis) { xOffset = 0.1 / this.scale.x; xText = armVector.y > 0 ? xRange.min - xOffset : xRange.max + xOffset; yText = (yRange.max + 3 * yRange.min) / 4; @@ -10778,7 +10823,7 @@ return /******/ (function(modules) { // webpackBootstrap // draw z-label var zLabel = this.zLabel; - if (zLabel.length > 0) { + if (zLabel.length > 0 && this.showZAxis) { offset = 30; // pixels. // TODO: relate to the max width of the values on the z axis? xText = armVector.x > 0 ? xRange.min : xRange.max; yText = armVector.y < 0 ? yRange.min : yRange.max; @@ -11601,26 +11646,16 @@ return /******/ (function(modules) { // webpackBootstrap if (!this.tooltip) { content = document.createElement('div'); + (0, _assign2['default'])(content.style, {}, this.tooltipStyle.content); content.style.position = 'absolute'; - content.style.padding = '10px'; - content.style.border = '1px solid #4d4d4d'; - content.style.color = '#1a1a1a'; - content.style.background = 'rgba(255,255,255,0.7)'; - content.style.borderRadius = '2px'; - content.style.boxShadow = '5px 5px 10px rgba(128,128,128,0.5)'; line = document.createElement('div'); + (0, _assign2['default'])(line.style, {}, this.tooltipStyle.line); line.style.position = 'absolute'; - line.style.height = '40px'; - line.style.width = '0'; - line.style.borderLeft = '1px solid #4d4d4d'; dot = document.createElement('div'); + (0, _assign2['default'])(dot.style, {}, this.tooltipStyle.dot); dot.style.position = 'absolute'; - dot.style.height = '0'; - dot.style.width = '0'; - dot.style.border = '5px solid #4d4d4d'; - dot.style.borderRadius = '5px'; this.tooltip = { dataPoint: null, @@ -11756,6 +11791,66 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 95 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { "default": __webpack_require__(96), __esModule: true }; + +/***/ }, +/* 96 */ +/***/ function(module, exports, __webpack_require__) { + + __webpack_require__(97); + module.exports = __webpack_require__(17).Object.assign; + +/***/ }, +/* 97 */ +/***/ function(module, exports, __webpack_require__) { + + // 19.1.3.1 Object.assign(target, source) + var $export = __webpack_require__(15); + + $export($export.S + $export.F, 'Object', {assign: __webpack_require__(98)}); + +/***/ }, +/* 98 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + // 19.1.2.1 Object.assign(target, source, ...) + var getKeys = __webpack_require__(35) + , gOPS = __webpack_require__(73) + , pIE = __webpack_require__(74) + , toObject = __webpack_require__(49) + , IObject = __webpack_require__(10) + , $assign = Object.assign; + + // should work with symbols and should have deterministic property order (V8 bug) + module.exports = !$assign || __webpack_require__(26)(function(){ + var A = {} + , B = {} + , S = Symbol() + , K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function(k){ B[k] = k; }); + return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; + }) ? function assign(target, source){ // eslint-disable-line no-unused-vars + var T = toObject(target) + , aLen = arguments.length + , index = 1 + , getSymbols = gOPS.f + , isEnum = pIE.f; + while(aLen > index){ + var S = IObject(arguments[index++]) + , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) + , length = keys.length + , j = 0 + , key; + while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; + } return T; + } : $assign; + +/***/ }, +/* 99 */ /***/ function(module, exports) { @@ -11925,7 +12020,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 96 */ +/* 100 */ /***/ function(module, exports) { "use strict"; @@ -12008,7 +12103,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Point3d; /***/ }, -/* 97 */ +/* 101 */ /***/ function(module, exports) { "use strict"; @@ -12026,18 +12121,18 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Point2d; /***/ }, -/* 98 */ +/* 102 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var _sign = __webpack_require__(99); + var _sign = __webpack_require__(103); var _sign2 = _interopRequireDefault(_sign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var Point3d = __webpack_require__(96); + var Point3d = __webpack_require__(100); /** * @class Camera @@ -12218,29 +12313,29 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Camera; /***/ }, -/* 99 */ +/* 103 */ /***/ function(module, exports, __webpack_require__) { - module.exports = { "default": __webpack_require__(100), __esModule: true }; + module.exports = { "default": __webpack_require__(104), __esModule: true }; /***/ }, -/* 100 */ +/* 104 */ /***/ function(module, exports, __webpack_require__) { - __webpack_require__(101); + __webpack_require__(105); module.exports = __webpack_require__(17).Math.sign; /***/ }, -/* 101 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { // 20.2.2.28 Math.sign(x) var $export = __webpack_require__(15); - $export($export.S, 'Math', {sign: __webpack_require__(102)}); + $export($export.S, 'Math', {sign: __webpack_require__(106)}); /***/ }, -/* 102 */ +/* 106 */ /***/ function(module, exports) { // 20.2.2.28 Math.sign(x) @@ -12249,7 +12344,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 103 */ +/* 107 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12460,7 +12555,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Filter; /***/ }, -/* 104 */ +/* 108 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12808,7 +12903,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Slider; /***/ }, -/* 105 */ +/* 109 */ /***/ function(module, exports) { 'use strict'; @@ -12986,7 +13081,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = StepNumber; /***/ }, -/* 106 */ +/* 110 */ /***/ function(module, exports) { 'use strict'; @@ -13084,7 +13179,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Range; /***/ }, -/* 107 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13099,8 +13194,9 @@ return /******/ (function(modules) { // webpackBootstrap // This modules handles the options for Graph3d. // //////////////////////////////////////////////////////////////////////////////// - var Camera = __webpack_require__(98); - var Point3d = __webpack_require__(96); + var util = __webpack_require__(1); + var Camera = __webpack_require__(102); + var Point3d = __webpack_require__(100); // enumerate the available styles var STYLE = { @@ -13136,7 +13232,7 @@ return /******/ (function(modules) { // webpackBootstrap * Specifically, these are the fields which require no special handling, * and can be directly copied over. */ - var OPTIONKEYS = ['width', 'height', 'filterLabel', 'legendLabel', 'xLabel', 'yLabel', 'zLabel', 'xValueLabel', 'yValueLabel', 'zValueLabel', 'showGrid', 'showPerspective', 'showShadow', 'keepAspectRatio', 'verticalRatio', 'dotSizeRatio', 'showAnimationControls', 'animationInterval', 'animationPreload', 'animationAutoStart', 'axisColor', 'gridColor', 'xCenter', 'yCenter']; + var OPTIONKEYS = ['width', 'height', 'filterLabel', 'legendLabel', 'xLabel', 'yLabel', 'zLabel', 'xValueLabel', 'yValueLabel', 'zValueLabel', 'showXAxis', 'showYAxis', 'showZAxis', 'showGrid', 'showPerspective', 'showShadow', 'keepAspectRatio', 'verticalRatio', 'dotSizeRatio', 'showAnimationControls', 'animationInterval', 'animationPreload', 'animationAutoStart', 'axisColor', 'gridColor', 'xCenter', 'yCenter']; /** * Field names in the options hash which are of relevance to the user. @@ -13313,6 +13409,10 @@ return /******/ (function(modules) { // webpackBootstrap if (src.onclick != undefined) { dst.onclick_callback = src.onclick; } + + if (src.tooltipStyle !== undefined) { + util.selectiveDeepExtend(['tooltipStyle'], dst, src); + } } /** @@ -13470,7 +13570,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports.setCameraPosition = setCameraPosition; /***/ }, -/* 108 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13478,8 +13578,8 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - var propagating = __webpack_require__(109); - var Hammer = window['Hammer'] || __webpack_require__(110); + var propagating = __webpack_require__(113); + var Hammer = window['Hammer'] || __webpack_require__(114); module.exports = propagating(Hammer, { preventDefault: 'mouse' }); @@ -13490,7 +13590,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }, -/* 109 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict'; @@ -13727,7 +13827,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 110 */ +/* 114 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v2.0.7 - 2016-04-22 @@ -16376,7 +16476,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 111 */ +/* 115 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; @@ -16575,91 +16675,91 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 112 */ +/* 116 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; // utils exports.util = __webpack_require__(1); - exports.DOMutil = __webpack_require__(90); + exports.DOMutil = __webpack_require__(88); // data - exports.DataSet = __webpack_require__(91); + exports.DataSet = __webpack_require__(89); exports.DataView = __webpack_require__(93); exports.Queue = __webpack_require__(92); // Timeline - exports.Timeline = __webpack_require__(113); - exports.Graph2d = __webpack_require__(144); + exports.Timeline = __webpack_require__(117); + exports.Graph2d = __webpack_require__(148); exports.timeline = { - Core: __webpack_require__(126), - DateUtil: __webpack_require__(125), - Range: __webpack_require__(123), - stack: __webpack_require__(131), - TimeStep: __webpack_require__(129), + Core: __webpack_require__(130), + DateUtil: __webpack_require__(129), + Range: __webpack_require__(127), + stack: __webpack_require__(135), + TimeStep: __webpack_require__(133), components: { items: { - Item: __webpack_require__(133), - BackgroundItem: __webpack_require__(137), - BoxItem: __webpack_require__(135), - PointItem: __webpack_require__(136), - RangeItem: __webpack_require__(132) + Item: __webpack_require__(137), + BackgroundItem: __webpack_require__(141), + BoxItem: __webpack_require__(139), + PointItem: __webpack_require__(140), + RangeItem: __webpack_require__(136) }, - BackgroundGroup: __webpack_require__(134), - Component: __webpack_require__(124), - CurrentTime: __webpack_require__(142), - CustomTime: __webpack_require__(140), - DataAxis: __webpack_require__(146), - DataScale: __webpack_require__(147), - GraphGroup: __webpack_require__(148), - Group: __webpack_require__(130), - ItemSet: __webpack_require__(127), - Legend: __webpack_require__(152), - LineGraph: __webpack_require__(145), - TimeAxis: __webpack_require__(138) + BackgroundGroup: __webpack_require__(138), + Component: __webpack_require__(128), + CurrentTime: __webpack_require__(146), + CustomTime: __webpack_require__(144), + DataAxis: __webpack_require__(150), + DataScale: __webpack_require__(151), + GraphGroup: __webpack_require__(152), + Group: __webpack_require__(134), + ItemSet: __webpack_require__(131), + Legend: __webpack_require__(156), + LineGraph: __webpack_require__(149), + TimeAxis: __webpack_require__(142) } }; // bundled external libraries - exports.moment = __webpack_require__(84); - exports.Hammer = __webpack_require__(108); - exports.keycharm = __webpack_require__(111); + exports.moment = __webpack_require__(82); + exports.Hammer = __webpack_require__(112); + exports.keycharm = __webpack_require__(115); /***/ }, -/* 113 */ +/* 117 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var _Configurator = __webpack_require__(114); + var _Configurator = __webpack_require__(118); var _Configurator2 = _interopRequireDefault(_Configurator); - var _Validator = __webpack_require__(122); + var _Validator = __webpack_require__(126); var _Validator2 = _interopRequireDefault(_Validator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var Emitter = __webpack_require__(95); - var Hammer = __webpack_require__(108); - var moment = __webpack_require__(84); + var Emitter = __webpack_require__(99); + var Hammer = __webpack_require__(112); + var moment = __webpack_require__(82); var util = __webpack_require__(1); - var DataSet = __webpack_require__(91); + var DataSet = __webpack_require__(89); var DataView = __webpack_require__(93); - var Range = __webpack_require__(123); - var Core = __webpack_require__(126); - var TimeAxis = __webpack_require__(138); - var CurrentTime = __webpack_require__(142); - var CustomTime = __webpack_require__(140); - var ItemSet = __webpack_require__(127); + var Range = __webpack_require__(127); + var Core = __webpack_require__(130); + var TimeAxis = __webpack_require__(142); + var CurrentTime = __webpack_require__(146); + var CustomTime = __webpack_require__(144); + var ItemSet = __webpack_require__(131); - var printStyle = __webpack_require__(122).printStyle; - var allOptions = __webpack_require__(143).allOptions; - var configureOptions = __webpack_require__(143).configureOptions; + var printStyle = __webpack_require__(126).printStyle; + var allOptions = __webpack_require__(147).allOptions; + var configureOptions = __webpack_require__(147).configureOptions; /** * Create a timeline visualization @@ -17055,8 +17155,6 @@ return /******/ (function(modules) { // webpackBootstrap * @return {{min: Date | null, max: Date | null}} */ Timeline.prototype.getItemRange = function () { - var _this = this; - // get a rough approximation for the range based on the items start and end dates var range = this.getDataRange(); var min = range.min !== null ? range.min.valueOf() : null; @@ -17065,74 +17163,66 @@ return /******/ (function(modules) { // webpackBootstrap var maxItem = null; if (min != null && max != null) { - var interval; - var factor; - var lhs; - var rhs; - var delta; - - (function () { - var getStart = function getStart(item) { - return util.convert(item.data.start, 'Date').valueOf(); - }; + var getStart = function getStart(item) { + return util.convert(item.data.start, 'Date').valueOf(); + }; - var getEnd = function getEnd(item) { - var end = item.data.end != undefined ? item.data.end : item.data.start; - return util.convert(end, 'Date').valueOf(); - }; + var getEnd = function getEnd(item) { + var end = item.data.end != undefined ? item.data.end : item.data.start; + return util.convert(end, 'Date').valueOf(); + }; - // calculate the date of the left side and right side of the items given + // calculate the date of the left side and right side of the items given - interval = max - min; // ms + var interval = max - min; // ms + if (interval <= 0) { + interval = 10; + } + var factor = interval / this.props.center.width; - if (interval <= 0) { - interval = 10; + util.forEach(this.itemSet.items, function (item) { + if (item.groupShowing) { + item.show(); + item.repositionX(); } - factor = interval / _this.props.center.width; - util.forEach(_this.itemSet.items, function (item) { - if (item.groupShowing) { - item.show(); - item.repositionX(); - } - var start = getStart(item); - var end = getEnd(item); + var start = getStart(item); + var end = getEnd(item); - if (this.options.rtl) { - var startSide = start - (item.getWidthRight() + 10) * factor; - var endSide = end + (item.getWidthLeft() + 10) * factor; - } else { - var startSide = start - (item.getWidthLeft() + 10) * factor; - var endSide = end + (item.getWidthRight() + 10) * factor; - } + if (this.options.rtl) { + var startSide = start - (item.getWidthRight() + 10) * factor; + var endSide = end + (item.getWidthLeft() + 10) * factor; + } else { + var startSide = start - (item.getWidthLeft() + 10) * factor; + var endSide = end + (item.getWidthRight() + 10) * factor; + } - if (startSide < min) { - min = startSide; - minItem = item; - } - if (endSide > max) { - max = endSide; - maxItem = item; - } - }.bind(_this)); + if (startSide < min) { + min = startSide; + minItem = item; + } + if (endSide > max) { + max = endSide; + maxItem = item; + } + }.bind(this)); - if (minItem && maxItem) { - lhs = minItem.getWidthLeft() + 10; - rhs = maxItem.getWidthRight() + 10; - delta = _this.props.center.width - lhs - rhs; // px + if (minItem && maxItem) { + var lhs = minItem.getWidthLeft() + 10; + var rhs = maxItem.getWidthRight() + 10; + var delta = this.props.center.width - lhs - rhs; // px - if (delta > 0) { - if (_this.options.rtl) { - min = getStart(minItem) - rhs * interval / delta; // ms - max = getEnd(maxItem) + lhs * interval / delta; // ms - } else { - min = getStart(minItem) - lhs * interval / delta; // ms - max = getEnd(maxItem) + rhs * interval / delta; // ms - } + if (delta > 0) { + if (this.options.rtl) { + min = getStart(minItem) - rhs * interval / delta; // ms + max = getEnd(maxItem) + lhs * interval / delta; // ms + } else { + min = getStart(minItem) - lhs * interval / delta; // ms + max = getEnd(maxItem) + rhs * interval / delta; // ms } } - })(); + } } return { @@ -17227,10 +17317,25 @@ return /******/ (function(modules) { // webpackBootstrap }; }; + /** + * Toggle Timeline rolling mode + */ + + Timeline.prototype.toggleRollingMode = function () { + if (this.range.rolling) { + this.range.stopRolling(); + } else { + if (this.options.rollingMode == undefined) { + this.setOptions(this.options); + } + this.range.startRolling(); + } + }; + module.exports = Timeline; /***/ }, -/* 114 */ +/* 118 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -17239,7 +17344,7 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _stringify = __webpack_require__(82); + var _stringify = __webpack_require__(90); var _stringify2 = _interopRequireDefault(_stringify); @@ -17247,15 +17352,15 @@ return /******/ (function(modules) { // webpackBootstrap var _typeof3 = _interopRequireDefault(_typeof2); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _ColorPicker = __webpack_require__(120); + var _ColorPicker = __webpack_require__(124); var _ColorPicker2 = _interopRequireDefault(_ColorPicker); @@ -17415,26 +17520,24 @@ return /******/ (function(modules) { // webpackBootstrap } if (this.options.showButton === true) { - (function () { - var generateButton = document.createElement('div'); + var generateButton = document.createElement('div'); + generateButton.className = 'vis-configuration vis-config-button'; + generateButton.innerHTML = 'generate options'; + generateButton.onclick = function () { + _this._printOptions(); + }; + generateButton.onmouseover = function () { + generateButton.className = 'vis-configuration vis-config-button hover'; + }; + generateButton.onmouseout = function () { generateButton.className = 'vis-configuration vis-config-button'; - generateButton.innerHTML = 'generate options'; - generateButton.onclick = function () { - _this._printOptions(); - }; - generateButton.onmouseover = function () { - generateButton.className = 'vis-configuration vis-config-button hover'; - }; - generateButton.onmouseout = function () { - generateButton.className = 'vis-configuration vis-config-button'; - }; + }; - _this.optionsContainer = document.createElement('div'); - _this.optionsContainer.className = 'vis-configuration vis-config-option-container'; + this.optionsContainer = document.createElement('div'); + this.optionsContainer.className = 'vis-configuration vis-config-option-container'; - _this.domElements.push(_this.optionsContainer); - _this.domElements.push(generateButton); - })(); + this.domElements.push(this.optionsContainer); + this.domElements.push(generateButton); } this._push(); @@ -17512,30 +17615,19 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_makeItem', value: function _makeItem(path) { - var _arguments = arguments, - _this2 = this; - if (this.allowCreation === true) { - var _len, domElements, _key; - - var _ret2 = function () { - var item = document.createElement('div'); - item.className = 'vis-configuration vis-config-item vis-config-s' + path.length; + var item = document.createElement('div'); + item.className = 'vis-configuration vis-config-item vis-config-s' + path.length; - for (_len = _arguments.length, domElements = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - domElements[_key - 1] = _arguments[_key]; - } - - domElements.forEach(function (element) { - item.appendChild(element); - }); - _this2.domElements.push(item); - return { - v: _this2.domElements.length - }; - }(); + for (var _len = arguments.length, domElements = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + domElements[_key - 1] = arguments[_key]; + } - if ((typeof _ret2 === 'undefined' ? 'undefined' : (0, _typeof3['default'])(_ret2)) === "object") return _ret2.v; + domElements.forEach(function (element) { + item.appendChild(element); + }); + this.domElements.push(item); + return this.domElements.length; } return 0; } @@ -17699,7 +17791,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_setupPopup', value: function _setupPopup(string, index) { - var _this3 = this; + var _this2 = this; if (this.initialized === true && this.allowCreation === true && this.popupCounter < this.popupLimit) { var div = document.createElement("div"); @@ -17707,7 +17799,7 @@ return /******/ (function(modules) { // webpackBootstrap div.className = "vis-configuration-popup"; div.innerHTML = string; div.onclick = function () { - _this3._removePopup(); + _this2._removePopup(); }; this.popupCounter += 1; this.popupDiv = { html: div, index: index }; @@ -17738,7 +17830,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_showPopupIfNeeded', value: function _showPopupIfNeeded() { - var _this4 = this; + var _this3 = this; if (this.popupDiv.html !== undefined) { var correspondingElement = this.domElements[this.popupDiv.index]; @@ -17747,10 +17839,10 @@ return /******/ (function(modules) { // webpackBootstrap this.popupDiv.html.style.top = rect.top - 30 + "px"; // 30 is the height; document.body.appendChild(this.popupDiv.html); this.popupDiv.hideTimeout = setTimeout(function () { - _this4.popupDiv.html.style.opacity = 0; + _this3.popupDiv.html.style.opacity = 0; }, 1500); this.popupDiv.deleteTimeout = setTimeout(function () { - _this4._removePopup(); + _this3._removePopup(); }, 1800); } } @@ -17831,7 +17923,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_makeColorField', value: function _makeColorField(arr, value, path) { - var _this5 = this; + var _this4 = this; var defaultColor = arr[1]; var div = document.createElement('div'); @@ -17846,7 +17938,7 @@ return /******/ (function(modules) { // webpackBootstrap value = value === undefined ? defaultColor : value; div.onclick = function () { - _this5._showColorPicker(value, div, path); + _this4._showColorPicker(value, div, path); }; var label = this._makeLabel(path[path.length - 1], path); @@ -17865,7 +17957,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_showColorPicker', value: function _showColorPicker(value, div, path) { - var _this6 = this; + var _this5 = this; // clear the callback from this div div.onclick = function () {}; @@ -17877,13 +17969,13 @@ return /******/ (function(modules) { // webpackBootstrap this.colorPicker.setUpdateCallback(function (color) { var colorString = 'rgba(' + color.r + ',' + color.g + ',' + color.b + ',' + color.a + ')'; div.style.backgroundColor = colorString; - _this6._update(colorString, path); + _this5._update(colorString, path); }); // on close of the colorpicker, restore the callback. this.colorPicker.setCloseCallback(function () { div.onclick = function () { - _this6._showColorPicker(value, div, path); + _this5._showColorPicker(value, div, path); }; }); } @@ -18063,7 +18155,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Configurator; /***/ }, -/* 115 */ +/* 119 */ /***/ function(module, exports) { "use strict"; @@ -18077,14 +18169,14 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 116 */ +/* 120 */ /***/ function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; - var _defineProperty = __webpack_require__(117); + var _defineProperty = __webpack_require__(121); var _defineProperty2 = _interopRequireDefault(_defineProperty); @@ -18109,23 +18201,23 @@ return /******/ (function(modules) { // webpackBootstrap }(); /***/ }, -/* 117 */ +/* 121 */ /***/ function(module, exports, __webpack_require__) { - module.exports = { "default": __webpack_require__(118), __esModule: true }; + module.exports = { "default": __webpack_require__(122), __esModule: true }; /***/ }, -/* 118 */ +/* 122 */ /***/ function(module, exports, __webpack_require__) { - __webpack_require__(119); + __webpack_require__(123); var $Object = __webpack_require__(17).Object; module.exports = function defineProperty(it, key, desc){ return $Object.defineProperty(it, key, desc); }; /***/ }, -/* 119 */ +/* 123 */ /***/ function(module, exports, __webpack_require__) { var $export = __webpack_require__(15); @@ -18133,7 +18225,7 @@ return /******/ (function(modules) { // webpackBootstrap $export($export.S + $export.F * !__webpack_require__(25), 'Object', {defineProperty: __webpack_require__(21).f}); /***/ }, -/* 120 */ +/* 124 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -18142,22 +18234,22 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _stringify = __webpack_require__(82); + var _stringify = __webpack_require__(90); var _stringify2 = _interopRequireDefault(_stringify); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var Hammer = __webpack_require__(108); - var hammerUtil = __webpack_require__(121); + var Hammer = __webpack_require__(112); + var hammerUtil = __webpack_require__(125); var util = __webpack_require__(1); var ColorPicker = function () { @@ -18770,12 +18862,12 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = ColorPicker; /***/ }, -/* 121 */ +/* 125 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Hammer = __webpack_require__(108); + var Hammer = __webpack_require__(112); /** * Register a touch event, taking place before a gesture @@ -18844,7 +18936,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 122 */ +/* 126 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -18854,7 +18946,7 @@ return /******/ (function(modules) { // webpackBootstrap }); exports.printStyle = undefined; - var _stringify = __webpack_require__(82); + var _stringify = __webpack_require__(90); var _stringify2 = _interopRequireDefault(_stringify); @@ -18866,11 +18958,11 @@ return /******/ (function(modules) { // webpackBootstrap var _keys2 = _interopRequireDefault(_keys); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -19184,7 +19276,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.printStyle = printStyle; /***/ }, -/* 123 */ +/* 127 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -19193,7 +19285,7 @@ return /******/ (function(modules) { // webpackBootstrap var _keys2 = _interopRequireDefault(_keys); - var _stringify = __webpack_require__(82); + var _stringify = __webpack_require__(90); var _stringify2 = _interopRequireDefault(_stringify); @@ -19204,10 +19296,10 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(121); - var moment = __webpack_require__(84); - var Component = __webpack_require__(124); - var DateUtil = __webpack_require__(125); + var hammerUtil = __webpack_require__(125); + var moment = __webpack_require__(82); + var Component = __webpack_require__(128); + var DateUtil = __webpack_require__(129); /** * @constructor Range @@ -19417,7 +19509,7 @@ return /******/ (function(modules) { // webpackBootstrap start: new Date(me.start), end: new Date(me.end), byUser: byUser, - event: util.elementsCensor(event) + event: event }; if (changed) { @@ -19445,7 +19537,7 @@ return /******/ (function(modules) { // webpackBootstrap start: new Date(this.start), end: new Date(this.end), byUser: byUser, - event: util.elementsCensor(event) + event: event }; this.body.emitter.emit('rangechange', params); this.body.emitter.emit('rangechanged', params); @@ -19724,7 +19816,7 @@ return /******/ (function(modules) { // webpackBootstrap start: startDate, end: endDate, byUser: true, - event: util.elementsCensor(event) + event: event }); // fire a panmove event @@ -19757,7 +19849,7 @@ return /******/ (function(modules) { // webpackBootstrap start: new Date(this.start), end: new Date(this.end), byUser: true, - event: util.elementsCensor(event) + event: event }); }; @@ -20032,13 +20124,13 @@ return /******/ (function(modules) { // webpackBootstrap var newStart = this.start - diff; var newEnd = this.end - diff; - this.setRange(newStart, newEnd, false, true, event); + this.setRange(newStart, newEnd, false, true, null); }; module.exports = Range; /***/ }, -/* 124 */ +/* 128 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -20100,7 +20192,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Component; /***/ }, -/* 125 */ +/* 129 */ /***/ function(module, exports) { "use strict"; @@ -20597,19 +20689,18 @@ return /******/ (function(modules) { // webpackBootstrap if (time >= startDate && time < endDate) { // if the start is entering a hidden zone return { hidden: true, startDate: startDate, endDate: endDate }; - break; } } return { hidden: false, startDate: startDate, endDate: endDate }; }; /***/ }, -/* 126 */ +/* 130 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var _stringify = __webpack_require__(82); + var _stringify = __webpack_require__(90); var _stringify2 = _interopRequireDefault(_stringify); @@ -20619,18 +20710,18 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var Emitter = __webpack_require__(95); - var Hammer = __webpack_require__(108); - var hammerUtil = __webpack_require__(121); + var Emitter = __webpack_require__(99); + var Hammer = __webpack_require__(112); + var hammerUtil = __webpack_require__(125); var util = __webpack_require__(1); - var DataSet = __webpack_require__(91); + var DataSet = __webpack_require__(89); var DataView = __webpack_require__(93); - var Range = __webpack_require__(123); - var ItemSet = __webpack_require__(127); - var TimeAxis = __webpack_require__(138); - var Activator = __webpack_require__(139); - var DateUtil = __webpack_require__(125); - var CustomTime = __webpack_require__(140); + var Range = __webpack_require__(127); + var ItemSet = __webpack_require__(131); + var TimeAxis = __webpack_require__(142); + var Activator = __webpack_require__(143); + var DateUtil = __webpack_require__(129); + var CustomTime = __webpack_require__(144); /** * Create a timeline visualization @@ -20865,6 +20956,13 @@ return /******/ (function(modules) { // webpackBootstrap } function handleDrop(event) { + // prevent redirect to blank page - Firefox + if (event.preventDefault) { + event.preventDefault(); + } + if (event.stopPropagation) { + event.stopPropagation(); + } // return when dropping non-vis items try { var itemData = JSON.parse(event.dataTransfer.getData("text")); @@ -21320,8 +21418,15 @@ return /******/ (function(modules) { // webpackBootstrap /** * Zoom in the window such that given time is centered on screen. * @param {Number} percentage - must be between [0..1] + * @param {Object} [options] Available options: + * `animation: boolean | {duration: number, easingFunction: string}` + * If true (default), the range is animated + * smoothly to the new window. An object can be + * provided to specify duration and easing function. + * Default duration is 500 ms, and default easing + * function is 'easeInOutQuad'. */ - Core.prototype.zoomIn = function (percentage) { + Core.prototype.zoomIn = function (percentage, options) { if (!percentage || percentage < 0 || percentage > 1) return; var range = this.getWindow(); var start = range.start.valueOf(); @@ -21332,17 +21437,21 @@ return /******/ (function(modules) { // webpackBootstrap var newStart = start + distance; var newEnd = end - distance; - this.setWindow({ - start: newStart, - end: newEnd - }); + this.setWindow(newStart, newEnd, options); }; /** * Zoom out the window such that given time is centered on screen. * @param {Number} percentage - must be between [0..1] + * @param {Object} [options] Available options: + * `animation: boolean | {duration: number, easingFunction: string}` + * If true (default), the range is animated + * smoothly to the new window. An object can be + * provided to specify duration and easing function. + * Default duration is 500 ms, and default easing + * function is 'easeInOutQuad'. */ - Core.prototype.zoomOut = function (percentage) { + Core.prototype.zoomOut = function (percentage, options) { if (!percentage || percentage < 0 || percentage > 1) return; var range = this.getWindow(); var start = range.start.valueOf(); @@ -21351,10 +21460,7 @@ return /******/ (function(modules) { // webpackBootstrap var newStart = start - interval * percentage / 2; var newEnd = end + interval * percentage / 2; - this.setWindow({ - start: newStart, - end: newEnd - }); + this.setWindow(newStart, newEnd, options); }; /** @@ -21844,7 +21950,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Core; /***/ }, -/* 127 */ +/* 131 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -21857,24 +21963,24 @@ return /******/ (function(modules) { // webpackBootstrap var _typeof3 = _interopRequireDefault(_typeof2); - var _Popup = __webpack_require__(128); + var _Popup = __webpack_require__(132); var _Popup2 = _interopRequireDefault(_Popup); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var Hammer = __webpack_require__(108); + var Hammer = __webpack_require__(112); var util = __webpack_require__(1); - var DataSet = __webpack_require__(91); + var DataSet = __webpack_require__(89); var DataView = __webpack_require__(93); - var TimeStep = __webpack_require__(129); - var Component = __webpack_require__(124); - var Group = __webpack_require__(130); - var BackgroundGroup = __webpack_require__(134); - var BoxItem = __webpack_require__(135); - var PointItem = __webpack_require__(136); - var RangeItem = __webpack_require__(132); - var BackgroundItem = __webpack_require__(137); + var TimeStep = __webpack_require__(133); + var Component = __webpack_require__(128); + var Group = __webpack_require__(134); + var BackgroundGroup = __webpack_require__(138); + var BoxItem = __webpack_require__(139); + var PointItem = __webpack_require__(140); + var RangeItem = __webpack_require__(136); + var BackgroundItem = __webpack_require__(141); var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items @@ -22021,6 +22127,8 @@ return /******/ (function(modules) { // webpackBootstrap this.selection = []; // list with the ids of all selected nodes this.stackDirty = true; // if true, all items will be restacked on next redraw + this.popup = null; + this.touchParams = {}; // stores properties while dragging this.groupTouchParams = {}; // create the HTML DOM @@ -22470,8 +22578,10 @@ return /******/ (function(modules) { // webpackBootstrap // TODO: would be nicer to get this as a trigger from Range var visibleInterval = range.end - range.start; var zoomed = visibleInterval != this.lastVisibleInterval || this.props.width != this.props.lastWidth; - if (zoomed) this.stackDirty = true; + var scrolled = range.start != this.lastRangeStart; + if (zoomed || scrolled) this.stackDirty = true; this.lastVisibleInterval = visibleInterval; + this.lastRangeStart = range.start; this.props.lastWidth = this.props.width; var restack = this.stackDirty; @@ -22737,12 +22847,6 @@ return /******/ (function(modules) { // webpackBootstrap // remove by id here, it is possible that an item has no id defined // itself, so better not delete by the item itself dataset.remove(id); - - // Remove it's popup - if (itemObj.popup) { - itemObj.popup.destroy(); - itemObj.popup = null; - } } }); } @@ -22999,7 +23103,8 @@ return /******/ (function(modules) { // webpackBootstrap var nestedGroups = this.groupsData.get({ filter: function filter(nestedGroup) { return nestedGroup.nestedInGroup == groupId; - } + }, + order: this.options.groupOrder }); var nestedGroupIds = nestedGroups.map(function (nestedGroup) { return nestedGroup.id; @@ -23651,8 +23756,8 @@ return /******/ (function(modules) { // webpackBootstrap var switchGroup = dataset.get(newOrder[curPos]); var shouldBeGroup = dataset.get(origOrder[curPos]); me.options.groupOrderSwap(switchGroup, shouldBeGroup, dataset); - groupsData.update(switchGroup); - groupsData.update(shouldBeGroup); + dataset.update(switchGroup); + dataset.update(shouldBeGroup); var switchGroupId = newOrder[curPos]; newOrder[curPos] = origOrder[curPos]; @@ -23696,7 +23801,7 @@ return /******/ (function(modules) { // webpackBootstrap if (newSelection.length > 0 || oldSelection.length > 0) { this.body.emitter.emit('select', { items: newSelection, - event: util.elementsCensor(event) + event: event }); } }; @@ -23717,19 +23822,27 @@ return /******/ (function(modules) { // webpackBootstrap return; } - if (item.getTitle()) { - if (item.popup == null) { - item.setPopup(new _Popup2['default'](this.body.dom.root, this.options.tooltip.overflowMethod || 'flip')); + var title = item.getTitle(); + if (title) { + if (this.popup == null) { + this.popup = new _Popup2['default'](this.body.dom.root, this.options.tooltip.overflowMethod || 'flip'); } + this.popup.setText(title); var container = this.body.dom.centerContainer; - item.popup.setPosition(event.clientX - util.getAbsoluteLeft(container) + container.offsetLeft, event.clientY - util.getAbsoluteTop(container) + container.offsetTop); - item.popup.show(); + this.popup.setPosition(event.clientX - util.getAbsoluteLeft(container) + container.offsetLeft, event.clientY - util.getAbsoluteTop(container) + container.offsetTop); + this.popup.show(); + } else { + // Hovering over item without a title, hide popup + // Needed instead of _just_ in _onMouseOut due to #2572 + if (this.popup != null) { + this.popup.hide(); + } } this.body.emitter.emit('itemover', { item: item.id, - event: util.elementsCensor(event) + event: event }); }; ItemSet.prototype._onMouseOut = function (event) { @@ -23743,13 +23856,13 @@ return /******/ (function(modules) { // webpackBootstrap return; } - if (item.popup != null) { - item.popup.hide(); + if (this.popup != null) { + this.popup.hide(); } this.body.emitter.emit('itemout', { item: item.id, - event: util.elementsCensor(event) + event: event }); }; ItemSet.prototype._onMouseMove = function (event) { @@ -23757,11 +23870,11 @@ return /******/ (function(modules) { // webpackBootstrap if (!item) return; if (this.options.tooltip.followMouse) { - if (item.popup) { - if (!item.popup.hidden) { + if (this.popup) { + if (!this.popup.hidden) { var container = this.body.dom.centerContainer; - item.popup.setPosition(event.clientX - util.getAbsoluteLeft(container) + container.offsetLeft, event.clientY - util.getAbsoluteTop(container) + container.offsetTop); - item.popup.show(); // Redraw + this.popup.setPosition(event.clientX - util.getAbsoluteLeft(container) + container.offsetLeft, event.clientY - util.getAbsoluteTop(container) + container.offsetTop); + this.popup.show(); // Redraw } } } @@ -23944,7 +24057,7 @@ return /******/ (function(modules) { // webpackBootstrap this.body.emitter.emit('select', { items: this.getSelection(), - event: util.elementsCensor(event) + event: event }); } }; @@ -24098,7 +24211,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = ItemSet; /***/ }, -/* 128 */ +/* 132 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -24107,11 +24220,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -24267,13 +24380,13 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Popup; /***/ }, -/* 129 */ +/* 133 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var moment = __webpack_require__(84); - var DateUtil = __webpack_require__(125); + var moment = __webpack_require__(82); + var DateUtil = __webpack_require__(129); var util = __webpack_require__(1); /** @@ -24478,59 +24591,33 @@ return /******/ (function(modules) { // webpackBootstrap // Two cases, needed to prevent issues with switching daylight savings // (end of March and end of October) - if (this.current.month() < 6) { - switch (this.scale) { - case 'millisecond': - this.current.add(this.step, 'millisecond');break; - case 'second': - this.current.add(this.step, 'second');break; - case 'minute': - this.current.add(this.step, 'minute');break; - case 'hour': - this.current.add(this.step, 'hour'); - // in case of skipping an hour for daylight savings, adjust the hour again (else you get: 0h 5h 9h ... instead of 0h 4h 8h ...) - // TODO: is this still needed now we use the function of moment.js? - this.current.subtract(this.current.hours() % this.step, 'hour'); - break; - case 'weekday': // intentional fall through - case 'day': - this.current.add(this.step, 'day');break; - case 'month': - this.current.add(this.step, 'month');break; - case 'year': - this.current.add(this.step, 'year');break; - default: - break; - } - } else { - switch (this.scale) { - case 'millisecond': - this.current.add(this.step, 'millisecond');break; - case 'second': - this.current.add(this.step, 'second');break; - case 'minute': - this.current.add(this.step, 'minute');break; - case 'hour': - this.current.add(this.moment.duration(this.step, 'hour')); + switch (this.scale) { + case 'millisecond': + this.current.add(this.step, 'millisecond');break; + case 'second': + this.current.add(this.step, 'second');break; + case 'minute': + this.current.add(this.step, 'minute');break; + case 'hour': + this.current.add(this.step, 'hour'); - // correct for daylight saving - // FIXME: use this.current.add(moment.duration(this.step, 'hour')) - // see http://momentjs.com/docs/#special-considerations-for-months-and-years + if (this.current.month() < 6) { + this.current.subtract(this.current.hours() % this.step, 'hour'); + } else { if (this.current.hours() % this.step !== 0) { this.current.add(this.step - this.current.hours() % this.step, 'hour'); } - - break; - case 'weekday': // intentional fall through - case 'day': - this.current.add(this.step, 'day');break; - case 'month': - this.current.add(this.step, 'month');break; - case 'year': - this.current.add(this.step, 'year');break; - default: - break; - } + } + break; + case 'weekday': // intentional fall through + case 'day': + this.current.add(this.step, 'day');break; + case 'month': + this.current.add(this.step, 'month');break; + case 'year': + this.current.add(this.step, 'year');break; + default: + break; } if (this.step != 1) { @@ -24893,6 +24980,9 @@ return /******/ (function(modules) { // webpackBootstrap if (date == undefined) { date = this.current; } + if (date instanceof Date) { + date = this.moment(date); + } if (typeof this.format.minorLabels === "function") { return this.format.minorLabels(date, this.scale, this.step); @@ -24912,6 +25002,9 @@ return /******/ (function(modules) { // webpackBootstrap if (date == undefined) { date = this.current; } + if (date instanceof Date) { + date = this.moment(date); + } if (typeof this.format.majorLabels === "function") { return this.format.majorLabels(date, this.scale, this.step); @@ -24990,7 +25083,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = TimeStep; /***/ }, -/* 130 */ +/* 134 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -25002,8 +25095,8 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var stack = __webpack_require__(131); - var RangeItem = __webpack_require__(132); + var stack = __webpack_require__(135); + var RangeItem = __webpack_require__(136); /** * @constructor Group @@ -25714,7 +25807,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Group; /***/ }, -/* 131 */ +/* 135 */ /***/ function(module, exports) { 'use strict'; @@ -25893,13 +25986,13 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 132 */ +/* 136 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Hammer = __webpack_require__(108); - var Item = __webpack_require__(133); + var Hammer = __webpack_require__(112); + var Item = __webpack_require__(137); /** * @constructor RangeItem @@ -26000,11 +26093,10 @@ return /******/ (function(modules) { // webpackBootstrap // - the item is selected/deselected if (this.dirty) { this._updateContents(this.dom.content); - this._updateTitle(); this._updateDataAttributes(this.dom.box); this._updateStyle(this.dom.box); - var editable = (this.options.editable.updateTime || this.options.editable.updateGroup || this.editable === true) && this.editable !== false; + var editable = this.editable.updateTime || this.editable.updateGroup; // update class var className = (this.data.className ? ' ' + this.data.className : '') + (this.selected ? ' vis-selected' : '') + (editable ? ' vis-editable' : ' vis-readonly'); @@ -26228,24 +26320,24 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = RangeItem; /***/ }, -/* 133 */ +/* 137 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var _keys = __webpack_require__(58); - - var _keys2 = _interopRequireDefault(_keys); - var _typeof2 = __webpack_require__(62); var _typeof3 = _interopRequireDefault(_typeof2); + var _keys = __webpack_require__(58); + + var _keys2 = _interopRequireDefault(_keys); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var Hammer = __webpack_require__(108); + var Hammer = __webpack_require__(112); var util = __webpack_require__(1); - var moment = __webpack_require__(84); + var moment = __webpack_require__(82); /** * @constructor Item @@ -26267,7 +26359,6 @@ return /******/ (function(modules) { // webpackBootstrap this.displayed = false; this.groupShowing = true; this.dirty = true; - this.popup = null; this.top = null; this.right = null; @@ -26276,18 +26367,7 @@ return /******/ (function(modules) { // webpackBootstrap this.height = null; this.editable = null; - if (this.data && this.data.hasOwnProperty('editable')) { - if (typeof this.data.editable === 'boolean') { - this.editable = { - updateTime: this.data.editable, - updateGroup: this.data.editable, - remove: this.data.editable - }; - } else if ((0, _typeof3['default'])(options.editable) === 'object') { - this.editable = {}; - util.selectiveExtend(['updateTime', 'updateGroup', 'remove'], this.editable, data.editable); - }; - } + this._updateEditStatus(); } Item.prototype.stack = true; @@ -26321,20 +26401,8 @@ return /******/ (function(modules) { // webpackBootstrap this.parent.itemSet._moveToGroup(this, data.group); } - if (data.hasOwnProperty('editable')) { - if (typeof data.editable === 'boolean') { - this.editable = { - updateTime: this.data.editable, - updateGroup: this.data.editable, - remove: this.data.editable - }; - } else if ((0, _typeof3['default'])(options.editable) === 'object') { - this.editable = {}; - util.selectiveExtend(['updateTime', 'updateGroup', 'remove'], this.editable, data.editable); - } - } - this.data = data; + this._updateEditStatus(); this.dirty = true; if (this.displayed) this.redraw(); }; @@ -26599,7 +26667,7 @@ return /******/ (function(modules) { // webpackBootstrap if (this.options.template) { templateFunction = this.options.template.bind(this); - content = templateFunction(itemData, element); + content = templateFunction(itemData, element, this.data); } else { content = this.data.content; } @@ -26626,18 +26694,6 @@ return /******/ (function(modules) { // webpackBootstrap } }; - /** - * Set HTML contents for the item - * @private - */ - Item.prototype._updateTitle = function () { - if (this.data.title != null) { - if (this.popup != null) { - this.popup.setText(this.data.title || ''); - } - } - }; - /** * Process dataAttributes timeline option and set as data- attributes on dom.content * @param {Element} element HTML element to which the attributes will be attached @@ -26699,6 +26755,41 @@ return /******/ (function(modules) { // webpackBootstrap return content; }; + /** + * Update the editability of this item. + */ + Item.prototype._updateEditStatus = function () { + if (this.options) { + if (typeof this.options.editable === 'boolean') { + this.editable = { + updateTime: this.options.editable, + updateGroup: this.options.editable, + remove: this.options.editable + }; + } else if ((0, _typeof3['default'])(this.options.editable) === 'object') { + this.editable = {}; + util.selectiveExtend(['updateTime', 'updateGroup', 'remove'], this.editable, this.options.editable); + }; + } + // Item data overrides, except if options.editable.overrideItems is set. + if (!this.options || !this.options.editable || this.options.editable.overrideItems !== true) { + if (this.data) { + if (typeof this.data.editable === 'boolean') { + this.editable = { + updateTime: this.data.editable, + updateGroup: this.data.editable, + remove: this.data.editable + }; + } else if ((0, _typeof3['default'])(this.data.editable) === 'object') { + // TODO: in vis.js 5.0, we should change this to not reset options from the timeline configuration. + // Basically just remove the next line... + this.editable = {}; + util.selectiveExtend(['updateTime', 'updateGroup', 'remove'], this.editable, this.data.editable); + } + } + } + }; + /** * Return the width of the item left from its start date * @return {number} @@ -26723,19 +26814,10 @@ return /******/ (function(modules) { // webpackBootstrap return this.data.title; }; - /** - * Set the popup object, and update the title - * @param {Popup} popup - */ - Item.prototype.setPopup = function (popup) { - this.popup = popup; - this._updateTitle(); - }; - module.exports = Item; /***/ }, -/* 134 */ +/* 138 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -26747,7 +26829,7 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var Group = __webpack_require__(130); + var Group = __webpack_require__(134); /** * @constructor BackgroundGroup @@ -26805,12 +26887,12 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = BackgroundGroup; /***/ }, -/* 135 */ +/* 139 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Item = __webpack_require__(133); + var Item = __webpack_require__(137); var util = __webpack_require__(1); /** @@ -26928,11 +27010,10 @@ return /******/ (function(modules) { // webpackBootstrap // - the item is selected/deselected if (this.dirty) { this._updateContents(this.dom.content); - this._updateTitle(); this._updateDataAttributes(this.dom.box); this._updateStyle(this.dom.box); - var editable = (this.options.editable.updateTime || this.options.editable.updateGroup || this.editable === true) && this.editable !== false; + var editable = this.editable.updateTime || this.editable.updateGroup; // update class var className = (this.data.className ? ' ' + this.data.className : '') + (this.selected ? ' vis-selected' : '') + (editable ? ' vis-editable' : ' vis-readonly'); @@ -27107,12 +27188,12 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = BoxItem; /***/ }, -/* 136 */ +/* 140 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Item = __webpack_require__(133); + var Item = __webpack_require__(137); /** * @constructor PointItem @@ -27210,12 +27291,10 @@ return /******/ (function(modules) { // webpackBootstrap // - the item is selected/deselected if (this.dirty) { this._updateContents(this.dom.content); - this._updateTitle(); this._updateDataAttributes(this.dom.point); this._updateStyle(this.dom.point); - var editable = (this.options.editable.updateTime || this.options.editable.updateGroup || this.editable === true) && this.editable !== false; - + var editable = this.editable.updateTime || this.editable.updateGroup; // update class var className = (this.data.className ? ' ' + this.data.className : '') + (this.selected ? ' vis-selected' : '') + (editable ? ' vis-editable' : ' vis-readonly'); dom.point.className = 'vis-item vis-point' + className; @@ -27330,15 +27409,15 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = PointItem; /***/ }, -/* 137 */ +/* 141 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Hammer = __webpack_require__(108); - var Item = __webpack_require__(133); - var BackgroundGroup = __webpack_require__(134); - var RangeItem = __webpack_require__(132); + var Hammer = __webpack_require__(112); + var Item = __webpack_require__(137); + var BackgroundGroup = __webpack_require__(138); + var RangeItem = __webpack_require__(136); /** * @constructor BackgroundItem @@ -27437,7 +27516,6 @@ return /******/ (function(modules) { // webpackBootstrap // - the item is selected/deselected if (this.dirty) { this._updateContents(this.dom.content); - this._updateTitle(); this._updateDataAttributes(this.dom.content); this._updateStyle(this.dom.box); @@ -27480,6 +27558,7 @@ return /******/ (function(modules) { // webpackBootstrap */ BackgroundItem.prototype.repositionY = function (margin) { var height; + var orientation = this.options.orientation.item; // special positioning for subgroups if (this.data.subgroup !== undefined) { @@ -27491,7 +27570,6 @@ return /******/ (function(modules) { // webpackBootstrap this.dom.box.style.height = this.parent.subgroups[itemSubgroup].height + 'px'; - var orientation = this.options.orientation.item; if (orientation == 'top') { this.dom.box.style.top = this.parent.top + this.parent.subgroups[itemSubgroup].top + 'px'; } else { @@ -27505,8 +27583,8 @@ return /******/ (function(modules) { // webpackBootstrap if (this.parent instanceof BackgroundGroup) { // if the item is not in a group: height = Math.max(this.parent.height, this.parent.itemSet.body.domProps.center.height, this.parent.itemSet.body.domProps.centerContainer.height); + this.dom.box.style.bottom = orientation == 'bottom' ? '0' : ''; this.dom.box.style.top = orientation == 'top' ? '0' : ''; - this.dom.box.style.bottom = orientation == 'top' ? '' : '0'; } else { height = this.parent.height; // same alignment for items when orientation is top or bottom @@ -27520,7 +27598,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = BackgroundItem; /***/ }, -/* 138 */ +/* 142 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -27532,10 +27610,10 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var Component = __webpack_require__(124); - var TimeStep = __webpack_require__(129); - var DateUtil = __webpack_require__(125); - var moment = __webpack_require__(84); + var Component = __webpack_require__(128); + var TimeStep = __webpack_require__(133); + var DateUtil = __webpack_require__(129); + var moment = __webpack_require__(82); /** * A horizontal time axis @@ -28024,14 +28102,14 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = TimeAxis; /***/ }, -/* 139 */ +/* 143 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var keycharm = __webpack_require__(111); - var Emitter = __webpack_require__(95); - var Hammer = __webpack_require__(108); + var keycharm = __webpack_require__(115); + var Emitter = __webpack_require__(99); + var Hammer = __webpack_require__(112); var util = __webpack_require__(1); /** @@ -28183,16 +28261,16 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Activator; /***/ }, -/* 140 */ +/* 144 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Hammer = __webpack_require__(108); + var Hammer = __webpack_require__(112); var util = __webpack_require__(1); - var Component = __webpack_require__(124); - var moment = __webpack_require__(84); - var locales = __webpack_require__(141); + var Component = __webpack_require__(128); + var moment = __webpack_require__(82); + var locales = __webpack_require__(145); /** * A custom time bar @@ -28333,6 +28411,8 @@ return /******/ (function(modules) { // webpackBootstrap if (title === undefined) { title = locale.time + ': ' + this.options.moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); title = title.charAt(0).toUpperCase() + title.substring(1); + } else if (typeof title === "function") { + title = title.call(this.customTime); } this.bar.style.left = x + 'px'; @@ -28450,7 +28530,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = CustomTime; /***/ }, -/* 141 */ +/* 145 */ /***/ function(module, exports) { 'use strict'; @@ -28486,16 +28566,32 @@ return /******/ (function(modules) { // webpackBootstrap }; exports['de_DE'] = exports['de']; + // French + exports['fr'] = { + current: 'actuel', + time: 'heure' + }; + exports['fr_FR'] = exports['fr']; + exports['fr_CA'] = exports['fr']; + exports['fr_BE'] = exports['fr']; + + // Espanol + exports['es'] = { + current: 'corriente', + time: 'hora' + }; + exports['es_ES'] = exports['es']; + /***/ }, -/* 142 */ +/* 146 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var util = __webpack_require__(1); - var Component = __webpack_require__(124); - var moment = __webpack_require__(84); - var locales = __webpack_require__(141); + var Component = __webpack_require__(128); + var moment = __webpack_require__(82); + var locales = __webpack_require__(145); /** * A current time bar @@ -28670,7 +28766,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = CurrentTime; /***/ }, -/* 143 */ +/* 147 */ /***/ function(module, exports) { 'use strict'; @@ -28933,37 +29029,37 @@ return /******/ (function(modules) { // webpackBootstrap exports.configureOptions = configureOptions; /***/ }, -/* 144 */ +/* 148 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var _Configurator = __webpack_require__(114); + var _Configurator = __webpack_require__(118); var _Configurator2 = _interopRequireDefault(_Configurator); - var _Validator = __webpack_require__(122); + var _Validator = __webpack_require__(126); var _Validator2 = _interopRequireDefault(_Validator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var Emitter = __webpack_require__(95); - var Hammer = __webpack_require__(108); - var moment = __webpack_require__(84); + var Emitter = __webpack_require__(99); + var Hammer = __webpack_require__(112); + var moment = __webpack_require__(82); var util = __webpack_require__(1); - var DataSet = __webpack_require__(91); + var DataSet = __webpack_require__(89); var DataView = __webpack_require__(93); - var Range = __webpack_require__(123); - var Core = __webpack_require__(126); - var TimeAxis = __webpack_require__(138); - var CurrentTime = __webpack_require__(142); - var CustomTime = __webpack_require__(140); - var LineGraph = __webpack_require__(145); + var Range = __webpack_require__(127); + var Core = __webpack_require__(130); + var TimeAxis = __webpack_require__(142); + var CurrentTime = __webpack_require__(146); + var CustomTime = __webpack_require__(144); + var LineGraph = __webpack_require__(149); - var printStyle = __webpack_require__(122).printStyle; - var allOptions = __webpack_require__(153).allOptions; - var configureOptions = __webpack_require__(153).configureOptions; + var printStyle = __webpack_require__(126).printStyle; + var allOptions = __webpack_require__(157).allOptions; + var configureOptions = __webpack_require__(157).configureOptions; /** * Create a timeline visualization @@ -29288,7 +29384,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Graph2d; /***/ }, -/* 145 */ +/* 149 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -29300,16 +29396,16 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var DOMutil = __webpack_require__(90); - var DataSet = __webpack_require__(91); + var DOMutil = __webpack_require__(88); + var DataSet = __webpack_require__(89); var DataView = __webpack_require__(93); - var Component = __webpack_require__(124); - var DataAxis = __webpack_require__(146); - var GraphGroup = __webpack_require__(148); - var Legend = __webpack_require__(152); - var Bars = __webpack_require__(149); - var Lines = __webpack_require__(151); - var Points = __webpack_require__(150); + var Component = __webpack_require__(128); + var DataAxis = __webpack_require__(150); + var GraphGroup = __webpack_require__(152); + var Legend = __webpack_require__(156); + var Bars = __webpack_require__(153); + var Lines = __webpack_require__(155); + var Points = __webpack_require__(154); var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items @@ -29774,6 +29870,7 @@ return /******/ (function(modules) { // webpackBootstrap //Copy data (because of unmodifiable DataView input. var extended = util.bridgeObject(item); extended.x = util.convert(item.x, 'Date'); + extended.end = util.convert(item.end, 'Date'); extended.orginalY = item.y; //real Y extended.y = Number(item.y); extended[fieldId] = item[fieldId]; @@ -30181,9 +30278,9 @@ return /******/ (function(modules) { // webpackBootstrap // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. if (options.stack === true && options.style === 'bar') { if (options.yAxisOrientation === 'left') { - combinedDataLeft = combinedDataLeft.concat(group.getItems()); + combinedDataLeft = combinedDataLeft.concat(groupData); } else { - combinedDataRight = combinedDataRight.concat(group.getItems()); + combinedDataRight = combinedDataRight.concat(groupData); } } else { groupRanges[groupIds[i]] = group.getYRange(groupData, groupIds[i]); @@ -30331,6 +30428,11 @@ return /******/ (function(modules) { // webpackBootstrap for (var i = 0; i < datapoints.length; i++) { datapoints[i].screen_x = toScreen(datapoints[i].x) + this.props.width; datapoints[i].screen_y = datapoints[i].y; //starting point for range calculations + if (datapoints[i].end != undefined) { + datapoints[i].screen_end = toScreen(datapoints[i].end) + this.props.width; + } else { + datapoints[i].screen_end = undefined; + } } }; @@ -30359,7 +30461,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = LineGraph; /***/ }, -/* 146 */ +/* 150 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -30371,9 +30473,9 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var DOMutil = __webpack_require__(90); - var Component = __webpack_require__(124); - var DataScale = __webpack_require__(147); + var DOMutil = __webpack_require__(88); + var Component = __webpack_require__(128); + var DataScale = __webpack_require__(151); /** * A horizontal time axis * @param {Object} [options] See DataAxis.setOptions for the available @@ -30925,7 +31027,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = DataAxis; /***/ }, -/* 147 */ +/* 151 */ /***/ function(module, exports) { 'use strict'; @@ -31167,7 +31269,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = DataScale; /***/ }, -/* 148 */ +/* 152 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -31179,10 +31281,10 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var DOMutil = __webpack_require__(90); - var Bars = __webpack_require__(149); - var Lines = __webpack_require__(151); - var Points = __webpack_require__(150); + var DOMutil = __webpack_require__(88); + var Bars = __webpack_require__(153); + var Lines = __webpack_require__(155); + var Points = __webpack_require__(154); /** * /** @@ -31334,13 +31436,13 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = GraphGroup; /***/ }, -/* 149 */ +/* 153 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var DOMutil = __webpack_require__(90); - var Points = __webpack_require__(150); + var DOMutil = __webpack_require__(88); + var Points = __webpack_require__(154); function Bargraph(groupId, options) {} @@ -31401,8 +31503,10 @@ return /******/ (function(modules) { // webpackBootstrap for (j = 0; j < processedGroupData[groupIds[i]].length; j++) { combinedData.push({ screen_x: processedGroupData[groupIds[i]][j].screen_x, + screen_end: processedGroupData[groupIds[i]][j].screen_end, screen_y: processedGroupData[groupIds[i]][j].screen_y, x: processedGroupData[groupIds[i]][j].x, + end: processedGroupData[groupIds[i]][j].end, y: processedGroupData[groupIds[i]][j].y, groupId: groupIds[i], label: processedGroupData[groupIds[i]][j].label @@ -31463,7 +31567,20 @@ return /******/ (function(modules) { // webpackBootstrap drawData.offset += intersections[key].resolved * drawData.width - 0.5 * drawData.width * (intersections[key].amount + 1); } } - DOMutil.drawBar(combinedData[i].screen_x + drawData.offset, combinedData[i].screen_y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].screen_y, group.className + ' vis-bar', framework.svgElements, framework.svg, group.style); + + var dataWidth = drawData.width; + var start = combinedData[i].screen_x; + + // are we drawing explicit boxes? (we supplied an end value) + if (combinedData[i].screen_end != undefined) { + dataWidth = combinedData[i].screen_end - combinedData[i].screen_x; + start += dataWidth * 0.5; + } else { + start += drawData.offset; + } + + DOMutil.drawBar(start, combinedData[i].screen_y - heightOffset, dataWidth, group.zeroPosition - combinedData[i].screen_y, group.className + ' vis-bar', framework.svgElements, framework.svg, group.style); + // draw points if (group.options.drawPoints.enabled === true) { var pointData = { @@ -31595,7 +31712,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Bargraph; /***/ }, -/* 150 */ +/* 154 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -31606,7 +31723,7 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var DOMutil = __webpack_require__(90); + var DOMutil = __webpack_require__(88); function Points(groupId, options) {} @@ -31678,12 +31795,12 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Points; /***/ }, -/* 151 */ +/* 155 */ /***/ function(module, exports, __webpack_require__) { "use strict"; - var DOMutil = __webpack_require__(90); + var DOMutil = __webpack_require__(88); function Line(groupId, options) {} @@ -31967,7 +32084,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Line; /***/ }, -/* 152 */ +/* 156 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -31979,8 +32096,8 @@ return /******/ (function(modules) { // webpackBootstrap function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var DOMutil = __webpack_require__(90); - var Component = __webpack_require__(124); + var DOMutil = __webpack_require__(88); + var Component = __webpack_require__(128); /** * Legend for Graph2d @@ -32192,7 +32309,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Legend; /***/ }, -/* 153 */ +/* 157 */ /***/ function(module, exports) { 'use strict'; @@ -32477,27 +32594,27 @@ return /******/ (function(modules) { // webpackBootstrap exports.configureOptions = configureOptions; /***/ }, -/* 154 */ +/* 158 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; // utils exports.util = __webpack_require__(1); - exports.DOMutil = __webpack_require__(90); + exports.DOMutil = __webpack_require__(88); // data - exports.DataSet = __webpack_require__(91); + exports.DataSet = __webpack_require__(89); exports.DataView = __webpack_require__(93); exports.Queue = __webpack_require__(92); // Network - exports.Network = __webpack_require__(155); + exports.Network = __webpack_require__(159); exports.network = { - Images: __webpack_require__(156), - dotparser: __webpack_require__(224), - gephiParser: __webpack_require__(225), - allOptions: __webpack_require__(220) + Images: __webpack_require__(160), + dotparser: __webpack_require__(228), + gephiParser: __webpack_require__(229), + allOptions: __webpack_require__(224) }; exports.network.convertDot = function (input) { return exports.network.dotparser.DOTToGraph(input); @@ -32507,95 +32624,95 @@ return /******/ (function(modules) { // webpackBootstrap }; // bundled external libraries - exports.moment = __webpack_require__(84); - exports.Hammer = __webpack_require__(108); - exports.keycharm = __webpack_require__(111); + exports.moment = __webpack_require__(82); + exports.Hammer = __webpack_require__(112); + exports.keycharm = __webpack_require__(115); /***/ }, -/* 155 */ +/* 159 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var _Images = __webpack_require__(156); + var _Images = __webpack_require__(160); var _Images2 = _interopRequireDefault(_Images); - var _Groups = __webpack_require__(157); + var _Groups = __webpack_require__(161); var _Groups2 = _interopRequireDefault(_Groups); - var _NodesHandler = __webpack_require__(158); + var _NodesHandler = __webpack_require__(162); var _NodesHandler2 = _interopRequireDefault(_NodesHandler); - var _EdgesHandler = __webpack_require__(191); + var _EdgesHandler = __webpack_require__(195); var _EdgesHandler2 = _interopRequireDefault(_EdgesHandler); - var _PhysicsEngine = __webpack_require__(200); + var _PhysicsEngine = __webpack_require__(204); var _PhysicsEngine2 = _interopRequireDefault(_PhysicsEngine); - var _Clustering = __webpack_require__(209); + var _Clustering = __webpack_require__(213); var _Clustering2 = _interopRequireDefault(_Clustering); - var _CanvasRenderer = __webpack_require__(212); + var _CanvasRenderer = __webpack_require__(216); var _CanvasRenderer2 = _interopRequireDefault(_CanvasRenderer); - var _Canvas = __webpack_require__(213); + var _Canvas = __webpack_require__(217); var _Canvas2 = _interopRequireDefault(_Canvas); - var _View = __webpack_require__(214); + var _View = __webpack_require__(218); var _View2 = _interopRequireDefault(_View); - var _InteractionHandler = __webpack_require__(215); + var _InteractionHandler = __webpack_require__(219); var _InteractionHandler2 = _interopRequireDefault(_InteractionHandler); - var _SelectionHandler = __webpack_require__(217); + var _SelectionHandler = __webpack_require__(221); var _SelectionHandler2 = _interopRequireDefault(_SelectionHandler); - var _LayoutEngine = __webpack_require__(218); + var _LayoutEngine = __webpack_require__(222); var _LayoutEngine2 = _interopRequireDefault(_LayoutEngine); - var _ManipulationSystem = __webpack_require__(219); + var _ManipulationSystem = __webpack_require__(223); var _ManipulationSystem2 = _interopRequireDefault(_ManipulationSystem); - var _Configurator = __webpack_require__(114); + var _Configurator = __webpack_require__(118); var _Configurator2 = _interopRequireDefault(_Configurator); - var _Validator = __webpack_require__(122); + var _Validator = __webpack_require__(126); var _Validator2 = _interopRequireDefault(_Validator); - var _options = __webpack_require__(220); + var _options = __webpack_require__(224); - var _KamadaKawai = __webpack_require__(221); + var _KamadaKawai = __webpack_require__(225); var _KamadaKawai2 = _interopRequireDefault(_KamadaKawai); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(223); + __webpack_require__(227); - var Emitter = __webpack_require__(95); + var Emitter = __webpack_require__(99); var util = __webpack_require__(1); - var DataSet = __webpack_require__(91); + var DataSet = __webpack_require__(89); var DataView = __webpack_require__(93); - var dotparser = __webpack_require__(224); - var gephiParser = __webpack_require__(225); - var Activator = __webpack_require__(139); - var locales = __webpack_require__(226); + var dotparser = __webpack_require__(228); + var gephiParser = __webpack_require__(229); + var Activator = __webpack_require__(143); + var locales = __webpack_require__(230); /** * @constructor Network @@ -33147,7 +33264,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Network; /***/ }, -/* 156 */ +/* 160 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -33156,11 +33273,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -33281,7 +33398,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = Images; /***/ }, -/* 157 */ +/* 161 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -33290,11 +33407,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -33430,7 +33547,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = Groups; /***/ }, -/* 158 */ +/* 162 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -33439,26 +33556,26 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _Node = __webpack_require__(159); + var _Node = __webpack_require__(163); var _Node2 = _interopRequireDefault(_Node); - var _Label = __webpack_require__(160); + var _Label = __webpack_require__(164); var _Label2 = _interopRequireDefault(_Label); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var DataSet = __webpack_require__(91); + var DataSet = __webpack_require__(89); var DataView = __webpack_require__(93); var NodesHandler = function () { @@ -33670,8 +33787,6 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'setData', value: function setData(nodes) { - var _this3 = this; - var doNotEmit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var oldNodesData = this.body.data.nodes; @@ -33698,17 +33813,15 @@ return /******/ (function(modules) { // webpackBootstrap this.body.nodes = {}; if (this.body.data.nodes) { - (function () { - // subscribe to new dataset - var me = _this3; - util.forEach(_this3.nodesListeners, function (callback, event) { - me.body.data.nodes.on(event, callback); - }); + // subscribe to new dataset + var me = this; + util.forEach(this.nodesListeners, function (callback, event) { + me.body.data.nodes.on(event, callback); + }); - // draw all new nodes - var ids = _this3.body.data.nodes.getIds(); - _this3.add(ids, true); - })(); + // draw all new nodes + var ids = this.body.data.nodes.getIds(); + this.add(ids, true); } if (doNotEmit === false) { @@ -33963,13 +34076,13 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'moveNode', value: function moveNode(nodeId, x, y) { - var _this4 = this; + var _this3 = this; if (this.body.nodes[nodeId] !== undefined) { this.body.nodes[nodeId].x = Number(x); this.body.nodes[nodeId].y = Number(y); setTimeout(function () { - _this4.body.emitter.emit("startSimulation"); + _this3.body.emitter.emit("startSimulation"); }, 0); } else { console.log("Node id supplied to moveNode does not exist. Provided: ", nodeId); @@ -33982,7 +34095,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = NodesHandler; /***/ }, -/* 159 */ +/* 163 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -33995,75 +34108,75 @@ return /******/ (function(modules) { // webpackBootstrap var _typeof3 = _interopRequireDefault(_typeof2); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _Label = __webpack_require__(160); + var _Label = __webpack_require__(164); var _Label2 = _interopRequireDefault(_Label); - var _Box = __webpack_require__(165); + var _Box = __webpack_require__(169); var _Box2 = _interopRequireDefault(_Box); - var _Circle = __webpack_require__(176); + var _Circle = __webpack_require__(180); var _Circle2 = _interopRequireDefault(_Circle); - var _CircularImage = __webpack_require__(178); + var _CircularImage = __webpack_require__(182); var _CircularImage2 = _interopRequireDefault(_CircularImage); - var _Database = __webpack_require__(179); + var _Database = __webpack_require__(183); var _Database2 = _interopRequireDefault(_Database); - var _Diamond = __webpack_require__(180); + var _Diamond = __webpack_require__(184); var _Diamond2 = _interopRequireDefault(_Diamond); - var _Dot = __webpack_require__(182); + var _Dot = __webpack_require__(186); var _Dot2 = _interopRequireDefault(_Dot); - var _Ellipse = __webpack_require__(183); + var _Ellipse = __webpack_require__(187); var _Ellipse2 = _interopRequireDefault(_Ellipse); - var _Icon = __webpack_require__(184); + var _Icon = __webpack_require__(188); var _Icon2 = _interopRequireDefault(_Icon); - var _Image = __webpack_require__(185); + var _Image = __webpack_require__(189); var _Image2 = _interopRequireDefault(_Image); - var _Square = __webpack_require__(186); + var _Square = __webpack_require__(190); var _Square2 = _interopRequireDefault(_Square); - var _Star = __webpack_require__(187); + var _Star = __webpack_require__(191); var _Star2 = _interopRequireDefault(_Star); - var _Text = __webpack_require__(188); + var _Text = __webpack_require__(192); var _Text2 = _interopRequireDefault(_Text); - var _Triangle = __webpack_require__(189); + var _Triangle = __webpack_require__(193); var _Triangle2 = _interopRequireDefault(_Triangle); - var _TriangleDown = __webpack_require__(190); + var _TriangleDown = __webpack_require__(194); var _TriangleDown2 = _interopRequireDefault(_TriangleDown); - var _Validator = __webpack_require__(122); + var _Validator = __webpack_require__(126); var _Validator2 = _interopRequireDefault(_Validator); @@ -34167,6 +34280,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!options) { return; } + // basic options if (options.id !== undefined) { this.id = options.id; @@ -34215,7 +34329,12 @@ return /******/ (function(modules) { // webpackBootstrap // load the images if (this.options.image !== undefined) { if (this.imagelist) { - this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage, this.id); + if (typeof this.options.image === 'string') { + this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage, this.id); + } else { + this.imageObj = this.imagelist.load(this.options.image.unselected, this.options.brokenImage, this.id); + this.imageObjAlt = this.imagelist.load(this.options.image.selected, this.options.brokenImage, this.id); + } } else { throw "No imagelist provided"; } @@ -34315,7 +34434,7 @@ return /******/ (function(modules) { // webpackBootstrap key: 'updateShape', value: function updateShape(currentShape) { if (currentShape === this.options.shape && this.shape) { - this.shape.setOptions(this.options, this.imageObj); + this.shape.setOptions(this.options, this.imageObj, this.imageObjAlt); } else { // choose draw method depending on the shape switch (this.options.shape) { @@ -34326,7 +34445,7 @@ return /******/ (function(modules) { // webpackBootstrap this.shape = new _Circle2['default'](this.options, this.body, this.labelModule); break; case 'circularImage': - this.shape = new _CircularImage2['default'](this.options, this.body, this.labelModule, this.imageObj); + this.shape = new _CircularImage2['default'](this.options, this.body, this.labelModule, this.imageObj, this.imageObjAlt); break; case 'database': this.shape = new _Database2['default'](this.options, this.body, this.labelModule); @@ -34344,7 +34463,7 @@ return /******/ (function(modules) { // webpackBootstrap this.shape = new _Icon2['default'](this.options, this.body, this.labelModule); break; case 'image': - this.shape = new _Image2['default'](this.options, this.body, this.labelModule, this.imageObj); + this.shape = new _Image2['default'](this.options, this.body, this.labelModule, this.imageObj, this.imageObjAlt); break; case 'square': this.shape = new _Square2['default'](this.options, this.body, this.labelModule); @@ -34600,7 +34719,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Node; /***/ }, -/* 160 */ +/* 164 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -34609,7 +34728,7 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _slicedToArray2 = __webpack_require__(161); + var _slicedToArray2 = __webpack_require__(165); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); @@ -34621,11 +34740,11 @@ return /******/ (function(modules) { // webpackBootstrap var _typeof3 = _interopRequireDefault(_typeof2); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -35608,14 +35727,14 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Label; /***/ }, -/* 161 */ +/* 165 */ /***/ function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; - var _isIterable2 = __webpack_require__(162); + var _isIterable2 = __webpack_require__(166); var _isIterable3 = _interopRequireDefault(_isIterable2); @@ -35664,21 +35783,21 @@ return /******/ (function(modules) { // webpackBootstrap }(); /***/ }, -/* 162 */ +/* 166 */ /***/ function(module, exports, __webpack_require__) { - module.exports = { "default": __webpack_require__(163), __esModule: true }; + module.exports = { "default": __webpack_require__(167), __esModule: true }; /***/ }, -/* 163 */ +/* 167 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(4); __webpack_require__(50); - module.exports = __webpack_require__(164); + module.exports = __webpack_require__(168); /***/ }, -/* 164 */ +/* 168 */ /***/ function(module, exports, __webpack_require__) { var classof = __webpack_require__(54) @@ -35692,7 +35811,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 165 */ +/* 169 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -35701,27 +35820,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _NodeBase2 = __webpack_require__(175); + var _NodeBase2 = __webpack_require__(179); var _NodeBase3 = _interopRequireDefault(_NodeBase2); @@ -35818,20 +35937,20 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Box; /***/ }, -/* 166 */ +/* 170 */ /***/ function(module, exports, __webpack_require__) { - module.exports = { "default": __webpack_require__(167), __esModule: true }; + module.exports = { "default": __webpack_require__(171), __esModule: true }; /***/ }, -/* 167 */ +/* 171 */ /***/ function(module, exports, __webpack_require__) { - __webpack_require__(168); + __webpack_require__(172); module.exports = __webpack_require__(17).Object.getPrototypeOf; /***/ }, -/* 168 */ +/* 172 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.9 Object.getPrototypeOf(O) @@ -35845,7 +35964,7 @@ return /******/ (function(modules) { // webpackBootstrap }); /***/ }, -/* 169 */ +/* 173 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -35867,14 +35986,14 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 170 */ +/* 174 */ /***/ function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; - var _setPrototypeOf = __webpack_require__(171); + var _setPrototypeOf = __webpack_require__(175); var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf); @@ -35905,28 +36024,28 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 171 */ +/* 175 */ /***/ function(module, exports, __webpack_require__) { - module.exports = { "default": __webpack_require__(172), __esModule: true }; + module.exports = { "default": __webpack_require__(176), __esModule: true }; /***/ }, -/* 172 */ +/* 176 */ /***/ function(module, exports, __webpack_require__) { - __webpack_require__(173); + __webpack_require__(177); module.exports = __webpack_require__(17).Object.setPrototypeOf; /***/ }, -/* 173 */ +/* 177 */ /***/ function(module, exports, __webpack_require__) { // 19.1.3.19 Object.setPrototypeOf(O, proto) var $export = __webpack_require__(15); - $export($export.S, 'Object', {setPrototypeOf: __webpack_require__(174).set}); + $export($export.S, 'Object', {setPrototypeOf: __webpack_require__(178).set}); /***/ }, -/* 174 */ +/* 178 */ /***/ function(module, exports, __webpack_require__) { // Works with __proto__ only. Old v8 can't work with null proto objects. @@ -35956,7 +36075,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 175 */ +/* 179 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -35969,11 +36088,11 @@ return /******/ (function(modules) { // webpackBootstrap var _typeof3 = _interopRequireDefault(_typeof2); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -36083,7 +36202,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = NodeBase; /***/ }, -/* 176 */ +/* 180 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -36092,27 +36211,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _CircleImageBase2 = __webpack_require__(177); + var _CircleImageBase2 = __webpack_require__(181); var _CircleImageBase3 = _interopRequireDefault(_CircleImageBase2); @@ -36185,7 +36304,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Circle; /***/ }, -/* 177 */ +/* 181 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -36194,27 +36313,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _NodeBase2 = __webpack_require__(175); + var _NodeBase2 = __webpack_require__(179); var _NodeBase3 = _interopRequireDefault(_NodeBase2); @@ -36230,18 +36349,45 @@ return /******/ (function(modules) { // webpackBootstrap _this.labelOffset = 0; _this.imageLoaded = false; + _this.selected = false; return _this; } (0, _createClass3['default'])(CircleImageBase, [{ key: 'setOptions', - value: function setOptions(options, imageObj) { + value: function setOptions(options, imageObj, imageObjAlt) { this.options = options; + this.setImages(imageObj, imageObjAlt); + } + }, { + key: 'setImages', + value: function setImages(imageObj, imageObjAlt) { if (imageObj) { this.imageObj = imageObj; + + if (imageObjAlt) { + this.imageObjAlt = imageObjAlt; + } } } + /** + * Switch between the base and the selected image. + */ + + }, { + key: 'switchImages', + value: function switchImages(selected) { + if (selected && !this.selected || !selected && this.selected) { + var imageTmp = this.imageObj; + this.imageObj = this.imageObjAlt; + this.imageObjAlt = imageTmp; + } + + // keep current state in memory + this.selected = selected; + } + /** * This function resizes the image by the options size when the image has not yet loaded. If the image has loaded, we * force the update of the size again. @@ -36395,7 +36541,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = CircleImageBase; /***/ }, -/* 178 */ +/* 182 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -36404,27 +36550,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _CircleImageBase2 = __webpack_require__(177); + var _CircleImageBase2 = __webpack_require__(181); var _CircleImageBase3 = _interopRequireDefault(_CircleImageBase2); @@ -36433,12 +36579,13 @@ return /******/ (function(modules) { // webpackBootstrap var CircularImage = function (_CircleImageBase) { (0, _inherits3['default'])(CircularImage, _CircleImageBase); - function CircularImage(options, body, labelModule, imageObj) { + function CircularImage(options, body, labelModule, imageObj, imageObjAlt) { (0, _classCallCheck3['default'])(this, CircularImage); var _this = (0, _possibleConstructorReturn3['default'])(this, (CircularImage.__proto__ || (0, _getPrototypeOf2['default'])(CircularImage)).call(this, options, body, labelModule)); - _this.imageObj = imageObj; + _this.setImages(imageObj, imageObjAlt); + _this._swapToImageResizeWhenImageLoaded = true; return _this; } @@ -36467,6 +36614,11 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'draw', value: function draw(ctx, x, y, selected, hover, values) { + // switch images depending on 'selected' if imageObjAlt exists + if (this.imageObjAlt) { + this.switchImages(selected); + } + this.resize(); this.left = x - this.width / 2; @@ -36514,7 +36666,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = CircularImage; /***/ }, -/* 179 */ +/* 183 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -36523,27 +36675,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _NodeBase2 = __webpack_require__(175); + var _NodeBase2 = __webpack_require__(179); var _NodeBase3 = _interopRequireDefault(_NodeBase2); @@ -36634,7 +36786,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Database; /***/ }, -/* 180 */ +/* 184 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -36643,27 +36795,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _ShapeBase2 = __webpack_require__(181); + var _ShapeBase2 = __webpack_require__(185); var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); @@ -36703,7 +36855,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Diamond; /***/ }, -/* 181 */ +/* 185 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -36712,27 +36864,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _NodeBase2 = __webpack_require__(175); + var _NodeBase2 = __webpack_require__(179); var _NodeBase3 = _interopRequireDefault(_NodeBase2); @@ -36822,7 +36974,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = ShapeBase; /***/ }, -/* 182 */ +/* 186 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -36831,27 +36983,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _ShapeBase2 = __webpack_require__(181); + var _ShapeBase2 = __webpack_require__(185); var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); @@ -36892,7 +37044,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Dot; /***/ }, -/* 183 */ +/* 187 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -36901,27 +37053,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _NodeBase2 = __webpack_require__(175); + var _NodeBase2 = __webpack_require__(179); var _NodeBase3 = _interopRequireDefault(_NodeBase2); @@ -37018,7 +37170,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Ellipse; /***/ }, -/* 184 */ +/* 188 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37027,27 +37179,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _NodeBase2 = __webpack_require__(175); + var _NodeBase2 = __webpack_require__(179); var _NodeBase3 = _interopRequireDefault(_NodeBase2); @@ -37145,7 +37297,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Icon; /***/ }, -/* 185 */ +/* 189 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37154,27 +37306,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _CircleImageBase2 = __webpack_require__(177); + var _CircleImageBase2 = __webpack_require__(181); var _CircleImageBase3 = _interopRequireDefault(_CircleImageBase2); @@ -37183,12 +37335,12 @@ return /******/ (function(modules) { // webpackBootstrap var Image = function (_CircleImageBase) { (0, _inherits3['default'])(Image, _CircleImageBase); - function Image(options, body, labelModule, imageObj) { + function Image(options, body, labelModule, imageObj, imageObjAlt) { (0, _classCallCheck3['default'])(this, Image); var _this = (0, _possibleConstructorReturn3['default'])(this, (Image.__proto__ || (0, _getPrototypeOf2['default'])(Image)).call(this, options, body, labelModule)); - _this.imageObj = imageObj; + _this.setImages(imageObj, imageObjAlt); return _this; } @@ -37200,6 +37352,13 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'draw', value: function draw(ctx, x, y, selected, hover, values) { + // switch images depending on 'selected' if imageObjAlt exists + if (this.imageObjAlt) { + this.switchImages(selected); + } + + this.selected = selected; + this.resize(); this.left = x - this.width / 2; this.top = y - this.height / 2; @@ -37273,7 +37432,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Image; /***/ }, -/* 186 */ +/* 190 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37282,27 +37441,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _ShapeBase2 = __webpack_require__(181); + var _ShapeBase2 = __webpack_require__(185); var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); @@ -37338,7 +37497,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Square; /***/ }, -/* 187 */ +/* 191 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37347,27 +37506,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _ShapeBase2 = __webpack_require__(181); + var _ShapeBase2 = __webpack_require__(185); var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); @@ -37403,7 +37562,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Star; /***/ }, -/* 188 */ +/* 192 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37412,27 +37571,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _NodeBase2 = __webpack_require__(175); + var _NodeBase2 = __webpack_require__(179); var _NodeBase3 = _interopRequireDefault(_NodeBase2); @@ -37501,7 +37660,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Text; /***/ }, -/* 189 */ +/* 193 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37510,27 +37669,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _ShapeBase2 = __webpack_require__(181); + var _ShapeBase2 = __webpack_require__(185); var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); @@ -37566,7 +37725,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Triangle; /***/ }, -/* 190 */ +/* 194 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37575,27 +37734,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _ShapeBase2 = __webpack_require__(181); + var _ShapeBase2 = __webpack_require__(185); var _ShapeBase3 = _interopRequireDefault(_ShapeBase2); @@ -37631,7 +37790,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = TriangleDown; /***/ }, -/* 191 */ +/* 195 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -37640,26 +37799,26 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _Edge = __webpack_require__(192); + var _Edge = __webpack_require__(196); var _Edge2 = _interopRequireDefault(_Edge); - var _Label = __webpack_require__(160); + var _Label = __webpack_require__(164); var _Label2 = _interopRequireDefault(_Label); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var DataSet = __webpack_require__(91); + var DataSet = __webpack_require__(89); var DataView = __webpack_require__(93); var EdgesHandler = function () { @@ -38085,7 +38244,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = EdgesHandler; /***/ }, -/* 192 */ +/* 196 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -38094,7 +38253,7 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _stringify = __webpack_require__(82); + var _stringify = __webpack_require__(90); var _stringify2 = _interopRequireDefault(_stringify); @@ -38106,31 +38265,31 @@ return /******/ (function(modules) { // webpackBootstrap var _typeof3 = _interopRequireDefault(_typeof2); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _Label = __webpack_require__(160); + var _Label = __webpack_require__(164); var _Label2 = _interopRequireDefault(_Label); - var _CubicBezierEdge = __webpack_require__(193); + var _CubicBezierEdge = __webpack_require__(197); var _CubicBezierEdge2 = _interopRequireDefault(_CubicBezierEdge); - var _BezierEdgeDynamic = __webpack_require__(197); + var _BezierEdgeDynamic = __webpack_require__(201); var _BezierEdgeDynamic2 = _interopRequireDefault(_BezierEdgeDynamic); - var _BezierEdgeStatic = __webpack_require__(198); + var _BezierEdgeStatic = __webpack_require__(202); var _BezierEdgeStatic2 = _interopRequireDefault(_BezierEdgeStatic); - var _StraightEdge = __webpack_require__(199); + var _StraightEdge = __webpack_require__(203); var _StraightEdge2 = _interopRequireDefault(_StraightEdge); @@ -38790,7 +38949,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Edge; /***/ }, -/* 193 */ +/* 197 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -38799,31 +38958,31 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _slicedToArray2 = __webpack_require__(161); + var _slicedToArray2 = __webpack_require__(165); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _CubicBezierEdgeBase2 = __webpack_require__(194); + var _CubicBezierEdgeBase2 = __webpack_require__(198); var _CubicBezierEdgeBase3 = _interopRequireDefault(_CubicBezierEdgeBase2); @@ -38949,7 +39108,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = CubicBezierEdge; /***/ }, -/* 194 */ +/* 198 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -38958,27 +39117,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _BezierEdgeBase2 = __webpack_require__(195); + var _BezierEdgeBase2 = __webpack_require__(199); var _BezierEdgeBase3 = _interopRequireDefault(_BezierEdgeBase2); @@ -39045,7 +39204,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = CubicBezierEdgeBase; /***/ }, -/* 195 */ +/* 199 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -39054,27 +39213,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _EdgeBase2 = __webpack_require__(196); + var _EdgeBase2 = __webpack_require__(200); var _EdgeBase3 = _interopRequireDefault(_EdgeBase2); @@ -39199,7 +39358,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = BezierEdgeBase; /***/ }, -/* 196 */ +/* 200 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -39208,15 +39367,15 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _slicedToArray2 = __webpack_require__(161); + var _slicedToArray2 = __webpack_require__(165); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -39778,7 +39937,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = EdgeBase; /***/ }, -/* 197 */ +/* 201 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -39787,31 +39946,31 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _slicedToArray2 = __webpack_require__(161); + var _slicedToArray2 = __webpack_require__(165); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _BezierEdgeBase2 = __webpack_require__(195); + var _BezierEdgeBase2 = __webpack_require__(199); var _BezierEdgeBase3 = _interopRequireDefault(_BezierEdgeBase2); @@ -40011,7 +40170,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = BezierEdgeDynamic; /***/ }, -/* 198 */ +/* 202 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -40020,27 +40179,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _BezierEdgeBase2 = __webpack_require__(195); + var _BezierEdgeBase2 = __webpack_require__(199); var _BezierEdgeBase3 = _interopRequireDefault(_BezierEdgeBase2); @@ -40289,7 +40448,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = BezierEdgeStatic; /***/ }, -/* 199 */ +/* 203 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -40298,27 +40457,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _EdgeBase2 = __webpack_require__(196); + var _EdgeBase2 = __webpack_require__(200); var _EdgeBase3 = _interopRequireDefault(_EdgeBase2); @@ -40409,7 +40568,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = StraightEdge; /***/ }, -/* 200 */ +/* 204 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -40422,43 +40581,43 @@ return /******/ (function(modules) { // webpackBootstrap var _keys2 = _interopRequireDefault(_keys); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _BarnesHutSolver = __webpack_require__(201); + var _BarnesHutSolver = __webpack_require__(205); var _BarnesHutSolver2 = _interopRequireDefault(_BarnesHutSolver); - var _RepulsionSolver = __webpack_require__(202); + var _RepulsionSolver = __webpack_require__(206); var _RepulsionSolver2 = _interopRequireDefault(_RepulsionSolver); - var _HierarchicalRepulsionSolver = __webpack_require__(203); + var _HierarchicalRepulsionSolver = __webpack_require__(207); var _HierarchicalRepulsionSolver2 = _interopRequireDefault(_HierarchicalRepulsionSolver); - var _SpringSolver = __webpack_require__(204); + var _SpringSolver = __webpack_require__(208); var _SpringSolver2 = _interopRequireDefault(_SpringSolver); - var _HierarchicalSpringSolver = __webpack_require__(205); + var _HierarchicalSpringSolver = __webpack_require__(209); var _HierarchicalSpringSolver2 = _interopRequireDefault(_HierarchicalSpringSolver); - var _CentralGravitySolver = __webpack_require__(206); + var _CentralGravitySolver = __webpack_require__(210); var _CentralGravitySolver2 = _interopRequireDefault(_CentralGravitySolver); - var _FA2BasedRepulsionSolver = __webpack_require__(207); + var _FA2BasedRepulsionSolver = __webpack_require__(211); var _FA2BasedRepulsionSolver2 = _interopRequireDefault(_FA2BasedRepulsionSolver); - var _FA2BasedCentralGravitySolver = __webpack_require__(208); + var _FA2BasedCentralGravitySolver = __webpack_require__(212); var _FA2BasedCentralGravitySolver2 = _interopRequireDefault(_FA2BasedCentralGravitySolver); @@ -41237,7 +41396,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = PhysicsEngine; /***/ }, -/* 201 */ +/* 205 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -41246,11 +41405,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -41756,7 +41915,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = BarnesHutSolver; /***/ }, -/* 202 */ +/* 206 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -41765,11 +41924,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -41855,7 +42014,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = RepulsionSolver; /***/ }, -/* 203 */ +/* 207 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -41864,11 +42023,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -41951,7 +42110,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = HierarchicalRepulsionSolver; /***/ }, -/* 204 */ +/* 208 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -41960,11 +42119,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -42067,7 +42226,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = SpringSolver; /***/ }, -/* 205 */ +/* 209 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -42076,11 +42235,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -42201,7 +42360,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = HierarchicalSpringSolver; /***/ }, -/* 206 */ +/* 210 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -42210,11 +42369,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -42275,7 +42434,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = CentralGravitySolver; /***/ }, -/* 207 */ +/* 211 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -42284,27 +42443,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _BarnesHutSolver2 = __webpack_require__(201); + var _BarnesHutSolver2 = __webpack_require__(205); var _BarnesHutSolver3 = _interopRequireDefault(_BarnesHutSolver2); @@ -42359,7 +42518,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = ForceAtlas2BasedRepulsionSolver; /***/ }, -/* 208 */ +/* 212 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -42368,27 +42527,27 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _CentralGravitySolver2 = __webpack_require__(206); + var _CentralGravitySolver2 = __webpack_require__(210); var _CentralGravitySolver3 = _interopRequireDefault(_CentralGravitySolver2); @@ -42425,7 +42584,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = ForceAtlas2BasedCentralGravitySolver; /***/ }, -/* 209 */ +/* 213 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -42442,19 +42601,19 @@ return /******/ (function(modules) { // webpackBootstrap var _typeof3 = _interopRequireDefault(_typeof2); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _NetworkUtil = __webpack_require__(210); + var _NetworkUtil = __webpack_require__(214); var _NetworkUtil2 = _interopRequireDefault(_NetworkUtil); - var _Cluster = __webpack_require__(211); + var _Cluster = __webpack_require__(215); var _Cluster2 = _interopRequireDefault(_Cluster); @@ -43412,7 +43571,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = ClusterEngine; /***/ }, -/* 210 */ +/* 214 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -43421,11 +43580,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -43555,7 +43714,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = NetworkUtil; /***/ }, -/* 211 */ +/* 215 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -43564,23 +43723,23 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _getPrototypeOf = __webpack_require__(166); + var _getPrototypeOf = __webpack_require__(170); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _possibleConstructorReturn2 = __webpack_require__(169); + var _possibleConstructorReturn2 = __webpack_require__(173); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - var _inherits2 = __webpack_require__(170); + var _inherits2 = __webpack_require__(174); var _inherits3 = _interopRequireDefault(_inherits2); - var _Node2 = __webpack_require__(159); + var _Node2 = __webpack_require__(163); var _Node3 = _interopRequireDefault(_Node2); @@ -43609,7 +43768,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Cluster; /***/ }, -/* 212 */ +/* 216 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -43618,11 +43777,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -43987,7 +44146,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = CanvasRenderer; /***/ }, -/* 213 */ +/* 217 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -43996,18 +44155,18 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - var Hammer = __webpack_require__(108); - var hammerUtil = __webpack_require__(121); + var Hammer = __webpack_require__(112); + var hammerUtil = __webpack_require__(125); var util = __webpack_require__(1); @@ -44462,7 +44621,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = Canvas; /***/ }, -/* 214 */ +/* 218 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -44471,15 +44630,15 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _NetworkUtil = __webpack_require__(210); + var _NetworkUtil = __webpack_require__(214); var _NetworkUtil2 = _interopRequireDefault(_NetworkUtil); @@ -44815,7 +44974,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = View; /***/ }, -/* 215 */ +/* 219 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -44824,19 +44983,19 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _NavigationHandler = __webpack_require__(216); + var _NavigationHandler = __webpack_require__(220); var _NavigationHandler2 = _interopRequireDefault(_NavigationHandler); - var _Popup = __webpack_require__(128); + var _Popup = __webpack_require__(132); var _Popup2 = _interopRequireDefault(_Popup); @@ -45217,29 +45376,27 @@ return /******/ (function(modules) { // webpackBootstrap var selection = this.drag.selection; if (selection && selection.length && this.options.dragNodes === true) { - (function () { - _this2.selectionHandler._generateClickEvent('dragging', event, pointer); - - // calculate delta's and new location - var deltaX = pointer.x - _this2.drag.pointer.x; - var deltaY = pointer.y - _this2.drag.pointer.y; - - // update position of all selected nodes - selection.forEach(function (selection) { - var node = selection.node; - // only move the node if it was not fixed initially - if (selection.xFixed === false) { - node.x = _this2.canvas._XconvertDOMtoCanvas(_this2.canvas._XconvertCanvasToDOM(selection.x) + deltaX); - } - // only move the node if it was not fixed initially - if (selection.yFixed === false) { - node.y = _this2.canvas._YconvertDOMtoCanvas(_this2.canvas._YconvertCanvasToDOM(selection.y) + deltaY); - } - }); + this.selectionHandler._generateClickEvent('dragging', event, pointer); + + // calculate delta's and new location + var deltaX = pointer.x - this.drag.pointer.x; + var deltaY = pointer.y - this.drag.pointer.y; + + // update position of all selected nodes + selection.forEach(function (selection) { + var node = selection.node; + // only move the node if it was not fixed initially + if (selection.xFixed === false) { + node.x = _this2.canvas._XconvertDOMtoCanvas(_this2.canvas._XconvertCanvasToDOM(selection.x) + deltaX); + } + // only move the node if it was not fixed initially + if (selection.yFixed === false) { + node.y = _this2.canvas._YconvertDOMtoCanvas(_this2.canvas._YconvertCanvasToDOM(selection.y) + deltaY); + } + }); - // start the simulation of the physics - _this2.body.emitter.emit('startSimulation'); - })(); + // start the simulation of the physics + this.body.emitter.emit('startSimulation'); } else { // move the network if (this.options.dragView === true) { @@ -45605,7 +45762,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = InteractionHandler; /***/ }, -/* 216 */ +/* 220 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -45614,20 +45771,20 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var Hammer = __webpack_require__(108); - var hammerUtil = __webpack_require__(121); - var keycharm = __webpack_require__(111); + var Hammer = __webpack_require__(112); + var hammerUtil = __webpack_require__(125); + var keycharm = __webpack_require__(115); var NavigationHandler = function () { function NavigationHandler(body, canvas) { @@ -45955,7 +46112,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = NavigationHandler; /***/ }, -/* 217 */ +/* 221 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -45964,19 +46121,19 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _Node = __webpack_require__(159); + var _Node = __webpack_require__(163); var _Node2 = _interopRequireDefault(_Node); - var _Edge = __webpack_require__(192); + var _Edge = __webpack_require__(196); var _Edge2 = _interopRequireDefault(_Edge); @@ -46769,7 +46926,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = SelectionHandler; /***/ }, -/* 218 */ +/* 222 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -46782,7 +46939,7 @@ return /******/ (function(modules) { // webpackBootstrap var _keys2 = _interopRequireDefault(_keys); - var _slicedToArray2 = __webpack_require__(161); + var _slicedToArray2 = __webpack_require__(165); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); @@ -46790,15 +46947,15 @@ return /******/ (function(modules) { // webpackBootstrap var _typeof3 = _interopRequireDefault(_typeof2); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _NetworkUtil = __webpack_require__(210); + var _NetworkUtil = __webpack_require__(214); var _NetworkUtil2 = _interopRequireDefault(_NetworkUtil); @@ -47143,7 +47300,6 @@ return /******/ (function(modules) { // webpackBootstrap // if the user defined some levels but not all, alert and run without hierarchical layout if (undefinedLevel === true && definedLevel === true) { throw new Error('To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.'); - return; } else { // define levels if undefined by the users. Based on hubsize. if (undefinedLevel === true) { @@ -47246,6 +47402,9 @@ return /******/ (function(modules) { // webpackBootstrap // get a map of all nodes in this branch var getBranchNodes = function getBranchNodes(source, map) { + if (map[source.id]) { + return; + } map[source.id] = true; if (_this2.hierarchicalChildrenReference[source.id]) { var children = _this2.hierarchicalChildrenReference[source.id]; @@ -47295,16 +47454,24 @@ return /******/ (function(modules) { // webpackBootstrap // get the maximum level of a branch. var getMaxLevel = function getMaxLevel(nodeId) { - var level = _this2.hierarchicalLevels[nodeId]; - if (_this2.hierarchicalChildrenReference[nodeId]) { - var children = _this2.hierarchicalChildrenReference[nodeId]; - if (children.length > 0) { - for (var i = 0; i < children.length; i++) { - level = Math.max(level, getMaxLevel(children[i])); + var accumulator = {}; + var _getMaxLevel = function _getMaxLevel(nodeId) { + if (accumulator[nodeId] !== undefined) { + return accumulator[nodeId]; + } + var level = _this2.hierarchicalLevels[nodeId]; + if (_this2.hierarchicalChildrenReference[nodeId]) { + var children = _this2.hierarchicalChildrenReference[nodeId]; + if (children.length > 0) { + for (var i = 0; i < children.length; i++) { + level = Math.max(level, _getMaxLevel(children[i])); + } } } - } - return level; + accumulator[nodeId] = level; + return level; + }; + return _getMaxLevel(nodeId); }; // check what the maximum level is these nodes have in common. @@ -47359,8 +47526,8 @@ return /******/ (function(modules) { // webpackBootstrap var diffAbs = Math.abs(pos2 - pos1); //console.log("NOW CHEcKING:", node1.id, node2.id, diffAbs); if (diffAbs > _this2.options.hierarchical.nodeSpacing) { - var branchNodes1 = {};branchNodes1[node1.id] = true; - var branchNodes2 = {};branchNodes2[node2.id] = true; + var branchNodes1 = {}; + var branchNodes2 = {}; getBranchNodes(node1, branchNodes1); getBranchNodes(node2, branchNodes2); @@ -47478,7 +47645,6 @@ return /******/ (function(modules) { // webpackBootstrap // check movable area of the branch if (branches[node.id] === undefined) { var branchNodes = {}; - branchNodes[node.id] = true; getBranchNodes(node, branchNodes); branches[node.id] = branchNodes; } @@ -48134,16 +48300,26 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_shiftBlock', value: function _shiftBlock(parentId, diff) { - if (this.options.hierarchical.direction === 'UD' || this.options.hierarchical.direction === 'DU') { - this.body.nodes[parentId].x += diff; - } else { - this.body.nodes[parentId].y += diff; - } - if (this.hierarchicalChildrenReference[parentId] !== undefined) { - for (var i = 0; i < this.hierarchicalChildrenReference[parentId].length; i++) { - this._shiftBlock(this.hierarchicalChildrenReference[parentId][i], diff); + var _this8 = this; + + var progress = {}; + var shifter = function shifter(parentId) { + if (progress[parentId]) { + return; } - } + progress[parentId] = true; + if (_this8.options.hierarchical.direction === 'UD' || _this8.options.hierarchical.direction === 'DU') { + _this8.body.nodes[parentId].x += diff; + } else { + _this8.body.nodes[parentId].y += diff; + } + if (_this8.hierarchicalChildrenReference[parentId] !== undefined) { + for (var i = 0; i < _this8.hierarchicalChildrenReference[parentId].length; i++) { + shifter(_this8.hierarchicalChildrenReference[parentId][i]); + } + } + }; + shifter(parentId); } /** @@ -48157,22 +48333,22 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_findCommonParent', value: function _findCommonParent(childA, childB) { - var _this8 = this; + var _this9 = this; var parents = {}; var iterateParents = function iterateParents(parents, child) { - if (_this8.hierarchicalParentReference[child] !== undefined) { - for (var i = 0; i < _this8.hierarchicalParentReference[child].length; i++) { - var parent = _this8.hierarchicalParentReference[child][i]; + if (_this9.hierarchicalParentReference[child] !== undefined) { + for (var i = 0; i < _this9.hierarchicalParentReference[child].length; i++) { + var parent = _this9.hierarchicalParentReference[child][i]; parents[parent] = true; iterateParents(parents, parent); } } }; var findParent = function findParent(parents, child) { - if (_this8.hierarchicalParentReference[child] !== undefined) { - for (var i = 0; i < _this8.hierarchicalParentReference[child].length; i++) { - var parent = _this8.hierarchicalParentReference[child][i]; + if (_this9.hierarchicalParentReference[child] !== undefined) { + for (var i = 0; i < _this9.hierarchicalParentReference[child].length; i++) { + var parent = _this9.hierarchicalParentReference[child][i]; if (parents[parent] !== undefined) { return { foundParent: parent, withChild: child }; } @@ -48268,7 +48444,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = LayoutEngine; /***/ }, -/* 219 */ +/* 223 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -48281,7 +48457,7 @@ return /******/ (function(modules) { // webpackBootstrap var _keys2 = _interopRequireDefault(_keys); - var _stringify = __webpack_require__(82); + var _stringify = __webpack_require__(90); var _stringify2 = _interopRequireDefault(_stringify); @@ -48289,19 +48465,19 @@ return /******/ (function(modules) { // webpackBootstrap var _typeof3 = _interopRequireDefault(_typeof2); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var util = __webpack_require__(1); - var Hammer = __webpack_require__(108); - var hammerUtil = __webpack_require__(121); + var Hammer = __webpack_require__(112); + var hammerUtil = __webpack_require__(125); /** * clears the toolbar div element of children @@ -48660,8 +48836,6 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'editEdgeMode', value: function editEdgeMode() { - var _this3 = this; - // when using the gui, enable edit mode if it wasn't already. if (this.editMode !== true) { this.enableEditMode(); @@ -48692,46 +48866,44 @@ return /******/ (function(modules) { // webpackBootstrap this.edgeBeingEditedId = this.selectionHandler.getSelectedEdges()[0]; if (this.edgeBeingEditedId !== undefined) { - (function () { - var edge = _this3.body.edges[_this3.edgeBeingEditedId]; - - // create control nodes - var controlNodeFrom = _this3._getNewTargetNode(edge.from.x, edge.from.y); - var controlNodeTo = _this3._getNewTargetNode(edge.to.x, edge.to.y); - - _this3.temporaryIds.nodes.push(controlNodeFrom.id); - _this3.temporaryIds.nodes.push(controlNodeTo.id); - - _this3.body.nodes[controlNodeFrom.id] = controlNodeFrom; - _this3.body.nodeIndices.push(controlNodeFrom.id); - _this3.body.nodes[controlNodeTo.id] = controlNodeTo; - _this3.body.nodeIndices.push(controlNodeTo.id); - - // temporarily overload UI functions, cleaned up automatically because of _temporaryBindUI - _this3._temporaryBindUI('onTouch', _this3._controlNodeTouch.bind(_this3)); // used to get the position - _this3._temporaryBindUI('onTap', function () {}); // disabled - _this3._temporaryBindUI('onHold', function () {}); // disabled - _this3._temporaryBindUI('onDragStart', _this3._controlNodeDragStart.bind(_this3)); // used to select control node - _this3._temporaryBindUI('onDrag', _this3._controlNodeDrag.bind(_this3)); // used to drag control node - _this3._temporaryBindUI('onDragEnd', _this3._controlNodeDragEnd.bind(_this3)); // used to connect or revert control nodes - _this3._temporaryBindUI('onMouseMove', function () {}); // disabled - - // create function to position control nodes correctly on movement - // automatically cleaned up because we use the temporary bind - _this3._temporaryBindEvent('beforeDrawing', function (ctx) { - var positions = edge.edgeType.findBorderPositions(ctx); - if (controlNodeFrom.selected === false) { - controlNodeFrom.x = positions.from.x; - controlNodeFrom.y = positions.from.y; - } - if (controlNodeTo.selected === false) { - controlNodeTo.x = positions.to.x; - controlNodeTo.y = positions.to.y; - } - }); + var _edge = this.body.edges[this.edgeBeingEditedId]; + + // create control nodes + var controlNodeFrom = this._getNewTargetNode(_edge.from.x, _edge.from.y); + var controlNodeTo = this._getNewTargetNode(_edge.to.x, _edge.to.y); + + this.temporaryIds.nodes.push(controlNodeFrom.id); + this.temporaryIds.nodes.push(controlNodeTo.id); + + this.body.nodes[controlNodeFrom.id] = controlNodeFrom; + this.body.nodeIndices.push(controlNodeFrom.id); + this.body.nodes[controlNodeTo.id] = controlNodeTo; + this.body.nodeIndices.push(controlNodeTo.id); + + // temporarily overload UI functions, cleaned up automatically because of _temporaryBindUI + this._temporaryBindUI('onTouch', this._controlNodeTouch.bind(this)); // used to get the position + this._temporaryBindUI('onTap', function () {}); // disabled + this._temporaryBindUI('onHold', function () {}); // disabled + this._temporaryBindUI('onDragStart', this._controlNodeDragStart.bind(this)); // used to select control node + this._temporaryBindUI('onDrag', this._controlNodeDrag.bind(this)); // used to drag control node + this._temporaryBindUI('onDragEnd', this._controlNodeDragEnd.bind(this)); // used to connect or revert control nodes + this._temporaryBindUI('onMouseMove', function () {}); // disabled + + // create function to position control nodes correctly on movement + // automatically cleaned up because we use the temporary bind + this._temporaryBindEvent('beforeDrawing', function (ctx) { + var positions = _edge.edgeType.findBorderPositions(ctx); + if (controlNodeFrom.selected === false) { + controlNodeFrom.x = positions.from.x; + controlNodeFrom.y = positions.from.y; + } + if (controlNodeTo.selected === false) { + controlNodeTo.x = positions.to.x; + controlNodeTo.y = positions.to.y; + } + }); - _this3.body.emitter.emit('_redraw'); - })(); + this.body.emitter.emit('_redraw'); } else { this.showManipulatorToolbar(); } @@ -48744,7 +48916,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'deleteSelected', value: function deleteSelected() { - var _this4 = this; + var _this3 = this; // when using the gui, enable edit mode if it wasnt already. if (this.editMode !== true) { @@ -48779,15 +48951,15 @@ return /******/ (function(modules) { // webpackBootstrap var data = { nodes: selectedNodes, edges: selectedEdges }; if (deleteFunction.length === 2) { deleteFunction(data, function (finalizedData) { - if (finalizedData !== null && finalizedData !== undefined && _this4.inMode === 'delete') { + if (finalizedData !== null && finalizedData !== undefined && _this3.inMode === 'delete') { // if for whatever reason the mode has changes (due to dataset change) disregard the callback) { - _this4.body.data.edges.getDataSet().remove(finalizedData.edges); - _this4.body.data.nodes.getDataSet().remove(finalizedData.nodes); - _this4.body.emitter.emit('startSimulation'); - _this4.showManipulatorToolbar(); + _this3.body.data.edges.getDataSet().remove(finalizedData.edges); + _this3.body.data.nodes.getDataSet().remove(finalizedData.nodes); + _this3.body.emitter.emit('startSimulation'); + _this3.showManipulatorToolbar(); } else { - _this4.body.emitter.emit('startSimulation'); - _this4.showManipulatorToolbar(); + _this3.body.emitter.emit('startSimulation'); + _this3.showManipulatorToolbar(); } }); } else { @@ -49448,7 +49620,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_performAddNode', value: function _performAddNode(clickData) { - var _this5 = this; + var _this4 = this; var defaultData = { id: util.randomUUID(), @@ -49460,10 +49632,10 @@ return /******/ (function(modules) { // webpackBootstrap if (typeof this.options.addNode === 'function') { if (this.options.addNode.length === 2) { this.options.addNode(defaultData, function (finalizedData) { - if (finalizedData !== null && finalizedData !== undefined && _this5.inMode === 'addNode') { + if (finalizedData !== null && finalizedData !== undefined && _this4.inMode === 'addNode') { // if for whatever reason the mode has changes (due to dataset change) disregard the callback - _this5.body.data.nodes.getDataSet().add(finalizedData); - _this5.showManipulatorToolbar(); + _this4.body.data.nodes.getDataSet().add(finalizedData); + _this4.showManipulatorToolbar(); } }); } else { @@ -49485,17 +49657,17 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_performAddEdge', value: function _performAddEdge(sourceNodeId, targetNodeId) { - var _this6 = this; + var _this5 = this; var defaultData = { from: sourceNodeId, to: targetNodeId }; if (typeof this.options.addEdge === 'function') { if (this.options.addEdge.length === 2) { this.options.addEdge(defaultData, function (finalizedData) { - if (finalizedData !== null && finalizedData !== undefined && _this6.inMode === 'addEdge') { + if (finalizedData !== null && finalizedData !== undefined && _this5.inMode === 'addEdge') { // if for whatever reason the mode has changes (due to dataset change) disregard the callback - _this6.body.data.edges.getDataSet().add(finalizedData); - _this6.selectionHandler.unselectAll(); - _this6.showManipulatorToolbar(); + _this5.body.data.edges.getDataSet().add(finalizedData); + _this5.selectionHandler.unselectAll(); + _this5.showManipulatorToolbar(); } }); } else { @@ -49517,7 +49689,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: '_performEditEdge', value: function _performEditEdge(sourceNodeId, targetNodeId) { - var _this7 = this; + var _this6 = this; var defaultData = { id: this.edgeBeingEditedId, from: sourceNodeId, to: targetNodeId, label: this.body.data.edges._data[this.edgeBeingEditedId].label }; var eeFunct = this.options.editEdge; @@ -49527,15 +49699,15 @@ return /******/ (function(modules) { // webpackBootstrap if (typeof eeFunct === 'function') { if (eeFunct.length === 2) { eeFunct(defaultData, function (finalizedData) { - if (finalizedData === null || finalizedData === undefined || _this7.inMode !== 'editEdge') { + if (finalizedData === null || finalizedData === undefined || _this6.inMode !== 'editEdge') { // if for whatever reason the mode has changes (due to dataset change) disregard the callback) { - _this7.body.edges[defaultData.id].updateEdgeType(); - _this7.body.emitter.emit('_redraw'); - _this7.showManipulatorToolbar(); + _this6.body.edges[defaultData.id].updateEdgeType(); + _this6.body.emitter.emit('_redraw'); + _this6.showManipulatorToolbar(); } else { - _this7.body.data.edges.getDataSet().update(finalizedData); - _this7.selectionHandler.unselectAll(); - _this7.showManipulatorToolbar(); + _this6.body.data.edges.getDataSet().update(finalizedData); + _this6.selectionHandler.unselectAll(); + _this6.showManipulatorToolbar(); } }); } else { @@ -49554,7 +49726,7 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = ManipulationSystem; /***/ }, -/* 220 */ +/* 224 */ /***/ function(module, exports) { 'use strict'; @@ -49843,7 +50015,11 @@ return /******/ (function(modules) { // webpackBootstrap __type__: { object: object } }, id: { string: string, number: number }, - image: { string: string, 'undefined': 'undefined' }, // --> URL + image: { + selected: { string: string, 'undefined': 'undefined' }, // --> URL + unselected: { string: string, 'undefined': 'undefined' }, // --> URL + __type__: { object: object, string: string } + }, label: { string: string, 'undefined': 'undefined' }, labelHighlightBold: { boolean: bool }, level: { number: number, 'undefined': 'undefined' }, @@ -50172,7 +50348,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.configureOptions = configureOptions; /***/ }, -/* 221 */ +/* 225 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -50181,19 +50357,19 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _slicedToArray2 = __webpack_require__(161); + var _slicedToArray2 = __webpack_require__(165); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); - var _FloydWarshall = __webpack_require__(222); + var _FloydWarshall = __webpack_require__(226); var _FloydWarshall2 = _interopRequireDefault(_FloydWarshall); @@ -50465,7 +50641,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = KamadaKawai; /***/ }, -/* 222 */ +/* 226 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -50474,11 +50650,11 @@ return /******/ (function(modules) { // webpackBootstrap value: true }); - var _classCallCheck2 = __webpack_require__(115); + var _classCallCheck2 = __webpack_require__(119); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - var _createClass2 = __webpack_require__(116); + var _createClass2 = __webpack_require__(120); var _createClass3 = _interopRequireDefault(_createClass2); @@ -50540,7 +50716,7 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = FloydWarshall; /***/ }, -/* 223 */ +/* 227 */ /***/ function(module, exports) { 'use strict'; @@ -50838,7 +51014,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }, -/* 224 */ +/* 228 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -51742,7 +51918,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.DOTToGraph = DOTToGraph; /***/ }, -/* 225 */ +/* 229 */ /***/ function(module, exports) { 'use strict'; @@ -51820,7 +51996,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.parseGephi = parseGephi; /***/ }, -/* 226 */ +/* 230 */ /***/ function(module, exports) { 'use strict'; diff --git a/dist/vis.js.map b/dist/vis.js.map new file mode 100644 index 00000000..0c90cb78 --- /dev/null +++ b/dist/vis.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap eca1787db4da1a54ed82","webpack:///./index.js","webpack:///./lib/util.js","webpack:///./~/babel-runtime/core-js/get-iterator.js","webpack:///./~/core-js/library/fn/get-iterator.js","webpack:///./~/core-js/library/modules/web.dom.iterable.js","webpack:///./~/core-js/library/modules/es6.array.iterator.js","webpack:///./~/core-js/library/modules/_add-to-unscopables.js","webpack:///./~/core-js/library/modules/_iter-step.js","webpack:///./~/core-js/library/modules/_iterators.js","webpack:///./~/core-js/library/modules/_to-iobject.js","webpack:///./~/core-js/library/modules/_iobject.js","webpack:///./~/core-js/library/modules/_cof.js","webpack:///./~/core-js/library/modules/_defined.js","webpack:///./~/core-js/library/modules/_iter-define.js","webpack:///./~/core-js/library/modules/_library.js","webpack:///./~/core-js/library/modules/_export.js","webpack:///./~/core-js/library/modules/_global.js","webpack:///./~/core-js/library/modules/_core.js","webpack:///./~/core-js/library/modules/_ctx.js","webpack:///./~/core-js/library/modules/_a-function.js","webpack:///./~/core-js/library/modules/_hide.js","webpack:///./~/core-js/library/modules/_object-dp.js","webpack:///./~/core-js/library/modules/_an-object.js","webpack:///./~/core-js/library/modules/_is-object.js","webpack:///./~/core-js/library/modules/_ie8-dom-define.js","webpack:///./~/core-js/library/modules/_descriptors.js","webpack:///./~/core-js/library/modules/_fails.js","webpack:///./~/core-js/library/modules/_dom-create.js","webpack:///./~/core-js/library/modules/_to-primitive.js","webpack:///./~/core-js/library/modules/_property-desc.js","webpack:///./~/core-js/library/modules/_redefine.js","webpack:///./~/core-js/library/modules/_has.js","webpack:///./~/core-js/library/modules/_iter-create.js","webpack:///./~/core-js/library/modules/_object-create.js","webpack:///./~/core-js/library/modules/_object-dps.js","webpack:///./~/core-js/library/modules/_object-keys.js","webpack:///./~/core-js/library/modules/_object-keys-internal.js","webpack:///./~/core-js/library/modules/_array-includes.js","webpack:///./~/core-js/library/modules/_to-length.js","webpack:///./~/core-js/library/modules/_to-integer.js","webpack:///./~/core-js/library/modules/_to-index.js","webpack:///./~/core-js/library/modules/_shared-key.js","webpack:///./~/core-js/library/modules/_shared.js","webpack:///./~/core-js/library/modules/_uid.js","webpack:///./~/core-js/library/modules/_enum-bug-keys.js","webpack:///./~/core-js/library/modules/_html.js","webpack:///./~/core-js/library/modules/_set-to-string-tag.js","webpack:///./~/core-js/library/modules/_wks.js","webpack:///./~/core-js/library/modules/_object-gpo.js","webpack:///./~/core-js/library/modules/_to-object.js","webpack:///./~/core-js/library/modules/es6.string.iterator.js","webpack:///./~/core-js/library/modules/_string-at.js","webpack:///./~/core-js/library/modules/core.get-iterator.js","webpack:///./~/core-js/library/modules/core.get-iterator-method.js","webpack:///./~/core-js/library/modules/_classof.js","webpack:///./~/babel-runtime/core-js/object/create.js","webpack:///./~/core-js/library/fn/object/create.js","webpack:///./~/core-js/library/modules/es6.object.create.js","webpack:///./~/babel-runtime/core-js/object/keys.js","webpack:///./~/core-js/library/fn/object/keys.js","webpack:///./~/core-js/library/modules/es6.object.keys.js","webpack:///./~/core-js/library/modules/_object-sap.js","webpack:///./~/babel-runtime/helpers/typeof.js","webpack:///./~/babel-runtime/core-js/symbol/iterator.js","webpack:///./~/core-js/library/fn/symbol/iterator.js","webpack:///./~/core-js/library/modules/_wks-ext.js","webpack:///./~/babel-runtime/core-js/symbol.js","webpack:///./~/core-js/library/fn/symbol/index.js","webpack:///./~/core-js/library/modules/es6.symbol.js","webpack:///./~/core-js/library/modules/_meta.js","webpack:///./~/core-js/library/modules/_wks-define.js","webpack:///./~/core-js/library/modules/_keyof.js","webpack:///./~/core-js/library/modules/_enum-keys.js","webpack:///./~/core-js/library/modules/_object-gops.js","webpack:///./~/core-js/library/modules/_object-pie.js","webpack:///./~/core-js/library/modules/_is-array.js","webpack:///./~/core-js/library/modules/_object-gopn-ext.js","webpack:///./~/core-js/library/modules/_object-gopn.js","webpack:///./~/core-js/library/modules/_object-gopd.js","webpack:///./~/core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./~/core-js/library/modules/es7.symbol.observable.js","webpack:///./~/babel-runtime/core-js/json/stringify.js","webpack:///./~/core-js/library/fn/json/stringify.js","webpack:///./lib/module/moment.js","webpack:///./~/moment/moment.js","webpack:///(webpack)/buildin/module.js","webpack:///./~/moment/locale ^\\.\\/$^$","webpack:///./lib/module/uuid.js","webpack:///./index-graph3d.js","webpack:///./lib/DOMutil.js","webpack:///./lib/DataSet.js","webpack:///./lib/Queue.js","webpack:///./lib/DataView.js","webpack:///./lib/graph3d/Graph3d.js","webpack:///./~/emitter-component/index.js","webpack:///./lib/graph3d/Point3d.js","webpack:///./lib/graph3d/Point2d.js","webpack:///./lib/graph3d/Camera.js","webpack:///./~/babel-runtime/core-js/math/sign.js","webpack:///./~/core-js/library/fn/math/sign.js","webpack:///./~/core-js/library/modules/es6.math.sign.js","webpack:///./~/core-js/library/modules/_math-sign.js","webpack:///./lib/graph3d/Filter.js","webpack:///./lib/graph3d/Slider.js","webpack:///./lib/graph3d/StepNumber.js","webpack:///./lib/graph3d/Range.js","webpack:///./lib/graph3d/Settings.js","webpack:///./lib/module/hammer.js","webpack:///./~/propagating-hammerjs/propagating.js","webpack:///./~/hammerjs/hammer.js","webpack:///./~/keycharm/keycharm.js","webpack:///./index-timeline-graph2d.js","webpack:///./lib/timeline/Timeline.js","webpack:///./lib/shared/Configurator.js","webpack:///./~/babel-runtime/helpers/classCallCheck.js","webpack:///./~/babel-runtime/helpers/createClass.js","webpack:///./~/babel-runtime/core-js/object/define-property.js","webpack:///./~/core-js/library/fn/object/define-property.js","webpack:///./~/core-js/library/modules/es6.object.define-property.js","webpack:///./lib/shared/ColorPicker.js","webpack:///./lib/hammerUtil.js","webpack:///./lib/shared/Validator.js","webpack:///./lib/timeline/Range.js","webpack:///./lib/timeline/component/Component.js","webpack:///./lib/timeline/DateUtil.js","webpack:///./lib/timeline/Core.js","webpack:///./lib/timeline/component/ItemSet.js","webpack:///./lib/shared/Popup.js","webpack:///./lib/timeline/TimeStep.js","webpack:///./lib/timeline/component/Group.js","webpack:///./lib/timeline/Stack.js","webpack:///./lib/timeline/component/item/RangeItem.js","webpack:///./lib/timeline/component/item/Item.js","webpack:///./lib/timeline/component/BackgroundGroup.js","webpack:///./lib/timeline/component/item/BoxItem.js","webpack:///./lib/timeline/component/item/PointItem.js","webpack:///./lib/timeline/component/item/BackgroundItem.js","webpack:///./lib/timeline/component/TimeAxis.js","webpack:///./lib/shared/Activator.js","webpack:///./lib/timeline/component/CustomTime.js","webpack:///./lib/timeline/locales.js","webpack:///./lib/timeline/component/CurrentTime.js","webpack:///./lib/timeline/optionsTimeline.js","webpack:///./lib/timeline/Graph2d.js","webpack:///./lib/timeline/component/LineGraph.js","webpack:///./lib/timeline/component/DataAxis.js","webpack:///./lib/timeline/component/DataScale.js","webpack:///./lib/timeline/component/GraphGroup.js","webpack:///./lib/timeline/component/graph2d_types/bar.js","webpack:///./lib/timeline/component/graph2d_types/points.js","webpack:///./lib/timeline/component/graph2d_types/line.js","webpack:///./lib/timeline/component/Legend.js","webpack:///./lib/timeline/optionsGraph2d.js","webpack:///./index-network.js","webpack:///./lib/network/Network.js","webpack:///./lib/network/Images.js","webpack:///./lib/network/modules/Groups.js","webpack:///./lib/network/modules/NodesHandler.js","webpack:///./lib/network/modules/components/Node.js","webpack:///./lib/network/modules/components/shared/Label.js","webpack:///./~/babel-runtime/helpers/slicedToArray.js","webpack:///./~/babel-runtime/core-js/is-iterable.js","webpack:///./~/core-js/library/fn/is-iterable.js","webpack:///./~/core-js/library/modules/core.is-iterable.js","webpack:///./lib/network/modules/components/nodes/shapes/Box.js","webpack:///./~/babel-runtime/core-js/object/get-prototype-of.js","webpack:///./~/core-js/library/fn/object/get-prototype-of.js","webpack:///./~/core-js/library/modules/es6.object.get-prototype-of.js","webpack:///./~/babel-runtime/helpers/possibleConstructorReturn.js","webpack:///./~/babel-runtime/helpers/inherits.js","webpack:///./~/babel-runtime/core-js/object/set-prototype-of.js","webpack:///./~/core-js/library/fn/object/set-prototype-of.js","webpack:///./~/core-js/library/modules/es6.object.set-prototype-of.js","webpack:///./~/core-js/library/modules/_set-proto.js","webpack:///./lib/network/modules/components/nodes/util/NodeBase.js","webpack:///./lib/network/modules/components/nodes/shapes/Circle.js","webpack:///./lib/network/modules/components/nodes/util/CircleImageBase.js","webpack:///./lib/network/modules/components/nodes/shapes/CircularImage.js","webpack:///./lib/network/modules/components/nodes/shapes/Database.js","webpack:///./lib/network/modules/components/nodes/shapes/Diamond.js","webpack:///./lib/network/modules/components/nodes/util/ShapeBase.js","webpack:///./lib/network/modules/components/nodes/shapes/Dot.js","webpack:///./lib/network/modules/components/nodes/shapes/Ellipse.js","webpack:///./lib/network/modules/components/nodes/shapes/Icon.js","webpack:///./lib/network/modules/components/nodes/shapes/Image.js","webpack:///./lib/network/modules/components/nodes/shapes/Square.js","webpack:///./lib/network/modules/components/nodes/shapes/Star.js","webpack:///./lib/network/modules/components/nodes/shapes/Text.js","webpack:///./lib/network/modules/components/nodes/shapes/Triangle.js","webpack:///./lib/network/modules/components/nodes/shapes/TriangleDown.js","webpack:///./lib/network/modules/EdgesHandler.js","webpack:///./lib/network/modules/components/Edge.js","webpack:///./lib/network/modules/components/edges/CubicBezierEdge.js","webpack:///./lib/network/modules/components/edges/util/CubicBezierEdgeBase.js","webpack:///./lib/network/modules/components/edges/util/BezierEdgeBase.js","webpack:///./lib/network/modules/components/edges/util/EdgeBase.js","webpack:///./lib/network/modules/components/edges/BezierEdgeDynamic.js","webpack:///./lib/network/modules/components/edges/BezierEdgeStatic.js","webpack:///./lib/network/modules/components/edges/StraightEdge.js","webpack:///./lib/network/modules/PhysicsEngine.js","webpack:///./lib/network/modules/components/physics/BarnesHutSolver.js","webpack:///./lib/network/modules/components/physics/RepulsionSolver.js","webpack:///./lib/network/modules/components/physics/HierarchicalRepulsionSolver.js","webpack:///./lib/network/modules/components/physics/SpringSolver.js","webpack:///./lib/network/modules/components/physics/HierarchicalSpringSolver.js","webpack:///./lib/network/modules/components/physics/CentralGravitySolver.js","webpack:///./lib/network/modules/components/physics/FA2BasedRepulsionSolver.js","webpack:///./lib/network/modules/components/physics/FA2BasedCentralGravitySolver.js","webpack:///./lib/network/modules/Clustering.js","webpack:///./lib/network/NetworkUtil.js","webpack:///./lib/network/modules/components/nodes/Cluster.js","webpack:///./lib/network/modules/CanvasRenderer.js","webpack:///./lib/network/modules/Canvas.js","webpack:///./lib/network/modules/View.js","webpack:///./lib/network/modules/InteractionHandler.js","webpack:///./lib/network/modules/components/NavigationHandler.js","webpack:///./lib/network/modules/SelectionHandler.js","webpack:///./lib/network/modules/LayoutEngine.js","webpack:///./lib/network/modules/ManipulationSystem.js","webpack:///./lib/network/options.js","webpack:///./lib/network/modules/KamadaKawai.js","webpack:///./lib/network/modules/components/algorithms/FloydWarshall.js","webpack:///./lib/network/shapes.js","webpack:///./lib/network/dotparser.js","webpack:///./lib/network/gephiParser.js","webpack:///./lib/network/locales.js"],"names":["util","require","extend","exports","moment","uuid","isNumber","object","Number","elementsCensor","replacer","key","value","Element","JSON","parse","recursiveDOMDelete","DOMobject","hasChildNodes","firstChild","removeChild","giveRange","min","max","total","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","randomUUID","v4","assignAllKeys","obj","prop","hasOwnProperty","fillIfDefined","a","b","allowDeletion","undefined","protoExtend","i","arguments","length","other","selectiveExtend","props","Array","isArray","Error","p","selectiveDeepExtend","TypeError","constructor","Object","deepExtend","selectiveNotDeepExtend","indexOf","push","equalArray","len","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","format","copyAndExtendArray","arr","newValue","newArr","copyArray","getAbsoluteLeft","elem","getBoundingClientRect","left","getAbsoluteRight","right","getAbsoluteTop","top","addClassName","className","classes","split","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","throttle","fn","scheduled","throttled","requestAnimationFrame","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","window","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","m","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","toString","slice","parseColor","c","isValidRGB","map","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","floor","f","q","t","isOk","test","isValidRGBA","rgba","selectiveBridgeObject","fields","referenceObject","objectTo","bridgeObject","insertSort","compare","k","j","mergeOptions","mergeTarget","options","globalOptions","enabled","binarySearchCustom","orderedItems","comparator","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easingFunctions","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","getScrollBarWidth","inner","document","createElement","width","height","outer","position","visibility","overflow","appendChild","body","w1","offsetWidth","w2","clientWidth","topMost","pile","accessors","candidate","member","module","_rng","globalVar","global","crypto","getRandomValues","_rnds8","Uint8Array","whatwgRNG","_rnds","random","_byteToHex","_hexToByte","buf","offset","ii","toLowerCase","oct","unparse","bth","_seedBytes","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v1","clockseq","msecs","getTime","nsecs","dt","tl","tmh","node","n","rnds","rng","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Hammer","keycharm","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","resetElements","getSVGElement","svgContainer","shift","createElementNS","getDOMElement","DOMContainer","insertBefore","drawPoint","x","y","groupTemplate","labelObj","point","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","id","me","_addItem","items","update","updatedIds","oldData","updatedData","addOrUpdate","oldItem","_updateItem","console","warn","get","args","ids","firstType","returnType","allowedValues","itemIds","itemId","_getItem","order","_sort","_filterFields","resultant","getIds","getDataSet","mappedItems","filteredItem","itemFields","name","sort","av","bv","remove","removedIds","removedItems","_remove","ident","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","context","entry","clearTimeout","setTimeout","apply","_ids","_onEvent","setData","refresh","oldIds","newIds","viewOptions","getArguments","defaultFilter","dataSet","oldItems","updatedItems","Emitter","Range","Settings","STYLE","autoByDefault","DEFAULTS","filterLabel","legendLabel","xLabel","yLabel","zLabel","xValueLabel","yValueLabel","zValueLabel","showGrid","showPerspective","showShadow","keepAspectRatio","verticalRatio","dotSizeRatio","showAnimationControls","animationInterval","animationPreload","animationAutoStart","axisColor","gridColor","xCenter","yCenter","DOT","tooltip","showLegend","backgroundColor","dataColor","fill","stroke","strokeWidth","cameraPosition","horizontal","vertical","distance","xBarWidth","yBarWidth","valueMin","valueMax","xMin","xMax","xStep","yMin","yMax","yStep","zMin","zMax","zStep","container","SyntaxError","containerElement","dataTable","dataPoints","create","setDefaults","colX","colY","colZ","colValue","colFilter","_setScale","xRange","range","yRange","zRange","z","valueRange","center","zCenter","camera","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","cameraLocation","getCameraLocation","cameraRotation","getCameraRotation","ax","ay","az","cx","cy","cz","sinTx","sin","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","ex","eye","ey","ez","bx","by","getArmLength","currentXCenter","frame","canvas","currentYCenter","_calcTranslations","points","trans","screen","transBottom","bottom","dist","sortDepth","getNumberOfRows","getNumberOfColumns","counter","column","getDistinctValues","distinctValues","getColumnRange","adjust","_checkValueField","hasValueField","BARCOLOR","BARSIZE","DOTCOLOR","DOTSIZE","_setRangeDefaults","defaultMin","defaultMax","_dataInitialize","rawData","_onChange","withBars","BAR","defaultXBarWidth","dataX","defaultYBarWidth","dataY","NUMSTEPS","expand","defaultXMin","defaultXMax","defaultXStep","defaultYMin","defaultYMax","defaultYStep","defaultZMin","defaultZMax","defaultZStep","defaultValueMin","defaultValueMax","dataFilter","setOnLoadCallback","redraw","_getDataPoints","GRID","SURFACE","sortNumber","dataMatrix","xIndex","yIndex","pointRight","pointTop","pointCross","LINE","pointNext","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onclick","_onClick","onkeydown","_setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","getCameraPosition","pos","getArmRotation","_readData","_redrawFilter","setPointDrawingMethod","_redrawBarGraphPoint","_redrawBarColorGraphPoint","_redrawBarSizeGraphPoint","_redrawDotGraphPoint","DOTLINE","_redrawDotLineGraphPoint","_redrawDotColorGraphPoint","_redrawDotSizeGraphPoint","_redrawSurfaceGraphPoint","_redrawGridGraphPoint","_redrawLineGraphPoint","_pointDrawingMethod","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGraph","_redrawInfo","_redrawLegend","_getContext","ctx","getContext","lineJoin","lineCap","clearRect","_dotSize","_getLegendWidth","dotSize","isSizeLegend","isValueLegend","margin","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","widthMin","fillStyle","closePath","gridLineLen","legendMin","legendMax","step","start","from","to","end","getCurrent","_line","textAlign","textBaseline","fillText","next","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","drawAxisLabelX","text","armAngle","yMargin","point2d","drawAxisLabelY","drawAxisLabelZ","_line3d","from2d","to2d","prettyStep","xText","yText","zText","gridLenX","gridLenY","textMargin","armVector","msg","from3d","xMin2d","xMax2d","H","S","V","R","G","B","C","Hi","X","abs","_getStrokeWidth","_redrawBar","xWidth","yWidth","borderColor","surface","surfaces","corners","avg","transCenter","diff","_polygon","_drawCircle","radius","_calcRadius","arc","PI","_getColorsRegular","_getColorsColor","_getColorsSize","colors","fraction","cross","topSideVisible","showGrayBottom","aDiff","subtract","bDiff","crossproduct","crossProduct","zAvg","_drawGridLine","call","_storeMousePosition","startMouseX","getMouseX","startMouseY","getMouseY","_startCameraOffset","getOffset","leftButtonDown","_onMouseUp","which","button","touchDown","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","moving","diffX","diffY","ctrlKey","scaleX","scaleY","offXNew","armLength","offYNew","setOffset","horizontalNew","verticalNew","snapAngle","snapValue","round","setArmRotation","parameters","emit","onclick_callback","boundingRect","mouseX","mouseY","dataPoint","_dataPointFromXY","showTooltip","tooltipTimeout","_hideTooltip","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","setArmLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","borderRadius","boxShadow","borderLeft","dom","contentWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","setCameraPosition","setSize","sub","sum","armLocation","armRotation","cameraOffset","offsetMultiplier","calculateCameraOrientation","mul","rot","xa","ya","za","graph","loaded","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","getValue","dataView","dataPointsTemp","progress","visible","prev","bar","MozBorderRadius","slide","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","isNumeric","isFinite","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","checkFirst","combine","val","newMin","newMax","STYLENAME","OPTIONKEYS","PREFIXEDOPTIONKEYS","isEmpty","capitalize","str","toUpperCase","prefixFieldName","prefix","fieldName","forceCopy","src","dst","srcKey","dstKey","safeCopy","setSpecialSettings","setBackgroundColor","setDataColor","setStyle","setShowLegend","isAutoByDefault","isLegendGraphStyle","getStyleNumberByName","styleName","number","checkStyleNumber","valid","styleNumber","borderWidth","borderStyle","camPos","propagating","Timeline","Graph2d","timeline","Core","DateUtil","stack","TimeStep","components","Item","BackgroundItem","BoxItem","PointItem","RangeItem","BackgroundGroup","Component","CurrentTime","CustomTime","DataAxis","DataScale","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","printStyle","allOptions","configureOptions","groups","forthArgument","throttleRedraw","defaultOptions","autoResize","orientation","axis","maxHeight","minHeight","_create","rtl","directionFromDom","domNode","root","getComputedStyle","direction","parentElement","rollingMode","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis2","currentTime","itemSet","itemsData","groupsData","getEventProperties","ondblclick","oncontextmenu","onmouseover","fitDone","getItemRange","setWindow","animation","fit","setGroups","setItems","_redraw","_createConfigurator","markDirty","refreshItems","errorFound","validate","selection","getSelection","setSelection","newDataSet","group","focus","itemData","dataset","getDataRange","minItem","maxItem","factor","lhs","rhs","getStart","getEnd","groupShowing","show","repositionX","startSide","getWidthRight","endSide","getWidthLeft","centerContainer","itemFromTarget","groupFromTarget","customTime","customTimeFromTarget","snap","time","snappedTime","what","foreground","labelSet","groupId","pageX","srcEvent","pageY","Configurator","parentModule","defaultContainer","pixelRatio","changedOptions","allowCreation","initialized","popupCounter","showButton","moduleOptions","domElements","popupDiv","popupLimit","popupHistory","colorPicker","wrapper","_removePopup","_clean","_handleObject","_makeItem","_makeHeader","generateButton","_printOptions","onmouseout","optionsContainer","_push","_showPopupIfNeeded","path","base","div","objectLabel","select","selectedValue","selected","_update","_makeLabel","err","popupString","popupValue","ceil","input","oninput","itemIndex","_setupPopup","string","html","hideTimeout","deleteTimeout","correspondingElement","checkbox","checked","defaultColor","_showColorPicker","insertTo","setColor","setUpdateCallback","colorString","setCloseCallback","checkOnly","visibleInSet","subObj","newPath","_getValue","_handleArray","_makeTextInput","_makeCheckbox","draw","physics","solver","enabledPath","enabledValue","error","_makeColorField","_makeDropdown","_makeRange","_constructOptions","optionsObj","pointer","getOptions","hammerUtil","ColorPicker","generated","centerCoordinates","hueCircle","initialColor","previousColor","applied","updateCallback","closeCallback","hammer","_bindHammer","htmlColors","black","navy","darkblue","mediumblue","darkgreen","teal","darkcyan","deepskyblue","darkturquoise","mediumspringgreen","lime","springgreen","aqua","cyan","midnightblue","dodgerblue","lightseagreen","forestgreen","seagreen","darkslategray","limegreen","mediumseagreen","turquoise","royalblue","steelblue","darkslateblue","mediumturquoise","indigo","darkolivegreen","cadetblue","cornflowerblue","mediumaquamarine","dimgray","slateblue","olivedrab","slategray","lightslategray","mediumslateblue","lawngreen","chartreuse","aquamarine","maroon","purple","olive","gray","skyblue","lightskyblue","blueviolet","darkred","darkmagenta","saddlebrown","darkseagreen","lightgreen","mediumpurple","darkviolet","palegreen","darkorchid","yellowgreen","sienna","brown","darkgray","lightblue","greenyellow","paleturquoise","lightsteelblue","powderblue","firebrick","darkgoldenrod","mediumorchid","rosybrown","darkkhaki","silver","mediumvioletred","indianred","peru","chocolate","tan","lightgrey","palevioletred","thistle","orchid","goldenrod","crimson","gainsboro","plum","burlywood","lightcyan","lavender","darksalmon","violet","palegoldenrod","lightcoral","khaki","aliceblue","honeydew","azure","sandybrown","wheat","beige","whitesmoke","mintcream","ghostwhite","salmon","antiquewhite","linen","lightgoldenrodyellow","oldlace","fuchsia","magenta","deeppink","orangered","tomato","hotpink","coral","darkorange","lightsalmon","orange","lightpink","pink","gold","peachpuff","navajowhite","moccasin","bisque","mistyrose","blanchedalmond","papayawhip","lavenderblush","seashell","cornsilk","lemonchiffon","floralwhite","snow","yellow","lightyellow","ivory","white","setInitial","htmlColor","_isColorString","rgbaArray","rgbObj","alpha","_setColor","display","_generateHueCircle","storePrevious","_hide","_updatePicker","alert","angleConvert","colorPickerSelector","colorPickerCanvas","pixelRation","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","w","putImageData","circle","brightnessRange","opacityRange","initialColorDiv","newColorDiv","colorPickerDiv","opacityDiv","brightnessDiv","arrowDiv","_setOpacity","_setBrightness","brightnessLabel","opacityLabel","cancelButton","applyButton","_apply","saveButton","_save","loadButton","_loadLast","drag","pinch","set","enable","onTouch","_moveSelector","sat","hfac","sfac","fillRect","getImageData","centerY","centerX","angle","atan2","newTop","newLeft","inputHandler","isFirst","onRelease","isFinal","offTouch","offRelease","disablePreventDefaultVertically","pinchRecognizer","TOUCH_ACTION_PAN_Y","getTouchAction","Validator","referenceOptions","subObject","usedOptions","check","__any__","getSuggestion","__type__","checkFields","referenceOption","refOptionObj","optionType","refOptionType","print","printLocation","_isAMomentObject","localSearch","findInOptions","globalSearch","localSearchThreshold","globalSearchThreshold","indexMatch","closestMatch","recursive","closestMatchPath","lowerCaseOption","op","levenshteinDistance","matrix","now","hours","minutes","seconds","milliseconds","clone","rolling","deltaDifference","scaleOffset","startToFront","endToFront","moveable","zoomable","zoomMin","zoomMax","touch","animationTimer","_onDragStart","_onDrag","_onDragEnd","_onMouseWheel","_onTouch","_onPinch","rollingModeBtn","startRolling","validateDirection","stopRolling","conversion","currentTimeTimer","byUser","finalStart","finalEnd","_cancelAnimation","initStart","initEnd","duration","easingName","easingFunction","initTime","anyChanged","dragging","ease","done","changed","_applyRange","updateHiddenDates","newStart","newEnd","getRange","totalHidden","previousDelta","_isInsideRange","allowDragging","deltaX","deltaY","getHiddenDurationBetween","diffRange","safeStart","snapAwayFromHidden","safeEnd","startDate","endDate","zoomKey","horizontalScroll","pointerDate","getPointer","_pointerToDate","zoom","centerDate","hiddenDuration","hiddenDurationBefore","getHiddenDurationBefore","hiddenDurationAfter","move","_isResized","resized","_previousWidth","_previousHeight","convertHiddenOptions","repeat","dateItem","totalRange","pixelTime","_d","runUntil","day","dayOfYear","year","dayOffset","date","month","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","switchedYear","switchedMonth","switchedDay","hiddenBeforeStart","getHiddenDurationBeforeStart","rangeAfterEnd","correctTimeForHidden","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","timeOffset","requiredDuration","previousPoint","correctionEnabled","Activator","backgroundVertical","backgroundHorizontal","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","scrollTop","scrollTopMin","initialDrawDone","_origRedraw","properties","initialItemSetDrawn","threshold","DIRECTION_HORIZONTAL","listeners","events","isActive","onMouseWheel","verticalScroll","adjusted","_setScrollTop","onMouseScrollSide","itemAddedToTimeline","handleDragOver","dataTransfer","dropEffect","handleDrop","getData","_onAddItem","customTimes","redrawCount","drawPoints","onRender","clickToUse","activator","_initAutoResize","component","configurator","configure","appliedOptions","setModuleOptions","active","_stopAutoResize","setCustomTime","getCustomTime","setCustomTimeTitle","title","setCustomTitle","addCustomTime","timestamp","some","removeCustomTime","getVisibleItems","getWindow","zoomIn","percentage","newInterval","zoomOut","borderRootHeight","borderRootWidth","autoHeight","containerHeight","scrollbarWidth","_setDOM","_updateScrollTop","visibilityTop","visibilityBottom","RegExp","contentsOverflow","DIRECTION_ALL","MAX_REDRAW","centerWidth","repaint","setCurrentTime","getCurrentTime","_startAutoResize","_onResize","lastWidth","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","UNGROUPED","BACKGROUND","align","stackSubgroups","groupOrderSwap","fromGroup","toGroup","targetOrder","groupOrder","selectable","multiselect","itemsAlwaysDraggable","editable","updateTime","updateGroup","overrideItems","groupEditable","onAdd","onUpdate","onMove","onRemove","onMoving","onAddGroup","onMoveGroup","onRemoveGroup","followMouse","overflowMethod","tooltipOnItemUpdateTime","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","stackDirty","touchParams","groupTouchParams","box","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","groupHammer","_onGroupClick","_onGroupDragStart","_onGroupDrag","_onGroupDragEnd","DIRECTION_VERTICAL","_onMouseOver","_onMouseOut","addCallback","Function","dirty","displayed","hide","unselect","rawVisibleItems","visibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","restack","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","nestedGroups","nestedGroupId","updatedNestedGroup","nestedInGroup","showNested","_order","getGroups","removeItem","itemObj","popup","_getType","_removeItem","groupData","groupOptions","_orderNestedGroups","newGroupIdsOrder","nestedGroup","nestedGroupIds","oldGroupId","oldSubGroupId","subgroup","oldGroup","_constructByEndArray","endArray","dragLeftItem","dragRightItem","itemProps","_getGroupIndex","itemIsDragging","selectedItem","initialX","dragLeft","_cloneItemData","dragRight","baseGroupIndex","itemsToDrag","groupIndex","groupOffset","stopPropagation","metaKey","_onDragStartAddItem","xAbs","newItem","offsetLeft","updateGroupAllowed","newGroupBase","initial","updateTimeAllowed","initialEnd","initialStart","newOffset","_moveToGroup","collapsedDirClassName","originalOrder","movingUp","targetGroupTop","draggedGroupHeight","targetGroupHeight","targetGroup","draggedGroup","newOrder","origOrder","draggedId","numGroups","curPos","orgOffset","slippedPosition","switchGroup","shouldBeGroup","switchGroupId","shiftKey","oldSelection","newSelection","related","itemFromRelatedTarget","getTitle","setPopup","setPosition","offsetTop","_onUpdateItem","newItemData","itemGroup","lastSelectedGroup","multiselectPerGroup","_getItemRange","_item","itemFromElement","cur","relatedTarget","itemSetFromTarget","Popup","doShow","maxWidth","isLeft","isTop","minimumStep","autoScale","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setMoment","setFormat","defaultFormat","setMinimumStep","roundToMinor","hasNext","setScale","setAutoScale","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","isMajor","getLabelMinor","getLabelMajor","getClassName","_moment","locale","lang","even","today","isSame","currentWeek","currentMonth","currentYear","subgroups","subgroupIndex","subgroupOrderer","subgroupOrder","isVisible","itemsInRange","byStart","byEnd","checkRangedItems","marker","templateFunction","paddingRight","paddingLeft","getLabelWidth","markerHeight","lastMarkerHeight","_calculateSubGroupHeights","_isGroupVisible","limitSize","customOrderedItems","_updateItemsInRange","nostack","_updateSubgroupsSizes","_calculateHeight","repositionY","resetSubgroups","setParent","orderSubgroups","_checkIfVisible","sortArray","sortField","removeFromDataSet","startArray","orderByStart","orderByEnd","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","searchFunction","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","EPSILON","aTime","bTime","force","collidingItem","jj","collision","otherSubgroup","collisionByTimes","baseClassName","visibleFrame","_updateContents","_updateTitle","_updateDataAttributes","_updateStyle","_repaintOnItemUpdateTimeTooltip","_repaintDeleteButton","_repaintDragCenter","_repaintDragLeft","_repaintDragRight","parentWidth","contentStartPosition","boxWidth","groupChanged","dragCenter","dragCenterItem","anchor","deleteButton","onItemUpdateTimeTooltip","tooltipOffset","itemDistanceFromTop","isCloseToTop","template","itemVisibleFrameContent","visibleFrameTemplateFunction","frameElement","itemVisibleFrameContentElement","getElementsByClassName","visibleFrameTemplate","_contentToString","setText","dataAttributes","attributes","setAttribute","removeAttribute","outerHTML","msPerPixel","widthInMs","previousRight","previousLeft","itemSetHeight","marginLeft","marginRight","itemSubgroup","lines","majorTexts","minorTexts","lineTop","showMinorLabels","showMajorLabels","maxMinorChars","parentChanged","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineHeight","minorLineWidth","majorLineHeight","majorLineWidth","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","minorCharWidth","xNext","nextIsMajor","prevWidth","labelMinor","xFirstMajorLabel","MAX","showMinorGrid","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","warnedForOverflow","leftTime","leftText","widthText","majorCharWidth","pop","createTextNode","childNodes","measureCharMinor","measureCharMajor","overlay","_onTapOverlay","onClick","_hasParent","deactivate","escListener","activate","unbind","locales","eventParams","warned","substring","showCurrentTime","bool","any","groupsDraggable","linegraph","initialLoad","getLegend","isGroupVisible","yAxisLeft","yAxisRight","legendLeft","legendRight","screenToValue","Bars","Lines","Points","yAxisOrientation","defaultGroup","sampling","graphHeight","shaded","barChart","sideBySide","interpolation","parametrization","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","forceGraphUpdate","lastStart","svgElements","groupsUsingDefaultStyles","svg","framework","_removeGroup","_updateAllGroupData","removeGroup","_updateGroup","addGroup","groupsContent","idMap","groupCounts","existing_items","extended","orginalY","_updateGraph","rangePerPixelInv","_getSortedGroupIds","grouplist","zIndex","bz","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","below","excludeFromStacking","_stack","_convertYcoordinates","paths","calcPath","subGroupId","drawShading","subData","subPrevPoint","subNextPoint","dateComparator","first","last","dataContainer","increment","amountOfPoints","xDistance","pointsPerPixel","sampledData","idx","combinedDataLeft","combinedDataRight","getYRange","getStackedYRange","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","minVal","maxVal","ignore","_toggleAxisVisiblity","drawIcons","master","masterAxis","lineOffset","tempGroups","axisUsed","datapoints","screen_x","screen_y","svgHeight","convertValue","setZeroPosition","linegraphOptions","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","alignZeros","linegraphSVG","DOMelements","labels","conversionFactor","minWidth","stepPixels","zeroCrossing","amountOfSteps","iconsRemoved","amountOfGroups","lineContainer","graphOptions","_redrawGroupIcons","iconHeight","iconOffset","groupArray","_cleanupIcons","activeGroups","_redrawLabels","_redrawTitle","customRange","autoScaleEnd","autoScaleStart","followScale","maxLabelSize","getLines","major","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","characterHeight","largestWidth","textMinor","textMajor","textTitle","measureCharTitle","titleCharWidth","zeroAlign","formattingFunction","majorSteps","minorSteps","customLines","minorStepIdx","magnitudefactor","determineScale","rounded","setCharHeight","setHeight","minimumStepValue","orderOfMagnitude","solutionFound","l","stepSize","is_major","getFirstMajor","majorStep","formatValue","bottomOffset","oldStepIdx","oldStart","oldEnd","increaseMagnitude","decreaseMagnitude","otherZero","otherStep","newRange","myOriginalZero","majorOffset","zeroOffset","pixels","usingDefaultStyle","zeroPosition","drawIcon","icon","Bargraph","fillHeight","fillPath","outline","barWidth","originalWidth","bar1Height","bar2Height","processedGroupData","combinedData","intersections","coreDistance","drawData","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulatedNegative","accumulatedPositive","pointData","groupLabel","_getStackedYRange","xpos","getCallback","getGroupTemplate","callbackResult","Line","_catmullRom","_linear","pathArray","subPathArray","dFill","zero","serializePath","inverse","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","side","iconSize","iconSpacing","excludeFromLegend","textArea","scrollableHeight","drawLegendIcons","paddingTop","Network","network","Images","dotparser","gephiParser","convertDot","DOTToGraph","convertGephi","parseGephi","nodes","nodeIndices","edges","edgeIndices","once","eventListeners","onTap","onDoubleTap","onHold","onDragStart","onDrag","onDragEnd","onPinch","onMouseMove","onContext","functions","createNode","createEdge","modules","view","bindEventListeners","images","selectionHandler","interactionHandler","renderer","layoutEngine","clustering","manipulation","nodesHandler","edgesHandler","layout","interaction","networkOptions","_updateVisibleIndices","nodeId","edgeId","_updateValueRange","unselectAll","dotData","gephi","gephiData","valueTotal","setValueRange","canvasToDOM","DOMtoCanvas","findNode","isCluster","openCluster","cluster","getNodesInCluster","clusterByConnection","clusterByHubsize","clusterOutliers","getSeed","enableEditMode","disableEditMode","addNodeMode","editNode","editNodeMode","addEdgeMode","editEdgeMode","deleteSelected","getPositions","storePositions","moveNode","getBoundingBox","getConnectedNodes","objectId","getConnectedEdges","startSimulation","stopSimulation","stabilize","getSelectedNodes","getSelectedEdges","getNodeAt","getEdgeAt","edge","selectNodes","selectEdges","getViewPosition","releaseNode","getOptionsFromConfigurator","imageBroken","url","imageToCache","brokenUrl","imageToLoadBrokenUrlOn","onerror","_addImageToCache","Image","imageToRedrawWith","cachedImage","img","onload","_redrawWithImage","_tryloadBrokenUrl","Groups","defaultIndex","groupsArray","defaultGroups","useDefaultGroups","optionFields","groupName","groupname","NodesHandler","nodesListeners","borderWidthSelected","brokenImage","fixed","face","strokeColor","vadjust","multi","bold","mod","boldital","ital","mono","code","image","labelHighlightBold","level","mass","scaling","maxVisible","drawThreshold","customScalingFunction","shadow","shape","shapeProperties","borderDashes","useImageSize","useBorderWithImage","nodeOptions","parseOptions","updateShape","updateLabelModule","_reset","doNotEmit","oldNodesData","newNodes","positionInitially","changedData","dataChanged","constructorClass","clearPositions","dataArray","boundingBox","nodeList","nodeObj","toId","fromId","edgeList","Node","imagelist","baseSize","baseFontSize","predefinedPosition","labelModule","currentShape","groupObj","choosify","imageObj","load","propagateFonts","chooser","chosen","chosenNode","shadowColor","shadowSize","shadowX","shadowY","constrain","distanceToBorder","sizeDiff","fontDiff","getFormattingValues","updateBoundingBox","resize","parentOptions","newOptions","parsedColor","Label","edgelabel","pointToSelf","fontOptions","yLine","isEdgeLabel","elementOptions","labelDirty","constrainWidth","maxWdt","minWdt","widthConstraint","widthConstraintMaximum","widthConstraintMinimum","constrainHeight","minHgt","valign","heightConstraint","heightConstraintMinimum","heightConstraintValign","chosenLabel","margins","widthBias","heightBias","mods","optionsFontMod","modOptionsArray","ratio","baseline","viewFontSize","calculateLabelSize","_drawBackground","_drawText","lineMargin","fontSize","_setAlignment","labelHeight","lineCount","blocks","block","_getColor","fontColor","strokeText","initialStrokeColor","_processLabel","markupSystem","system","decodeMarkupSystem","splitMarkdownBlocks","splitHtmlBlocks","beginable","spacing","buffer","modStack","modName","emitBlock","override","ch","unshift","selectedState","hoverState","nlLines","accumulate","addAndAccumulate","splitBlocks","words","atStart","measure","lastMeasure","pre","measureText","newOptionsArray","Box","_setMargins","differentState","textSize","getTextSize","roundRect","enableShadow","disableShadow","save","enableBorderDashes","disableBorderDashes","restore","NodeBase","adjustSizes","shadowBlur","shadowOffsetX","shadowOffsetY","setLineDash","dashes","Circle","diameter","_drawRawCircle","CircleImageBase","labelOffset","imageLoaded","globalAlpha","can2","ctx2","drawImage","iterations","labelDimensions","CircularImage","_swapToImageResizeWhenImageLoaded","_resizeImage","clip","_drawImageAtPosition","_drawImageLabel","Database","database","_distanceToBorder","Diamond","_resizeShape","_drawShape","ShapeBase","sizeMultiplier","Dot","Ellipse","ellipse","Icon","_icon","iconTextSpacing","neutralborderWidth","selectionLineWidth","Square","Star","Text","Triangle","TriangleDown","EdgesHandler","edgesListeners","arrows","scaleFactor","arrowStrikethrough","inherit","hoverWidth","selectionWidth","selfReferenceSize","smooth","forceDirection","roundness","emitChange","edgeData","edgeOptions","reconnectEdges","updateEdgeType","oldEdgesData","edgesData","oldEdge","disconnect","connect","cleanup","Edge","baseWidth","edgeType","connected","_setInteractionWidths","chosenEdge","toArrow","fromArrow","middleArrow","inheritsColor","toArrowScale","toArrowType","middleArrowScale","middleArrowType","fromArrowScale","fromArrowType","selectedWidth","changeInType","attachEdge","detachEdge","widthDiff","viaNode","getViaNode","arrowData","fromPoint","toPoint","getArrowData","core","drawLine","drawArrows","drawLabel","drawArrowHead","node1","node2","getPoint","translate","_rotateForLabelAlignment","_pointOnCircle","xFrom","yFrom","xTo","yTo","xObj","yObj","getDistanceToEdge","angleInDegrees","rotate","colorsDefined","CubicBezierEdge","viaNodes","via1","via2","bezierCurveTo","x1","y1","x2","y2","_getViaCoordinates","nearNode","_findBorderPositionBezier","x3","y3","_getDistanceToBezierEdge","vec","CubicBezierEdgeBase","minDistance","lastX","lastY","_getDistanceToLine","BezierEdgeBase","distanceToPoint","difference","via","EdgeBase","colorDirty","getColor","_drawDashedLine","_drawLine","_getCircleData","_circle","pattern","lineDashOffset","dashedLine","_findBorderPosition","_findBorderPositionCircle","grd","createLinearGradient","fromColor","toColor","addColorStop","_getDistanceToEdge","px","py","something","u","arrowPoint","guideOffset","findBorderPosition","guidePos","xi","yi","arrowCore","circleEndpoint","arrowEndpoint","BezierEdgeDynamic","_boundFunction","positionBezierNode","physicsChange","setupSupportNode","parentEdgeId","quadraticCurveTo","cr","BezierEdgeStatic","xVia","yVia","pi","originalAngle","myAngle","StraightEdge","edgeSegmentLength","toBorderDist","toBorderPoint","borderPos","PhysicsEngine","physicsBody","physicsNodeIndices","physicsEdgeIndices","forces","velocities","physicsEnabled","simulationInterval","requiresTimeout","previousStates","referenceState","freezeCache","renderTimer","adaptiveTimestep","adaptiveTimestepEnabled","adaptiveCounter","adaptiveInterval","stabilized","startedStabilization","stabilizationIterations","ready","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","avoidOverlap","forceAtlas2Based","repulsion","nodeDistance","hierarchicalRepulsion","maxVelocity","minVelocity","stabilization","updateInterval","onlyDynamicEdges","timestep","layoutFailed","initPhysics","updatePhysicsData","init","nodesSolver","edgesSolver","gravitySolver","modelOptions","viewFunction","simulationStep","_emitStabilized","startTime","physicsTick","physicsTime","runDoubleSpeed","amountOfIterations","calculateForces","moveNodes","revert","_evaluateStepQuality","nodeIds","positions","vx","vy","dpos","reference","posThreshold","maxNodeVelocity","averageNodeVelocity","velocityAdaptiveThreshold","nodeVelocity","_performStep","totalVelocity","solve","targetIterations","_freezeNodes","_stabilizationBatch","_finalizeStabilization","_restoreFrozenNodes","colorFactor","forceSize","arrowSize","BarnesHutSolver","barnesHutTree","randomSeed","thetaInversed","overlapAvoidanceFactor","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","_calculateForces","gravityForce","fx","fy","minX","minY","maxX","maxY","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","totalMass","totalMassInv","biggestSize","skipMassUpdate","_updateBranchMass","_placeInRegion","region","seededRandom","containedNode","_insertRegion","childSize","_drawBranch","branch","RepulsionSolver","repulsingForce","HierarchicalRepulsionSolver","steepness","SpringSolver","edgeLength","node3","_calculateSpringForce","springForce","HierarchicalSpringSolver","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","CentralGravitySolver","ForceAtlas2BasedRepulsionSolver","degree","ForceAtlas2BasedCentralGravitySolver","ClusterEngine","clusteredNodes","clusteredEdges","hubsize","_getHubSize","_checkOptions","nodesToCluster","refreshData","joinCondition","childNodesObj","childEdgesObj","clonedOptions","cloneOptions","_cluster","edgeCount","clusters","usedNodes","relevantEdgeCount","gatheringSuccessful","childNodeId","_getConnectedId","clusterByEdgeCount","clusterNodeProperties","parentNodeId","parentClonedOptions","childClonedOptions","childNodeIDs","childNode","childEdge","clusterEdgeProperties","otherNodeId","childKeys","createEdges","newEdge","clusteringEdgeReplacingId","edgeReplacedById","_backupEdgeOptions","allowSingleNodeCluster","processProperties","childNodesOptions","childEdgesOptions","clusterId","_getClusterPosition","clusterNode","containedNodes","containedEdges","_createClusterEdges","originalOptions","clusterNodeId","releaseFunction","clusterPosition","newPositions","edgesToBeDeleted","otherCluster","transferEdge","replacedEdge","_restoreEdge","nodesArray","reverse","clusteredNodeId","startEdgeId","allEdgeIds","getClusteredEdges","clusteredEdgeId","baseEdgeId","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","hubThreshold","NetworkUtil","allNodes","specificNodes","amountOfConnections","Cluster","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","CanvasRenderer","redrawRequested","renderingActive","renderRequests","allowRedraw","hideEdgesOnDrag","hideNodesOnDrag","_determineBrowserMethod","_resizeNodes","_requestRedraw","_startRendering","cancelAnimationFrame","_renderStep","_drawEdges","_drawNodes","alwaysShow","topLeft","bottomRight","viewableArea","isSelected","isBoundingBoxOverlappingWith","browserType","Canvas","resizeTimer","resizeFunction","cameraState","canvasViewCenter","hammerFrame","_cleanUp","previousWidth","previousHeight","widthRatio","heightRatio","newScale","currentViewCenter","distanceFromCenter","tabIndex","_prepareValue","emitEvent","oldWidth","oldHeight","previousRatio","_getCameraState","_setCameraState","_XconvertCanvasToDOM","_YconvertCanvasToDOM","_XconvertDOMtoCanvas","_YconvertDOMtoCanvas","View","animationSpeed","renderRefreshRate","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","initialZoom","zoomLevel","positionDefined","numberOfNodes","yDistance","xZoomLevel","yZoomLevel","findCenter","animationOptions","nodePosition","lockedOnNode","animateView","locked","_transitionRedraw","viewCenter","_lockedRedraw","finished","InteractionHandler","navigationHandler","popupObj","popupTimer","dragNodes","dragView","keyboard","speed","bindToWindow","navigationButtons","tooltipDelay","zoomView","pinched","changedPointers","checkSelectionChanges","_generateClickEvent","previouslySelectedEdgeCount","_getSelectedEdgeCount","previouslySelectedNodeCount","_getSelectedNodeCount","previousSelection","selectAdditionalOnPoint","selectOnPoint","selectedEdgesCount","selectedNodesCount","currentSelection","_determineIfDifferent","nodesChanged","edgesChanged","nodeSelected","selectObject","selectionObj","xFixed","yFixed","scaleOld","preScaleDragPointer","scaleFrac","tx","ty","postScaleDragPointer","popupVisible","_checkHidePopup","_checkShowPopup","hoverObject","pointerObj","previousPopupObjId","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","overlappingEdges","popupTargetType","popupTargetId","_pointerToPositionObject","stillOnObj","overNode","NavigationHandler","iconsCreated","navigationHammers","boundFunctions","activated","configureKeyboardBindings","loadNavigationElements","cleanNavigation","navigationDOM","navigationDivs","navigationDivActions","_fit","bindToRedraw","_stopMovement","boundAction","reset","unbindFromRedraw","SelectionHandler","hoverObj","selectConnectedEdges","hoverConnectedEdges","updateSelection","selectionChanged","deselectObject","eventType","emptySelection","DOM","highlightEdges","_selectConnectedEdges","_addToSelection","_removeFromSelection","canvasPos","returnNode","positionObject","_getAllNodesOverlappingWith","_getEdgesOverlappingWith","returnEdge","mindist","overlappingEdge","_unselectConnectedEdges","clusterSize","_addToHover","hoverChanged","blurObject","_hoverConnectedEdges","edgeIds","idArray","RangeError","LayoutEngine","initialRandomSeed","setPhysics","optionsBackup","improvedLayout","hierarchical","levelSeparation","nodeSpacing","treeSpacing","blockShifting","edgeMinimization","parentCentralization","sortMethod","setupHierarchicalLayout","layoutNetwork","prevHierarchicalState","adaptAllOptionsForHierarchicalLayout","MAX_LEVELS","clusterThreshold","startLength","before","clusterBridges","after","_declusterAll","info","kamadaKawai","_shiftToCenter","getRangeCore","clustersPresent","definedLevel","definedPositions","undefinedLevel","hierarchicalLevels","lastNodeOnLevel","hierarchicalChildrenReference","hierarchicalParentReference","hierarchicalTrees","treeIndex","distributionOrdering","distributionIndex","distributionOrderingPresence","_determineLevelsByHubsize","_determineLevelsDirected","_determineLevelsCustomCallback","distribution","_getDistribution","_generateMap","_placeNodesByHierarchy","_condenseHierarchy","stillShifting","branches","shiftTrees","treeSizes","getTreeSizes","shiftTree","_getPositionForHierarchy","_setPositionForHierarchy","getTreeSize","treeWidths","getBranchNodes","source","getBranchBoundary","branchMap","maxLevel","minSpace","maxSpace","branchNode","_getSpaceAroundNode","minSpaceNode","maxSpaceNode","getMaxLevel","getCollisionLevel","maxLevel1","maxLevel2","hasSameParent","parents1","parents2","shiftElementsCloser","levels","centerParents","levelNodes","branchShiftCallback","centerParent","pos1","pos2","diffAbs","branchNodes1","branchNodes2","min1","max1","minSpace1","maxSpace1","min2","max2","minSpace2","maxSpace2","diffBranch","_shiftBlock","_centerParent","minimizeEdgeLength","allEdges","nodeLevel","C2","referenceNodes","aboveEdges","otherNode","getFx","getDFx","getGuess","guess","guessMap","dfx","limit","moveBranch","branchNodes","minBranch","maxBranch","minSpaceBranch","maxSpaceBranch","branchOffset","newPosition","minimizeEdgeLengthBottomUp","shiftBranchesCloserBottomUp","centerAllParents","centerAllParentsBottomUp","useMap","prevNode","prevPos","nextNode","nextPos","parents","parentId","minPos","maxPos","positionedNodes","nodeArray","_indexArrayToNodes","_sortNodeArray","handledNodeCount","_validataPositionAndContinue","parentLevel","childNodeLevel","previousPos","sharedParent","_findCommonParent","withChild","_placeBranchNodes","hubSize","levelDownstream","nodeA","nodeB","_crawlNetwork","minLevel","customCallback","levelByDirection","levelA","_setMinLevelToZero","fillInRelations","startingNodeId","crawler","tree","childA","childB","iterateParents","child","findParent","foundParent","doNotUpdate","ManipulationSystem","editMode","manipulationDiv","editModeDiv","closeDiv","manipulationHammers","temporaryUIFunctions","temporaryEventFunctions","temporaryIds","guiEnabled","inMode","selectedControlNode","initiallyActive","addNode","addEdge","editEdge","deleteNode","deleteEdge","controlNodeStyle","_restore","_setup","showManipulatorToolbar","_createEditButton","manipulationDOM","selectedNodeCount","selectedEdgeCount","selectedTotalCount","needSeperator","_createAddNodeButton","_createSeperator","_createAddEdgeButton","_createEditNodeButton","_createEditEdgeButton","_createDeleteButton","_bindHammerToDiv","toggleEditMode","_temporaryBindEvent","_createBackButton","_createDescription","_performAddNode","_getSelectedNode","finalizedData","_temporaryBindUI","_handleConnect","_finishConnect","_dragControlNode","editWithoutDrag","edgeBeingEditedId","_performEditEdge","controlNodeFrom","_getNewTargetNode","controlNodeTo","_controlNodeTouch","_controlNodeDragStart","_controlNodeDrag","_controlNodeDragEnd","findBorderPositions","selectedNodes","selectedEdges","deleteFunction","_createWrappers","_removeManipulationDOM","_createButton","_cleanManipulatorHammers","_cleanupTemporaryNodesAndEdges","_unbindTemporaryUIs","_unbindTemporaryEvents","deleteBtnClass","labelClassName","newFunction","boundFunction","UIfunctionName","functionName","eventName","domElement","indexTempEdge","indexTempNode","lastTouch","fromSelect","toSelect","overlappingNodeIds","targetNode","connectionEdge","connectFromId","_performAddEdge","clickData","defaultData","sourceNodeId","targetNodeId","eeFunct","boolean","maximum","minimum","KamadaKawai","edgeStrength","distanceSolver","edgesArray","ignoreClusters","D_matrix","getDistances","_createL_matrix","_createK_matrix","innerThreshold","maxInnerIterations","maxEnergy","highE_nodeId","dE_dx","dE_dy","delta_m","subIterations","_getHighestEnergyNode","_moveNode","_getEnergy","maxEnergyNodeId","dE_dx_max","dE_dy_max","nodeIdx","x_m","y_m","iIdx","x_i","y_i","denominator","K_matrix","L_matrix","d2E_dx2","d2E_dxdy","d2E_dy2","D","E","FloydWarshall","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","diamond","r2d","kappa","ox","oy","xe","ye","xm","ym","wEllipse","hEllipse","ymb","yeb","xt","yt","xl","yl","xr","yr","xc","yc","patternLength","slope","distRemaining","patternIndex","dashLength","parseDOT","parseGraph","NODE_ATTR_MAPPING","EDGE_ATTR_MAPPING","TOKENTYPE","NULL","DELIMITER","IDENTIFIER","UNKNOWN","DELIMITERS","token","tokenType","nextPreview","regexAlphaNumeric","isAlphaNumeric","merge","setValue","keys","o","graphs","attr","getToken","isComment","c2","newSyntaxError","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","setProp","names","convertAttr","mapping","visProp","visPropI","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","gephiJSON","inheritColor","gEdges","gNodes","gEdge","gNode","edit","del","back","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","editClusterError"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;;AAEA;AACA;AACA,8B;;;;;;ACjCA,8BAA4B,e;;;;;;ACA5B;AACA,YAAU;AACV,I;;;;;;ACFA,sB;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACLA;AACA;AACA;AACA;AACA,I;;;;;;ACJA,mBAAiB;;AAEjB;AACA;AACA,I;;;;;;ACJA;AACA;AACA;AACA;AACA,I;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA4B,aAAa;;AAEzC;AACA;AACA;AACA;AACA;AACA,0CAAwC,oCAAoC;AAC5E,8CAA4C,oCAAoC;AAChF,OAAK,2BAA2B,oCAAoC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAgB,mBAAmB;AACnC;AACA;AACA,mCAAiC,2BAA2B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA,I;;;;;;ACrEA,wB;;;;;;ACAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAmE;AACnE;AACA,uFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAW;AACX,WAAS;AACT;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA,iDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,gBAAc;AACd,gBAAc;AACd,gBAAc;AACd,gBAAc;AACd,iBAAe;AACf,iBAAe;AACf,iBAAe;AACf,kBAAgB;AAChB,2B;;;;;;AC5DA;AACA;AACA;AACA,yCAAuC,gC;;;;;;ACHvC,+BAA6B;AAC7B,uCAAqC,gC;;;;;;ACDrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACnBA;AACA;AACA;AACA,I;;;;;;ACHA;AACA;AACA;AACA;AACA,GAAC;AACD;AACA;AACA,I;;;;;;ACPA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAG,UAAU;AACb;AACA;AACA;AACA,I;;;;;;ACfA;AACA;AACA;AACA;AACA,I;;;;;;ACJA;AACA;AACA,I;;;;;;ACFA;AACA,uEAAsE,gBAAgB,UAAU,GAAG;AACnG,GAAC,E;;;;;;ACFD;AACA;AACA,mCAAiC,QAAQ,gBAAgB,UAAU,GAAG;AACtE,GAAC,E;;;;;;ACHD;AACA;AACA;AACA,KAAG;AACH;AACA;AACA,I;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACPA,2C;;;;;;ACAA,yBAAuB;AACvB;AACA;AACA,I;;;;;;ACHA;AACA;AACA;AACA;AACA;;AAEA;AACA,6FAAgF,aAAa,EAAE;;AAE/F;AACA,uDAAqD,0BAA0B;AAC/E;AACA,I;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA,+BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAG;AACH;AACA;;;;;;;ACxCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACZA;AACA;AACA;;AAEA;AACA;AACA,I;;;;;;ACNA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK,WAAW,eAAe;AAC/B;AACA,OAAK;AACL;AACA,I;;;;;;ACpBA;AACA;AACA;AACA;AACA,6DAA2D;AAC3D,I;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACNA;AACA;AACA;AACA;AACA,I;;;;;;ACJA;AACA;AACA,qDAAmD;AACnD;AACA,yCAAuC;AACvC,I;;;;;;ACLA;AACA;AACA;AACA;AACA,I;;;;;;ACJA;AACA;AACA;AACA,e;;;;;;ACHA,gF;;;;;;ACAA;AACA;AACA;;AAEA;AACA,oEAAkE,+BAA+B;AACjG,I;;;;;;ACNA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yB;;;;;;ACVA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAG;AACH,I;;;;;;ACZA;AACA;AACA;AACA;AACA,I;;;;;;ACJA;AACA;;AAEA;AACA;AACA,+BAA6B;AAC7B,gBAAc;AACd;AACA,GAAC;AACD;AACA;AACA;AACA,iCAA+B;AAC/B;AACA;AACA,YAAU;AACV,GAAC,E;;;;;;AChBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACPA;AACA;AACA;AACA;AACA,2BAAyB,kBAAkB,EAAE;;AAE7C;AACA;AACA;AACA;AACA,KAAG,UAAU;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACtBA,oBAAkB,wD;;;;;;ACAlB;AACA;AACA;AACA;AACA,I;;;;;;ACJA;AACA;AACA,gCAA8B,gCAAoC,E;;;;;;ACFlE,oBAAkB,wD;;;;;;ACAlB;AACA,uD;;;;;;ACDA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAC,E;;;;;;ACRD;AACA;AACA;AACA;AACA;AACA,gCAA8B;AAC9B;AACA;AACA,qDAAmD,OAAO,EAAE;AAC5D,I;;;;;;ACTA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,mHAAiH,mBAAmB,EAAE,mBAAmB,4JAA4J;;AAErT,wCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA,GAAC;AACD;AACA,I;;;;;;ACpBA,oBAAkB,wD;;;;;;ACAlB;AACA;AACA,yD;;;;;;ACFA,sC;;;;;;ACAA,oBAAkB,wD;;;;;;ACAlB;AACA;AACA;AACA;AACA,kD;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAsB;AACtB,sBAAoB,uBAAuB,SAAS,IAAI;AACxD,KAAG;AACH,GAAC;AACD;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAAyD;AACzD;AACA,OAAK;AACL;AACA,wBAAsB,iCAAiC;AACvD,OAAK;AACL,KAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAA8D,8BAA8B;AAC5F;AACA;AACA;AACA;AACA,KAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4DAA0D,gBAAgB;;AAE1E;AACA;AACA;AACA,sBAAoB,oBAAoB;;AAExC,4CAA0C,oBAAoB;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA,KAAG;AACH;AACA;AACA;AACA;AACA,KAAG;AACH,0BAAwB,eAAe,EAAE;AACzC,0BAAwB,gBAAgB;AACxC,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,sDAAoD,KAAK,QAAQ,iCAAiC;AAClG,GAAC;AACD;AACA,iDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4C;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAiD;AACjD,GAAC;AACD;AACA,uBAAqB;AACrB;AACA,WAAS;AACT,MAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA0D,sBAAsB;AAChF,kFAAgF,sBAAsB;AACtG,I;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAG;AACH,I;;;;;;ACdA,2C;;;;;;ACAA,gBAAc,sB;;;;;;ACAd;AACA;AACA;AACA;AACA,I;;;;;;ACJA;AACA;AACA;AACA,oBAAkB;;AAElB;AACA;;AAEA;AACA;AACA;AACA,KAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;;;;;AClBA;AACA;AACA;;AAEA;AACA;AACA,I;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAG,UAAU;AACb;AACA,I;;;;;;;;;;;;ACfA,2C;;;;;;ACAA,wC;;;;;;ACAA,oBAAkB,wD;;;;;;ACAlB;AACA,yCAAuC,0BAA0B;AACjE,0CAAwC;AACxC;AACA,I;;;;;;;;ACJA;AACA;AACAE,SAAOvQ,OAAP,GAAkB,OAAOoH,MAAP,KAAkB,WAAnB,IAAmCA,OAAO,QAAP,CAAnC,IAAuD,mBAAAtH,CAAQ,EAAR,CAAxE,C;;;;;;ACFA;AACA;AACA;AACA;AACA;;AAEA,GAAC;AACD;AACA;AACA;AACA,GAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAe,gBAAgB;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAC;AACD;AACA;AACA;;AAEA,yBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,6CAA2C;AAC3C,mBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,oFAAkF,IAAI;AACtF;;AAEA;AACA,yBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,eAAa;AACb;AACA,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,gCAA8B,IAAI;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAoB,iCAAiC;AACrD;AACA;AACA;AACA,OAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,yBAAuB,wBAAwB;AAC/C;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0LAAwL,IAAI;;AAE5L,mEAAiE,IAAI;;AAErE;;AAEA;;AAEA;AACA;AACA;AACA,4BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wCAAsC,YAAY;AAClD;AACA;AACA,WAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,qBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4BAA0B;AAC1B,8BAA4B;AAC5B,2BAAyB,EAAE,EAAE;AAC7B,2BAAyB,EAAE,EAAE;AAC7B,gCAA8B,EAAE,EAAE;AAClC,+BAA6B;AAC7B,mCAAiC;AACjC,uCAAqC;AACrC,2BAAyB,IAAI,EAAE;AAC/B,2BAAyB,IAAI,EAAE;AAC/B,gCAA8B,IAAI,EAAE;;AAEpC,6BAA2B;AAC3B,kCAAgC;;AAEhC,4CAA0C;AAC1C,mDAAiD;;AAEjD,sCAAoC,IAAI,IAAI;;AAE5C;AACA;AACA,8HAA4H,IAAI;;;AAGhI;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAK;AACL;;AAEA;AACA,4CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAe,kBAAkB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAC;AACD;AACA;AACA;AACA,qBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA,GAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA,WAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAe,QAAQ;AACvB;AACA;AACA;AACA,iBAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAC;;AAED;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,WAAS;AACT;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA,WAAS;AACT;AACA,WAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA,OAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAC;AACD;AACA;AACA;AACA,GAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;AACD;AACA;AACA;AACA;AACA,GAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS,YAAY;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAa;AACb;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yCAAuC,EAAE,IAAI,EAAE;AAC/C,sCAAoC,EAAE,IAAI,EAAE;;AAE5C;;AAEA;AACA,+BAA6B,EAAE;AAC/B,yBAAuB,EAAE;AACzB,2BAAyB,EAAE;AAC3B,yBAAuB,EAAE;AACzB,uBAAqB,EAAE,IAAI,EAAE;AAC7B,sBAAoB,EAAE;AACtB,6BAA2B,GAAG;AAC9B,uBAAqB,EAAE;AACvB;AACA,yBAAuB,EAAE,IAAI,EAAE;AAC/B,wBAAsB,EAAE,IAAI,EAAE;AAC9B,sBAAoB,EAAE;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0CAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAe,+BAA+B;AAC9C;AACA;;AAEA;AACA,YAAU,OAAO;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,iBAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAe,sBAAsB;AACrC;AACA,oCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,gCAA8B,gBAAgB;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA;AACA,WAAS;AACT;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK,6BAA6B;AAClC;AACA,OAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAe;;AAEf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAgB;AAChB;;AAEA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAsB,cAAc;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAA+B,qBAAqB;AACpD,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAA+B,qBAAqB;AACpD,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAoB;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,GAAC;;AAED;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA,GAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,GAAC;;AAED;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;;;AAGD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAoB,mBAAmB;AACvC;AACA;;AAEA;AACA;AACA;;AAEA,mBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAsB,IAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAC;AACD;AACA;AACA,GAAC;;AAED;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,GAAC;;;;;;;;AC5sID;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA;AACA;AACA,oCAAkC,WAAW;AAC7C;AACA;AACA;;;;;;;;;ACNA,MAAI0Q,IAAJ;;AAEA,MAAIC,YAAY,OAAOrJ,MAAP,KAAkB,WAAlB,GACVA,MADU,GAEV,OAAOsJ,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,IAF/C;;AAIA,MAAID,aAAaA,UAAUE,MAAvB,IAAiCA,OAAOC,eAA5C,EAA6D;AAC3D;AACA;AACA,QAAIC,SAAS,IAAIC,UAAJ,CAAe,EAAf,CAAb;AACAN,WAAO,SAASO,SAAT,GAAqB;AAC1BJ,aAAOC,eAAP,CAAuBC,MAAvB;AACA,aAAOA,MAAP;AACD,KAHD;AAID;;AAED,MAAI,CAACL,IAAL,EAAW;AACT;AACA;AACA;AACA;AACA,QAAIQ,QAAQ,IAAI9N,KAAJ,CAAU,EAAV,CAAZ;AACAsN,WAAO,gB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KAAG;AACH;AACA;AACA;AACA;AACA,KAAG;AACH;AACA;AACA;AACA,GAAC;AACD,4BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA4D,qBAAqB;AACjF;AACA,eAAa,eAAe;AAC5B,eAAa,OAAO;AACpB;AACA;AACA;AACA,gBAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL,iBAAe,kCAAkC;AACjD;;AAEA;AACA;AACA,iBAAe,OAAO;AACtB,iBAAe,SAAS;AACxB,mBAAiB,eAAe;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAO;;AAEP;AACA;;AAEA;AACA;AACA,iBAAe,OAAO;AACtB,iBAAe,SAAS;AACxB;AACA;AACA,mBAAiB,eAAe;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAO;;AAEP;AACA;;AAEA;AACA;AACA,iBAAe,OAAO;AACtB,iBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAwB,uBAAuB;AAC/C;AACA,2CAAyC,kCAAkC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAC;;;;;;;ACtOD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAW,SAAS;AACpB,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,eAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAW,QAAQ;AACnB,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,SAAS;AACpB,aAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,SAAS;AACpB,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,eAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAqD,UAAU;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,UAAU;AACrB,eAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;AACD;AACA;;AAEA;AACA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,aAAW,QAAQ;AACnB,eAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,eAAa,OAAO;AACpB;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA,aAAW,SAAS;AACpB,aAAW,SAAS;AACpB,aAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,SAAS;AACpB,aAAW,OAAO;AAClB,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAW,iBAAiB;AAC5B,aAAW,MAAM;AACjB,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,EAAE;AACb,aAAW,EAAE;AACb,eAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,YAAY;AACvB,aAAW,OAAO;AAClB,aAAW,SAAS;AACpB;AACA;AACA;AACA;AACA,OAAK;AACL;;AAEA;AACA;AACA,aAAW,YAAY;AACvB,aAAW,OAAO;AAClB,aAAW,SAAS;AACpB;AACA;AACA;AACA;AACA,OAAK;AACL;;AAEA;AACA;AACA;AACA,aAAW,YAAY;AACvB,aAAW,YAAY;AACvB,cAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,eAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,eAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,MAAM;AACjB,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,cAAY,eAAe;AAC3B;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,eAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,MAAM,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK;AAC3C,aAAW,OAAO;AAClB,aAAW,QAAQ;AACnB,eAAa,MAAM,GAAG,KAAK,EAAE,KAAK;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,eAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,eAAa,iBAAiB;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,YAAY;AACvB,eAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAW,QAAQ;AACnB,aAAW,SAAS;AACpB,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAAyB,EAAE;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAW,OAAO;AAClB,eAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,QAAQ;AACnB,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,eAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,MAAM;AACjB,cAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,cAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,cAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO,KAAK;AACvB,aAAW,OAAO,KAAK;AACvB,aAAW,MAAM;AACjB,cAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,aAAW,MAAM;AACjB,cAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,MAAM;AACjB,aAAW,MAAM;AACjB,cAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAW,MAAM;AACjB,aAAW,MAAM;AACjB,cAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAAyB;;AAEzB;AACA;;AAEA;AACA;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAS;;AAET;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA,GAAC;;AAED;AACA,YAAU;AACV,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,eAAa,gBAAgB;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA,GAAC;;AAED;AACA,YAAU;AACV,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB,eAAa,gBAAgB;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAe,OAAO;AACtB,iBAAe,OAAO;AACtB,iBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAS;AACT;AACA;;AAEA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA,OAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAmB,6BAA6B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iDAA+C;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAW,QAAQ;AACnB,aAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,mBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;AACL;AACA;;AAEA;AACA,+BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAW,OAAO;AAClB;AACA;AACA,8BAA4B,8BAA8B;;AAE1D;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAc;AACd;AACA,kBAAgB;;AAEhB;AACA;AACA,iBAAe,OAAO;AACtB,kBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,WAAW;AAC1B,mBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,WAAW;AAC1B,mBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,WAAW;AAC1B,mBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,WAAW;AAC1B,mBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,mBAAiB;AACjB;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,WAAW;AAC1B,mBAAiB;AACjB;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAiC;;AAEjC,sCAAoC;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,mBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,wCAAsC;;AAEtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA,iBAAe,OAAO;AACtB,mBAAiB,MAAM;AACvB;AACA,oCAAkC,EAAE;;AAEpC;AACA;AACA;AACA,mBAAiB;AACjB;AACA,kCAAgC,EAAE;;AAElC;AACA;AACA;AACA;AACA;AACA,yBAAuB;AACvB;;AAEA;AACA;AACA,aAAW,MAAM;AACjB,eAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,MAAM;AACjB,eAAa;AACb;AACA;AACA;AACA;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA,OAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,kBAAkB;AAC7B,aAAW,WAAW;AACtB,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAkB;AAClB;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA,iBAAe,OAAO;AACtB,mBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA,iBAAe,OAAO;AACtB,mBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA,OAAK;;AAEL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA,eAAa;AACb,WAAS;AACT;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAS;AACT;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,OAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,WAAS;AACT;AACA,WAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,OAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAa;AACb;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAiB;AACjB;AACA;AACA;AACA,uBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA,WAAS;AACT;AACA,OAAK;;AAEL;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA,aAAW,YAAY;AACvB,aAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAc;AACd;AACA;AACA;;AAEA;AACA,gBAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,gBAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAc;AACd;AACA;AACA;AACA,8BAA4B,cAAc;AAC1C,6BAA2B,cAAc;AACzC,6BAA2B,gCAAgC;AAC3D,2BAAyB,gCAAgC;AACzD;AACA,2BAAyB,4BAA4B;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,oBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,oBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,oBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAW,YAAY;AACvB,aAAW,OAAO;AAClB;AACA;AACA;AACA,8BAA4B,gCAAgC;;AAE5D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAK;AACL;;AAEA;AACA;AACA;AACA,iBAAe,OAAO;AACtB,mBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA,iBAAe,QAAQ;AACvB;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA,iBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAkE;AAClE;AACA,eAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,kBAAkB;AACjC,mBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA,iBAAe,WAAW;AAC1B,mBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,kBAAkB;AACjC,mBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,OAAO;AACtB,iBAAe,SAAS;AACxB,mBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,OAAO;AACtB,iBAAe,SAAS;AACxB,mBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAa;AACb;AACA;AACA,WAAS;AACT;AACA,OAAK;;AAEL;AACA;AACA,iBAAe,OAAO;AACtB,iBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,QAAQ;AACnB,aAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAS;AACT;AACA;AACA,OAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAW,OAAO;AAClB,aAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAC;;AAED;AACA;AACA,qGAAmG,GAAG;AACtG;;AAEA;AACA;AACA;AACA,OAAK;AACL,GAAC;AACD;AACA,GAAC;AACD;AACA;;AAEA,GAAC;;;;;;;ACllFD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAG;AACH;AACA;AACA;AACA;AACA,KAAG;AACH;AACA;AACA;AACA,GAAC;;AAED;AACA;;AAEA;;AAEA;AACA,oBAAkB,UAAU;AAC5B;AACA;;AAEA;AACA,kBAAgB,UAAU,OAAO,iCAAiC;AAClE;AACA,kBAAgB,SAAS,OAAO,iCAAiC;AACjE;AACA,iBAAe,SAAS,SAAS,iBAAiB;AAClD;AACA,iBAAe,UAAU,SAAS,kBAAkB;AACpD;AACA,iBAAe,SAAS,SAAS,oBAAoB;;AAErD;AACA,uBAAqB;AACrB,uBAAqB;AACrB,uBAAqB;AACrB,uBAAqB;AACrB,uBAAqB;AACrB;AACA,wBAAsB;AACtB,wBAAsB;AACtB,wBAAsB;AACtB,wBAAsB;AACtB;AACA,wBAAsB;AACtB,wBAAsB;AACtB,wBAAsB;AACtB,wBAAsB;AACtB,4BAA0B;AAC1B,4BAA0B;AAC1B,4BAA0B;AAC1B,4BAA0B;AAC1B,4BAA0B;AAC1B,4BAA0B;AAC1B,4BAA0B;AAC1B;AACA,wBAAsB;AACtB,wBAAsB;AACtB,wBAAsB;AACtB,wBAAsB;;;;AAItB,kCAAgC;AAChC,gCAA8B;;AAE9B;AAC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","file":"vis.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vis\"] = factory();\n\telse\n\t\troot[\"vis\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap eca1787db4da1a54ed82","var util = require('./lib/util');\n\n// Graph3d\nutil.extend(exports, require('./index-graph3d'));\n\n// Timeline & Graph2d\nutil.extend(exports, require('./index-timeline-graph2d'));\n\n// Network\nutil.extend(exports, require('./index-network'));\n\n\n\n// WEBPACK FOOTER //\n// ./index.js","// utility functions\n\n// first check if moment.js is already loaded in the browser window, if so,\n// use this instance. Else, load via commonjs.\n\n\nvar moment = require('./module/moment');\nvar uuid = require('./module/uuid');\n\n/**\n * Test whether given object is a number\n * @param {*} object\n * @return {Boolean} isNumber\n */\nexports.isNumber = function (object) {\n return (object instanceof Number || typeof object == 'number');\n};\n\n/**\n * Censors object elements containing dom elements\n * @param {*} object\n * @return {Object} object without elements\n */\nexports.elementsCensor = function (object) {\n if (!object) return;\n var replacer = function(key, value) {\n if (value instanceof Element) {\n return \"DOM Element\";\n } else {\n return value;\n }\n }\n return JSON.parse(JSON.stringify(object, replacer))\n}\n\n\n/**\n * Remove everything in the DOM object\n * @param DOMobject\n */\nexports.recursiveDOMDelete = function (DOMobject) {\n if (DOMobject) {\n while (DOMobject.hasChildNodes() === true) {\n exports.recursiveDOMDelete(DOMobject.firstChild);\n DOMobject.removeChild(DOMobject.firstChild);\n }\n }\n};\n\n/**\n * this function gives you a range between 0 and 1 based on the min and max values in the set, the total sum of all values and the current value.\n *\n * @param min\n * @param max\n * @param total\n * @param value\n * @returns {number}\n */\nexports.giveRange = function (min, max, total, value) {\n if (max == min) {\n return 0.5;\n }\n else {\n var scale = 1 / (max - min);\n return Math.max(0, (value - min) * scale);\n }\n}\n\n/**\n * Test whether given object is a string\n * @param {*} object\n * @return {Boolean} isString\n */\nexports.isString = function (object) {\n return (object instanceof String || typeof object == 'string');\n};\n\n/**\n * Test whether given object is a Date, or a String containing a Date\n * @param {Date | String} object\n * @return {Boolean} isDate\n */\nexports.isDate = function (object) {\n if (object instanceof Date) {\n return true;\n }\n else if (exports.isString(object)) {\n // test whether this string contains a date\n var match = ASPDateRegex.exec(object);\n if (match) {\n return true;\n }\n else if (!isNaN(Date.parse(object))) {\n return true;\n }\n }\n\n return false;\n};\n\n/**\n * Create a semi UUID\n * source: http://stackoverflow.com/a/105074/1262753\n * @return {String} uuid\n */\nexports.randomUUID = function () {\n return uuid.v4();\n};\n\n/**\n * assign all keys of an object that are not nested objects to a certain value (used for color objects).\n * @param obj\n * @param value\n */\nexports.assignAllKeys = function (obj, value) {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n if (typeof obj[prop] !== 'object') {\n obj[prop] = value;\n }\n }\n }\n}\n\n\n/**\n * Fill an object with a possibly partially defined other object. Only copies values if the a object has an object requiring values.\n * That means an object is not created on a property if only the b object has it.\n * @param obj\n * @param value\n */\nexports.fillIfDefined = function (a, b, allowDeletion = false) {\n for (var prop in a) {\n if (b[prop] !== undefined) {\n if (typeof b[prop] !== 'object') {\n if ((b[prop] === undefined || b[prop] === null) && a[prop] !== undefined && allowDeletion === true) {\n delete a[prop];\n }\n else {\n a[prop] = b[prop];\n }\n }\n else {\n if (typeof a[prop] === 'object') {\n exports.fillIfDefined(a[prop], b[prop], allowDeletion);\n }\n }\n }\n }\n}\n\n\n\n/**\n * Extend object a with the properties of object b or a series of objects\n * Only properties with defined values are copied\n * @param {Object} a\n * @param {... Object} b\n * @return {Object} a\n */\nexports.protoExtend = function (a, b) {\n for (var i = 1; i < arguments.length; i++) {\n var other = arguments[i];\n for (var prop in other) {\n a[prop] = other[prop];\n }\n }\n return a;\n};\n\n/**\n * Extend object a with the properties of object b or a series of objects\n * Only properties with defined values are copied\n * @param {Object} a\n * @param {... Object} b\n * @return {Object} a\n */\nexports.extend = function (a, b) {\n for (var i = 1; i < arguments.length; i++) {\n var other = arguments[i];\n for (var prop in other) {\n if (other.hasOwnProperty(prop)) {\n a[prop] = other[prop];\n }\n }\n }\n return a;\n};\n\n/**\n * Extend object a with selected properties of object b or a series of objects\n * Only properties with defined values are copied\n * @param {Array.} props\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n */\nexports.selectiveExtend = function (props, a, b) {\n if (!Array.isArray(props)) {\n throw new Error('Array with property names expected as first argument');\n }\n\n for (var i = 2; i < arguments.length; i++) {\n var other = arguments[i];\n\n for (var p = 0; p < props.length; p++) {\n var prop = props[p];\n if (other.hasOwnProperty(prop)) {\n a[prop] = other[prop];\n }\n }\n }\n return a;\n};\n\n/**\n * Extend object a with selected properties of object b or a series of objects\n * Only properties with defined values are copied\n * @param {Array.} props\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n */\nexports.selectiveDeepExtend = function (props, a, b, allowDeletion = false) {\n // TODO: add support for Arrays to deepExtend\n if (Array.isArray(b)) {\n throw new TypeError('Arrays are not supported by deepExtend');\n }\n for (var i = 2; i < arguments.length; i++) {\n var other = arguments[i];\n for (var p = 0; p < props.length; p++) {\n var prop = props[p];\n if (other.hasOwnProperty(prop)) {\n if (b[prop] && b[prop].constructor === Object) {\n if (a[prop] === undefined) {\n a[prop] = {};\n }\n if (a[prop].constructor === Object) {\n exports.deepExtend(a[prop], b[prop], false, allowDeletion);\n }\n else {\n if ((b[prop] === null) && a[prop] !== undefined && allowDeletion === true) {\n delete a[prop];\n }\n else {\n a[prop] = b[prop];\n }\n }\n } else if (Array.isArray(b[prop])) {\n throw new TypeError('Arrays are not supported by deepExtend');\n } else {\n if ((b[prop] === null) && a[prop] !== undefined && allowDeletion === true) {\n delete a[prop];\n }\n else {\n a[prop] = b[prop];\n }\n }\n\n }\n }\n }\n return a;\n};\n\n/**\n * Extend object a with selected properties of object b or a series of objects\n * Only properties with defined values are copied\n * @param {Array.} props\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n */\nexports.selectiveNotDeepExtend = function (props, a, b, allowDeletion = false) {\n // TODO: add support for Arrays to deepExtend\n if (Array.isArray(b)) {\n throw new TypeError('Arrays are not supported by deepExtend');\n }\n for (var prop in b) {\n if (b.hasOwnProperty(prop)) {\n if (props.indexOf(prop) == -1) {\n if (b[prop] && b[prop].constructor === Object) {\n if (a[prop] === undefined) {\n a[prop] = {};\n }\n if (a[prop].constructor === Object) {\n exports.deepExtend(a[prop], b[prop]);\n }\n else {\n if ((b[prop] === null) && a[prop] !== undefined && allowDeletion === true) {\n delete a[prop];\n }\n else {\n a[prop] = b[prop];\n }\n }\n } else if (Array.isArray(b[prop])) {\n a[prop] = [];\n for (let i = 0; i < b[prop].length; i++) {\n a[prop].push(b[prop][i]);\n }\n } else {\n if ((b[prop] === null) && a[prop] !== undefined && allowDeletion === true) {\n delete a[prop];\n }\n else {\n a[prop] = b[prop];\n }\n }\n }\n }\n }\n return a;\n};\n\n/**\n * Deep extend an object a with the properties of object b\n * @param {Object} a\n * @param {Object} b\n * @param [Boolean] protoExtend --> optional parameter. If true, the prototype values will also be extended.\n * (ie. the options objects that inherit from others will also get the inherited options)\n * @param [Boolean] global --> optional parameter. If true, the values of fields that are null will not deleted\n * @returns {Object}\n */\nexports.deepExtend = function (a, b, protoExtend, allowDeletion) {\n for (var prop in b) {\n if (b.hasOwnProperty(prop) || protoExtend === true) {\n if (b[prop] && b[prop].constructor === Object) {\n if (a[prop] === undefined) {\n a[prop] = {};\n }\n if (a[prop].constructor === Object) {\n exports.deepExtend(a[prop], b[prop], protoExtend);\n }\n else {\n if ((b[prop] === null) && a[prop] !== undefined && allowDeletion === true) {\n delete a[prop];\n }\n else {\n a[prop] = b[prop];\n }\n }\n } else if (Array.isArray(b[prop])) {\n a[prop] = [];\n for (let i = 0; i < b[prop].length; i++) {\n a[prop].push(b[prop][i]);\n }\n } else {\n if ((b[prop] === null) && a[prop] !== undefined && allowDeletion === true) {\n delete a[prop];\n }\n else {\n a[prop] = b[prop];\n }\n }\n }\n }\n return a;\n};\n\n/**\n * Test whether all elements in two arrays are equal.\n * @param {Array} a\n * @param {Array} b\n * @return {boolean} Returns true if both arrays have the same length and same\n * elements.\n */\nexports.equalArray = function (a, b) {\n if (a.length != b.length) return false;\n\n for (var i = 0, len = a.length; i < len; i++) {\n if (a[i] != b[i]) return false;\n }\n\n return true;\n};\n\n/**\n * Convert an object to another type\n * @param {Boolean | Number | String | Date | Moment | Null | undefined} object\n * @param {String | undefined} type Name of the type. Available types:\n * 'Boolean', 'Number', 'String',\n * 'Date', 'Moment', ISODate', 'ASPDate'.\n * @return {*} object\n * @throws Error\n */\nexports.convert = function (object, type) {\n var match;\n\n if (object === undefined) {\n return undefined;\n }\n if (object === null) {\n return null;\n }\n\n if (!type) {\n return object;\n }\n if (!(typeof type === 'string') && !(type instanceof String)) {\n throw new Error('Type must be a string');\n }\n\n //noinspection FallthroughInSwitchStatementJS\n switch (type) {\n case 'boolean':\n case 'Boolean':\n return Boolean(object);\n\n case 'number':\n case 'Number':\n if (exports.isString(object) && !isNaN(Date.parse(object))) {\n return moment(object).valueOf();\n } else {\n return Number(object.valueOf());\n }\n case 'string':\n case 'String':\n return String(object);\n\n case 'Date':\n if (exports.isNumber(object)) {\n return new Date(object);\n }\n if (object instanceof Date) {\n return new Date(object.valueOf());\n }\n else if (moment.isMoment(object)) {\n return new Date(object.valueOf());\n }\n if (exports.isString(object)) {\n match = ASPDateRegex.exec(object);\n if (match) {\n // object is an ASP date\n return new Date(Number(match[1])); // parse number\n }\n else {\n return moment(new Date(object)).toDate(); // parse string\n }\n }\n else {\n throw new Error(\n 'Cannot convert object of type ' + exports.getType(object) +\n ' to type Date');\n }\n\n case 'Moment':\n if (exports.isNumber(object)) {\n return moment(object);\n }\n if (object instanceof Date) {\n return moment(object.valueOf());\n }\n else if (moment.isMoment(object)) {\n return moment(object);\n }\n if (exports.isString(object)) {\n match = ASPDateRegex.exec(object);\n if (match) {\n // object is an ASP date\n return moment(Number(match[1])); // parse number\n }\n else {\n return moment(object); // parse string\n }\n }\n else {\n throw new Error(\n 'Cannot convert object of type ' + exports.getType(object) +\n ' to type Date');\n }\n\n case 'ISODate':\n if (exports.isNumber(object)) {\n return new Date(object);\n }\n else if (object instanceof Date) {\n return object.toISOString();\n }\n else if (moment.isMoment(object)) {\n return object.toDate().toISOString();\n }\n else if (exports.isString(object)) {\n match = ASPDateRegex.exec(object);\n if (match) {\n // object is an ASP date\n return new Date(Number(match[1])).toISOString(); // parse number\n }\n else {\n return moment(object).format(); // ISO 8601\n }\n }\n else {\n throw new Error(\n 'Cannot convert object of type ' + exports.getType(object) +\n ' to type ISODate');\n }\n\n case 'ASPDate':\n if (exports.isNumber(object)) {\n return '/Date(' + object + ')/';\n }\n else if (object instanceof Date) {\n return '/Date(' + object.valueOf() + ')/';\n }\n else if (exports.isString(object)) {\n match = ASPDateRegex.exec(object);\n var value;\n if (match) {\n // object is an ASP date\n value = new Date(Number(match[1])).valueOf(); // parse number\n }\n else {\n value = new Date(object).valueOf(); // parse string\n }\n return '/Date(' + value + ')/';\n }\n else {\n throw new Error(\n 'Cannot convert object of type ' + exports.getType(object) +\n ' to type ASPDate');\n }\n\n default:\n throw new Error('Unknown type \"' + type + '\"');\n }\n};\n\n// parse ASP.Net Date pattern,\n// for example '/Date(1198908717056)/' or '/Date(1198908717056-0700)/'\n// code from http://momentjs.com/\nvar ASPDateRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n/**\n * Get the type of an object, for example exports.getType([]) returns 'Array'\n * @param {*} object\n * @return {String} type\n */\nexports.getType = function (object) {\n var type = typeof object;\n\n if (type == 'object') {\n if (object === null) {\n return 'null';\n }\n if (object instanceof Boolean) {\n return 'Boolean';\n }\n if (object instanceof Number) {\n return 'Number';\n }\n if (object instanceof String) {\n return 'String';\n }\n if (Array.isArray(object)) {\n return 'Array';\n }\n if (object instanceof Date) {\n return 'Date';\n }\n return 'Object';\n }\n else if (type == 'number') {\n return 'Number';\n }\n else if (type == 'boolean') {\n return 'Boolean';\n }\n else if (type == 'string') {\n return 'String';\n }\n else if (type === undefined) {\n return 'undefined';\n }\n\n\n return type;\n};\n\n\n/**\n * Used to extend an array and copy it. This is used to propagate paths recursively.\n *\n * @param arr\n * @param newValue\n * @returns {Array}\n */\nexports.copyAndExtendArray = function (arr, newValue) {\n let newArr = [];\n for (let i = 0; i < arr.length; i++) {\n newArr.push(arr[i]);\n }\n newArr.push(newValue);\n return newArr;\n}\n\n/**\n * Used to extend an array and copy it. This is used to propagate paths recursively.\n *\n * @param arr\n * @param newValue\n * @returns {Array}\n */\nexports.copyArray = function (arr) {\n let newArr = [];\n for (let i = 0; i < arr.length; i++) {\n newArr.push(arr[i]);\n }\n return newArr;\n}\n\n/**\n * Retrieve the absolute left value of a DOM element\n * @param {Element} elem A dom element, for example a div\n * @return {number} left The absolute left position of this element\n * in the browser page.\n */\nexports.getAbsoluteLeft = function (elem) {\n return elem.getBoundingClientRect().left;\n};\n\nexports.getAbsoluteRight = function (elem) {\n return elem.getBoundingClientRect().right;\n};\n\n/**\n * Retrieve the absolute top value of a DOM element\n * @param {Element} elem A dom element, for example a div\n * @return {number} top The absolute top position of this element\n * in the browser page.\n */\nexports.getAbsoluteTop = function (elem) {\n return elem.getBoundingClientRect().top;\n};\n\n/**\n * add a className to the given elements style\n * @param {Element} elem\n * @param {String} className\n */\nexports.addClassName = function (elem, className) {\n var classes = elem.className.split(' ');\n if (classes.indexOf(className) == -1) {\n classes.push(className); // add the class to the array\n elem.className = classes.join(' ');\n }\n};\n\n/**\n * add a className to the given elements style\n * @param {Element} elem\n * @param {String} className\n */\nexports.removeClassName = function (elem, className) {\n var classes = elem.className.split(' ');\n var index = classes.indexOf(className);\n if (index != -1) {\n classes.splice(index, 1); // remove the class from the array\n elem.className = classes.join(' ');\n }\n};\n\n/**\n * For each method for both arrays and objects.\n * In case of an array, the built-in Array.forEach() is applied.\n * In case of an Object, the method loops over all properties of the object.\n * @param {Object | Array} object An Object or Array\n * @param {function} callback Callback method, called for each item in\n * the object or array with three parameters:\n * callback(value, index, object)\n */\nexports.forEach = function (object, callback) {\n var i,\n len;\n if (Array.isArray(object)) {\n // array\n for (i = 0, len = object.length; i < len; i++) {\n callback(object[i], i, object);\n }\n }\n else {\n // object\n for (i in object) {\n if (object.hasOwnProperty(i)) {\n callback(object[i], i, object);\n }\n }\n }\n};\n\n/**\n * Convert an object into an array: all objects properties are put into the\n * array. The resulting array is unordered.\n * @param {Object} object\n * @param {Array} array\n */\nexports.toArray = function (object) {\n var array = [];\n\n for (var prop in object) {\n if (object.hasOwnProperty(prop)) array.push(object[prop]);\n }\n\n return array;\n};\n\n/**\n * Update a property in an object\n * @param {Object} object\n * @param {String} key\n * @param {*} value\n * @return {Boolean} changed\n */\nexports.updateProperty = function (object, key, value) {\n if (object[key] !== value) {\n object[key] = value;\n return true;\n }\n else {\n return false;\n }\n};\n\n/**\n * Throttle the given function to be only executed once per animation frame\n * @param {function} fn\n * @returns {function} Returns the throttled function\n */\nexports.throttle = function (fn) {\n var scheduled = false;\n\n return function throttled () {\n if (!scheduled) {\n scheduled = true;\n requestAnimationFrame(function () {\n scheduled = false;\n fn();\n });\n }\n }\n};\n\n/**\n * Add and event listener. Works for all browsers\n * @param {Element} element An html element\n * @param {string} action The action, for example \"click\",\n * without the prefix \"on\"\n * @param {function} listener The callback function to be executed\n * @param {boolean} [useCapture]\n */\nexports.addEventListener = function (element, action, listener, useCapture) {\n if (element.addEventListener) {\n if (useCapture === undefined)\n useCapture = false;\n\n if (action === \"mousewheel\" && navigator.userAgent.indexOf(\"Firefox\") >= 0) {\n action = \"DOMMouseScroll\"; // For Firefox\n }\n\n element.addEventListener(action, listener, useCapture);\n } else {\n element.attachEvent(\"on\" + action, listener); // IE browsers\n }\n};\n\n/**\n * Remove an event listener from an element\n * @param {Element} element An html dom element\n * @param {string} action The name of the event, for example \"mousedown\"\n * @param {function} listener The listener function\n * @param {boolean} [useCapture]\n */\nexports.removeEventListener = function (element, action, listener, useCapture) {\n if (element.removeEventListener) {\n // non-IE browsers\n if (useCapture === undefined)\n useCapture = false;\n\n if (action === \"mousewheel\" && navigator.userAgent.indexOf(\"Firefox\") >= 0) {\n action = \"DOMMouseScroll\"; // For Firefox\n }\n\n element.removeEventListener(action, listener, useCapture);\n } else {\n // IE browsers\n element.detachEvent(\"on\" + action, listener);\n }\n};\n\n/**\n * Cancels the event if it is cancelable, without stopping further propagation of the event.\n */\nexports.preventDefault = function (event) {\n if (!event)\n event = window.event;\n\n if (event.preventDefault) {\n event.preventDefault(); // non-IE browsers\n }\n else {\n event.returnValue = false; // IE browsers\n }\n};\n\n/**\n * Get HTML element which is the target of the event\n * @param {Event} event\n * @return {Element} target element\n */\nexports.getTarget = function (event) {\n // code from http://www.quirksmode.org/js/events_properties.html\n if (!event) {\n event = window.event;\n }\n\n var target;\n\n if (event.target) {\n target = event.target;\n }\n else if (event.srcElement) {\n target = event.srcElement;\n }\n\n if (target.nodeType != undefined && target.nodeType == 3) {\n // defeat Safari bug\n target = target.parentNode;\n }\n\n return target;\n};\n\n/**\n * Check if given element contains given parent somewhere in the DOM tree\n * @param {Element} element\n * @param {Element} parent\n */\nexports.hasParent = function (element, parent) {\n var e = element;\n\n while (e) {\n if (e === parent) {\n return true;\n }\n e = e.parentNode;\n }\n\n return false;\n};\n\nexports.option = {};\n\n/**\n * Convert a value into a boolean\n * @param {Boolean | function | undefined} value\n * @param {Boolean} [defaultValue]\n * @returns {Boolean} bool\n */\nexports.option.asBoolean = function (value, defaultValue) {\n if (typeof value == 'function') {\n value = value();\n }\n\n if (value != null) {\n return (value != false);\n }\n\n return defaultValue || null;\n};\n\n/**\n * Convert a value into a number\n * @param {Boolean | function | undefined} value\n * @param {Number} [defaultValue]\n * @returns {Number} number\n */\nexports.option.asNumber = function (value, defaultValue) {\n if (typeof value == 'function') {\n value = value();\n }\n\n if (value != null) {\n return Number(value) || defaultValue || null;\n }\n\n return defaultValue || null;\n};\n\n/**\n * Convert a value into a string\n * @param {String | function | undefined} value\n * @param {String} [defaultValue]\n * @returns {String} str\n */\nexports.option.asString = function (value, defaultValue) {\n if (typeof value == 'function') {\n value = value();\n }\n\n if (value != null) {\n return String(value);\n }\n\n return defaultValue || null;\n};\n\n/**\n * Convert a size or location into a string with pixels or a percentage\n * @param {String | Number | function | undefined} value\n * @param {String} [defaultValue]\n * @returns {String} size\n */\nexports.option.asSize = function (value, defaultValue) {\n if (typeof value == 'function') {\n value = value();\n }\n\n if (exports.isString(value)) {\n return value;\n }\n else if (exports.isNumber(value)) {\n return value + 'px';\n }\n else {\n return defaultValue || null;\n }\n};\n\n/**\n * Convert a value into a DOM element\n * @param {HTMLElement | function | undefined} value\n * @param {HTMLElement} [defaultValue]\n * @returns {HTMLElement | null} dom\n */\nexports.option.asElement = function (value, defaultValue) {\n if (typeof value == 'function') {\n value = value();\n }\n\n return value || defaultValue || null;\n};\n\n/**\n * http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n *\n * @param {String} hex\n * @returns {{r: *, g: *, b: *}} | 255 range\n */\nexports.hexToRGB = function (hex) {\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, function (m, r, g, b) {\n return r + r + g + g + b + b;\n });\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n};\n\n/**\n * This function takes color in hex format or rgb() or rgba() format and overrides the opacity. Returns rgba() string.\n * @param color\n * @param opacity\n * @returns {*}\n */\nexports.overrideOpacity = function (color, opacity) {\n if (color.indexOf(\"rgba\") != -1) {\n return color;\n }\n else if (color.indexOf(\"rgb\") != -1) {\n var rgb = color.substr(color.indexOf(\"(\") + 1).replace(\")\", \"\").split(\",\");\n return \"rgba(\" + rgb[0] + \",\" + rgb[1] + \",\" + rgb[2] + \",\" + opacity + \")\"\n }\n else {\n var rgb = exports.hexToRGB(color);\n if (rgb == null) {\n return color;\n }\n else {\n return \"rgba(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \",\" + opacity + \")\"\n }\n }\n}\n\n/**\n *\n * @param red 0 -- 255\n * @param green 0 -- 255\n * @param blue 0 -- 255\n * @returns {string}\n * @constructor\n */\nexports.RGBToHex = function (red, green, blue) {\n return \"#\" + ((1 << 24) + (red << 16) + (green << 8) + blue).toString(16).slice(1);\n};\n\n/**\n * Parse a color property into an object with border, background, and\n * highlight colors\n * @param {Object | String} color\n * @return {Object} colorObject\n */\nexports.parseColor = function (color) {\n var c;\n if (exports.isString(color) === true) {\n if (exports.isValidRGB(color) === true) {\n var rgb = color.substr(4).substr(0, color.length - 5).split(',').map(function (value) { return parseInt(value) });\n color = exports.RGBToHex(rgb[0], rgb[1], rgb[2]);\n }\n if (exports.isValidHex(color) === true) {\n var hsv = exports.hexToHSV(color);\n var lighterColorHSV = { h: hsv.h, s: hsv.s * 0.8, v: Math.min(1, hsv.v * 1.02) };\n var darkerColorHSV = { h: hsv.h, s: Math.min(1, hsv.s * 1.25), v: hsv.v * 0.8 };\n var darkerColorHex = exports.HSVToHex(darkerColorHSV.h, darkerColorHSV.s, darkerColorHSV.v);\n var lighterColorHex = exports.HSVToHex(lighterColorHSV.h, lighterColorHSV.s, lighterColorHSV.v);\n c = {\n background: color,\n border: darkerColorHex,\n highlight: {\n background: lighterColorHex,\n border: darkerColorHex\n },\n hover: {\n background: lighterColorHex,\n border: darkerColorHex\n }\n };\n }\n else {\n c = {\n background: color,\n border: color,\n highlight: {\n background: color,\n border: color\n },\n hover: {\n background: color,\n border: color\n }\n };\n }\n }\n else {\n c = {};\n c.background = color.background || undefined;\n c.border = color.border || undefined;\n\n if (exports.isString(color.highlight)) {\n c.highlight = {\n border: color.highlight,\n background: color.highlight\n }\n }\n else {\n c.highlight = {};\n c.highlight.background = color.highlight && color.highlight.background || undefined;\n c.highlight.border = color.highlight && color.highlight.border || undefined;\n }\n\n if (exports.isString(color.hover)) {\n c.hover = {\n border: color.hover,\n background: color.hover\n }\n }\n else {\n c.hover = {};\n c.hover.background = color.hover && color.hover.background || undefined;\n c.hover.border = color.hover && color.hover.border || undefined;\n }\n }\n\n return c;\n};\n\n\n\n/**\n * http://www.javascripter.net/faq/rgb2hsv.htm\n *\n * @param red\n * @param green\n * @param blue\n * @returns {*}\n * @constructor\n */\nexports.RGBToHSV = function (red, green, blue) {\n red = red / 255; green = green / 255; blue = blue / 255;\n var minRGB = Math.min(red, Math.min(green, blue));\n var maxRGB = Math.max(red, Math.max(green, blue));\n\n // Black-gray-white\n if (minRGB == maxRGB) {\n return { h: 0, s: 0, v: minRGB };\n }\n\n // Colors other than black-gray-white:\n var d = (red == minRGB) ? green - blue : ((blue == minRGB) ? red - green : blue - red);\n var h = (red == minRGB) ? 3 : ((blue == minRGB) ? 1 : 5);\n var hue = 60 * (h - d / (maxRGB - minRGB)) / 360;\n var saturation = (maxRGB - minRGB) / maxRGB;\n var value = maxRGB;\n return { h: hue, s: saturation, v: value };\n};\n\nvar cssUtil = {\n // split a string with css styles into an object with key/values\n split: function (cssText) {\n var styles = {};\n\n cssText.split(';').forEach(function (style) {\n if (style.trim() != '') {\n var parts = style.split(':');\n var key = parts[0].trim();\n var value = parts[1].trim();\n styles[key] = value;\n }\n });\n\n return styles;\n },\n\n // build a css text string from an object with key/values\n join: function (styles) {\n return Object.keys(styles)\n .map(function (key) {\n return key + ': ' + styles[key];\n })\n .join('; ');\n }\n};\n\n/**\n * Append a string with css styles to an element\n * @param {Element} element\n * @param {String} cssText\n */\nexports.addCssText = function (element, cssText) {\n var currentStyles = cssUtil.split(element.style.cssText);\n var newStyles = cssUtil.split(cssText);\n var styles = exports.extend(currentStyles, newStyles);\n\n element.style.cssText = cssUtil.join(styles);\n};\n\n/**\n * Remove a string with css styles from an element\n * @param {Element} element\n * @param {String} cssText\n */\nexports.removeCssText = function (element, cssText) {\n var styles = cssUtil.split(element.style.cssText);\n var removeStyles = cssUtil.split(cssText);\n\n for (var key in removeStyles) {\n if (removeStyles.hasOwnProperty(key)) {\n delete styles[key];\n }\n }\n\n element.style.cssText = cssUtil.join(styles);\n};\n\n/**\n * https://gist.github.com/mjijackson/5311256\n * @param h\n * @param s\n * @param v\n * @returns {{r: number, g: number, b: number}}\n * @constructor\n */\nexports.HSVToRGB = function (h, s, v) {\n var r, g, b;\n\n var i = Math.floor(h * 6);\n var f = h * 6 - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0: r = v, g = t, b = p; break;\n case 1: r = q, g = v, b = p; break;\n case 2: r = p, g = v, b = t; break;\n case 3: r = p, g = q, b = v; break;\n case 4: r = t, g = p, b = v; break;\n case 5: r = v, g = p, b = q; break;\n }\n\n return { r: Math.floor(r * 255), g: Math.floor(g * 255), b: Math.floor(b * 255) };\n};\n\nexports.HSVToHex = function (h, s, v) {\n var rgb = exports.HSVToRGB(h, s, v);\n return exports.RGBToHex(rgb.r, rgb.g, rgb.b);\n};\n\nexports.hexToHSV = function (hex) {\n var rgb = exports.hexToRGB(hex);\n return exports.RGBToHSV(rgb.r, rgb.g, rgb.b);\n};\n\nexports.isValidHex = function (hex) {\n var isOk = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);\n return isOk;\n};\n\nexports.isValidRGB = function (rgb) {\n rgb = rgb.replace(\" \", \"\");\n var isOk = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/i.test(rgb);\n return isOk;\n}\nexports.isValidRGBA = function (rgba) {\n rgba = rgba.replace(\" \", \"\");\n var isOk = /rgba\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),(.{1,3})\\)/i.test(rgba);\n return isOk;\n}\n\n/**\n * This recursively redirects the prototype of JSON objects to the referenceObject\n * This is used for default options.\n *\n * @param referenceObject\n * @returns {*}\n */\nexports.selectiveBridgeObject = function (fields, referenceObject) {\n if (typeof referenceObject == \"object\") {\n var objectTo = Object.create(referenceObject);\n for (var i = 0; i < fields.length; i++) {\n if (referenceObject.hasOwnProperty(fields[i])) {\n if (typeof referenceObject[fields[i]] == \"object\") {\n objectTo[fields[i]] = exports.bridgeObject(referenceObject[fields[i]]);\n }\n }\n }\n return objectTo;\n }\n else {\n return null;\n }\n};\n\n/**\n * This recursively redirects the prototype of JSON objects to the referenceObject\n * This is used for default options.\n *\n * @param referenceObject\n * @returns {*}\n */\nexports.bridgeObject = function (referenceObject) {\n if (typeof referenceObject == \"object\") {\n var objectTo = Object.create(referenceObject);\n for (var i in referenceObject) {\n if (referenceObject.hasOwnProperty(i)) {\n if (typeof referenceObject[i] == \"object\") {\n objectTo[i] = exports.bridgeObject(referenceObject[i]);\n }\n }\n }\n return objectTo;\n }\n else {\n return null;\n }\n};\n\n/**\n * This method provides a stable sort implementation, very fast for presorted data\n *\n * @param a the array\n * @param a order comparator\n * @returns {the array}\n */\nexports.insertSort = function (a,compare) {\n for (var i = 0; i < a.length; i++) {\n var k = a[i];\n for (var j = i; j > 0 && compare(k,a[j - 1])<0; j--) {\n a[j] = a[j - 1];\n }\n a[j] = k;\n }\n return a;\n}\n\n/**\n * this is used to set the options of subobjects in the options object. A requirement of these subobjects\n * is that they have an 'enabled' element which is optional for the user but mandatory for the program.\n *\n * @param [object] mergeTarget | this is either this.options or the options used for the groups.\n * @param [object] options | options\n * @param [String] option | this is the option key in the options argument\n */\nexports.mergeOptions = function (mergeTarget, options, option, allowDeletion = false, globalOptions = {}) {\n if (options[option] === null) {\n mergeTarget[option] = Object.create(globalOptions[option]);\n }\n else {\n if (options[option] !== undefined) {\n if (typeof options[option] === 'boolean') {\n mergeTarget[option].enabled = options[option];\n }\n else {\n if (options[option].enabled === undefined) {\n mergeTarget[option].enabled = true;\n }\n for (var prop in options[option]) {\n if (options[option].hasOwnProperty(prop)) {\n mergeTarget[option][prop] = options[option][prop];\n }\n }\n }\n }\n }\n}\n\n\n/**\n * This function does a binary search for a visible item in a sorted list. If we find a visible item, the code that uses\n * this function will then iterate in both directions over this sorted list to find all visible items.\n *\n * @param {Item[]} orderedItems | Items ordered by start\n * @param {function} comparator | -1 is lower, 0 is equal, 1 is higher\n * @param {String} field\n * @param {String} field2\n * @returns {number}\n * @private\n */\nexports.binarySearchCustom = function (orderedItems, comparator, field, field2) {\n var maxIterations = 10000;\n var iteration = 0;\n var low = 0;\n var high = orderedItems.length - 1;\n\n while (low <= high && iteration < maxIterations) {\n var middle = Math.floor((low + high) / 2);\n\n var item = orderedItems[middle];\n var value = (field2 === undefined) ? item[field] : item[field][field2];\n\n var searchResult = comparator(value);\n if (searchResult == 0) { // jihaa, found a visible item!\n return middle;\n }\n else if (searchResult == -1) { // it is too small --> increase low\n low = middle + 1;\n }\n else { // it is too big --> decrease high\n high = middle - 1;\n }\n\n iteration++;\n }\n\n return -1;\n};\n\n/**\n * This function does a binary search for a specific value in a sorted array. If it does not exist but is in between of\n * two values, we return either the one before or the one after, depending on user input\n * If it is found, we return the index, else -1.\n *\n * @param {Array} orderedItems\n * @param {{start: number, end: number}} target\n * @param {String} field\n * @param {String} sidePreference 'before' or 'after'\n * @param {function} comparator an optional comparator, returning -1,0,1 for <,==,>.\n * @returns {number}\n * @private\n */\nexports.binarySearchValue = function (orderedItems, target, field, sidePreference, comparator) {\n var maxIterations = 10000;\n var iteration = 0;\n var low = 0;\n var high = orderedItems.length - 1;\n var prevValue, value, nextValue, middle;\n\n var comparator = comparator != undefined ? comparator : function (a, b) {\n return a == b ? 0 : a < b ? -1 : 1\n };\n\n while (low <= high && iteration < maxIterations) {\n // get a new guess\n middle = Math.floor(0.5 * (high + low));\n prevValue = orderedItems[Math.max(0, middle - 1)][field];\n value = orderedItems[middle][field];\n nextValue = orderedItems[Math.min(orderedItems.length - 1, middle + 1)][field];\n\n if (comparator(value, target) == 0) { // we found the target\n return middle;\n }\n else if (comparator(prevValue, target) < 0 && comparator(value, target) > 0) { // target is in between of the previous and the current\n return sidePreference == 'before' ? Math.max(0, middle - 1) : middle;\n }\n else if (comparator(value, target) < 0 && comparator(nextValue, target) > 0) { // target is in between of the current and the next\n return sidePreference == 'before' ? middle : Math.min(orderedItems.length - 1, middle + 1);\n }\n else { // didnt find the target, we need to change our boundaries.\n if (comparator(value, target) < 0) { // it is too small --> increase low\n low = middle + 1;\n }\n else { // it is too big --> decrease high\n high = middle - 1;\n }\n }\n iteration++;\n }\n\n // didnt find anything. Return -1.\n return -1;\n};\n\n/*\n * Easing Functions - inspired from http://gizma.com/easing/\n * only considering the t value for the range [0, 1] => [0, 1]\n * https://gist.github.com/gre/1650294\n */\nexports.easingFunctions = {\n // no easing, no acceleration\n linear: function (t) {\n return t\n },\n // accelerating from zero velocity\n easeInQuad: function (t) {\n return t * t\n },\n // decelerating to zero velocity\n easeOutQuad: function (t) {\n return t * (2 - t)\n },\n // acceleration until halfway, then deceleration\n easeInOutQuad: function (t) {\n return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t\n },\n // accelerating from zero velocity\n easeInCubic: function (t) {\n return t * t * t\n },\n // decelerating to zero velocity\n easeOutCubic: function (t) {\n return (--t) * t * t + 1\n },\n // acceleration until halfway, then deceleration\n easeInOutCubic: function (t) {\n return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1\n },\n // accelerating from zero velocity\n easeInQuart: function (t) {\n return t * t * t * t\n },\n // decelerating to zero velocity\n easeOutQuart: function (t) {\n return 1 - (--t) * t * t * t\n },\n // acceleration until halfway, then deceleration\n easeInOutQuart: function (t) {\n return t < .5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t\n },\n // accelerating from zero velocity\n easeInQuint: function (t) {\n return t * t * t * t * t\n },\n // decelerating to zero velocity\n easeOutQuint: function (t) {\n return 1 + (--t) * t * t * t * t\n },\n // acceleration until halfway, then deceleration\n easeInOutQuint: function (t) {\n return t < .5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t\n }\n};\n\nexports.getScrollBarWidth = function () {\n var inner = document.createElement('p');\n inner.style.width = \"100%\";\n inner.style.height = \"200px\";\n\n var outer = document.createElement('div');\n outer.style.position = \"absolute\";\n outer.style.top = \"0px\";\n outer.style.left = \"0px\";\n outer.style.visibility = \"hidden\";\n outer.style.width = \"200px\";\n outer.style.height = \"150px\";\n outer.style.overflow = \"hidden\";\n outer.appendChild (inner);\n\n document.body.appendChild (outer);\n var w1 = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n if (w1 == w2) w2 = outer.clientWidth;\n\n document.body.removeChild (outer);\n\n return (w1 - w2);\n};\n\nexports.topMost = function (pile, accessors) {\n let candidate;\n if (!Array.isArray(accessors)) {\n accessors = [accessors];\n }\n for (const member of pile) {\n if (member) {\n candidate = member[accessors[0]];\n for (let i = 1; i < accessors.length; i++){\n if (candidate) {\n candidate = candidate[accessors[i]]\n } else {\n continue;\n }\n }\n if (typeof candidate != 'undefined') {\n break;\n }\n }\n }\n return candidate;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util.js","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/get-iterator.js\n// module id = 2\n// module chunks = 0","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/get-iterator.js\n// module id = 3\n// module chunks = 0","require('./es6.array.iterator');\nvar global = require('./_global')\n , hide = require('./_hide')\n , Iterators = require('./_iterators')\n , TO_STRING_TAG = require('./_wks')('toStringTag');\n\nfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n var NAME = collections[i]\n , Collection = global[NAME]\n , proto = Collection && Collection.prototype;\n if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/web.dom.iterable.js\n// module id = 4\n// module chunks = 0","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables')\n , step = require('./_iter-step')\n , Iterators = require('./_iterators')\n , toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , kind = this._k\n , index = this._i++;\n if(!O || index >= O.length){\n this._t = undefined;\n return step(1);\n }\n if(kind == 'keys' )return step(0, index);\n if(kind == 'values')return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.array.iterator.js\n// module id = 5\n// module chunks = 0","module.exports = function(){ /* empty */ };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_add-to-unscopables.js\n// module id = 6\n// module chunks = 0","module.exports = function(done, value){\n return {value: value, done: !!done};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iter-step.js\n// module id = 7\n// module chunks = 0","module.exports = {};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iterators.js\n// module id = 8\n// module chunks = 0","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n , defined = require('./_defined');\nmodule.exports = function(it){\n return IObject(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-iobject.js\n// module id = 9\n// module chunks = 0","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iobject.js\n// module id = 10\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_cof.js\n// module id = 11\n// module chunks = 0","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_defined.js\n// module id = 12\n// module chunks = 0","'use strict';\nvar LIBRARY = require('./_library')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , hide = require('./_hide')\n , has = require('./_has')\n , Iterators = require('./_iterators')\n , $iterCreate = require('./_iter-create')\n , setToStringTag = require('./_set-to-string-tag')\n , getPrototypeOf = require('./_object-gpo')\n , ITERATOR = require('./_wks')('iterator')\n , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n , FF_ITERATOR = '@@iterator'\n , KEYS = 'keys'\n , VALUES = 'values';\n\nvar returnThis = function(){ return this; };\n\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n $iterCreate(Constructor, NAME, next);\n var getMethod = function(kind){\n if(!BUGGY && kind in proto)return proto[kind];\n switch(kind){\n case KEYS: return function keys(){ return new Constructor(this, kind); };\n case VALUES: return function values(){ return new Constructor(this, kind); };\n } return function entries(){ return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator'\n , DEF_VALUES = DEFAULT == VALUES\n , VALUES_BUG = false\n , proto = Base.prototype\n , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n , $default = $native || getMethod(DEFAULT)\n , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n , methods, key, IteratorPrototype;\n // Fix native\n if($anyNative){\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n if(IteratorPrototype !== Object.prototype){\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if(DEF_VALUES && $native && $native.name !== VALUES){\n VALUES_BUG = true;\n $default = function values(){ return $native.call(this); };\n }\n // Define iterator\n if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if(DEFAULT){\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if(FORCED)for(key in methods){\n if(!(key in proto))redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iter-define.js\n// module id = 13\n// module chunks = 0","module.exports = true;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_library.js\n// module id = 14\n// module chunks = 0","var global = require('./_global')\n , core = require('./_core')\n , ctx = require('./_ctx')\n , hide = require('./_hide')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_export.js\n// module id = 15\n// module chunks = 0","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_global.js\n// module id = 16\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_core.js\n// module id = 17\n// module chunks = 0","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_ctx.js\n// module id = 18\n// module chunks = 0","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_a-function.js\n// module id = 19\n// module chunks = 0","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_hide.js\n// module id = 20\n// module chunks = 0","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-dp.js\n// module id = 21\n// module chunks = 0","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_an-object.js\n// module id = 22\n// module chunks = 0","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_is-object.js\n// module id = 23\n// module chunks = 0","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_ie8-dom-define.js\n// module id = 24\n// module chunks = 0","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_descriptors.js\n// module id = 25\n// module chunks = 0","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_fails.js\n// module id = 26\n// module chunks = 0","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_dom-create.js\n// module id = 27\n// module chunks = 0","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-primitive.js\n// module id = 28\n// module chunks = 0","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_property-desc.js\n// module id = 29\n// module chunks = 0","module.exports = require('./_hide');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_redefine.js\n// module id = 30\n// module chunks = 0","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_has.js\n// module id = 31\n// module chunks = 0","'use strict';\nvar create = require('./_object-create')\n , descriptor = require('./_property-desc')\n , setToStringTag = require('./_set-to-string-tag')\n , IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; });\n\nmodule.exports = function(Constructor, NAME, next){\n Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iter-create.js\n// module id = 32\n// module chunks = 0","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object')\n , dPs = require('./_object-dps')\n , enumBugKeys = require('./_enum-bug-keys')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , Empty = function(){ /* empty */ }\n , PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function(){\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe')\n , i = enumBugKeys.length\n , lt = '<'\n , gt = '>'\n , iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties){\n var result;\n if(O !== null){\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty;\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-create.js\n// module id = 33\n// module chunks = 0","var dP = require('./_object-dp')\n , anObject = require('./_an-object')\n , getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){\n anObject(O);\n var keys = getKeys(Properties)\n , length = keys.length\n , i = 0\n , P;\n while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-dps.js\n// module id = 34\n// module chunks = 0","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal')\n , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-keys.js\n// module id = 35\n// module chunks = 0","var has = require('./_has')\n , toIObject = require('./_to-iobject')\n , arrayIndexOf = require('./_array-includes')(false)\n , IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-keys-internal.js\n// module id = 36\n// module chunks = 0","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject')\n , toLength = require('./_to-length')\n , toIndex = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_array-includes.js\n// module id = 37\n// module chunks = 0","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-length.js\n// module id = 38\n// module chunks = 0","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-integer.js\n// module id = 39\n// module chunks = 0","var toInteger = require('./_to-integer')\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-index.js\n// module id = 40\n// module chunks = 0","var shared = require('./_shared')('keys')\n , uid = require('./_uid');\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_shared-key.js\n// module id = 41\n// module chunks = 0","var global = require('./_global')\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_shared.js\n// module id = 42\n// module chunks = 0","var id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_uid.js\n// module id = 43\n// module chunks = 0","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_enum-bug-keys.js\n// module id = 44\n// module chunks = 0","module.exports = require('./_global').document && document.documentElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_html.js\n// module id = 45\n// module chunks = 0","var def = require('./_object-dp').f\n , has = require('./_has')\n , TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function(it, tag, stat){\n if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_set-to-string-tag.js\n// module id = 46\n// module chunks = 0","var store = require('./_shared')('wks')\n , uid = require('./_uid')\n , Symbol = require('./_global').Symbol\n , USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function(name){\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_wks.js\n// module id = 47\n// module chunks = 0","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has')\n , toObject = require('./_to-object')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function(O){\n O = toObject(O);\n if(has(O, IE_PROTO))return O[IE_PROTO];\n if(typeof O.constructor == 'function' && O instanceof O.constructor){\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gpo.js\n// module id = 48\n// module chunks = 0","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n return Object(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-object.js\n// module id = 49\n// module chunks = 0","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function(iterated){\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , index = this._i\n , point;\n if(index >= O.length)return {value: undefined, done: true};\n point = $at(O, index);\n this._i += point.length;\n return {value: point, done: false};\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.string.iterator.js\n// module id = 50\n// module chunks = 0","var toInteger = require('./_to-integer')\n , defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function(TO_STRING){\n return function(that, pos){\n var s = String(defined(that))\n , i = toInteger(pos)\n , l = s.length\n , a, b;\n if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_string-at.js\n// module id = 51\n// module chunks = 0","var anObject = require('./_an-object')\n , get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function(it){\n var iterFn = get(it);\n if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/core.get-iterator.js\n// module id = 52\n// module chunks = 0","var classof = require('./_classof')\n , ITERATOR = require('./_wks')('iterator')\n , Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function(it){\n if(it != undefined)return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/core.get-iterator-method.js\n// module id = 53\n// module chunks = 0","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof')\n , TAG = require('./_wks')('toStringTag')\n // ES3 wrong here\n , ARG = cof(function(){ return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function(it, key){\n try {\n return it[key];\n } catch(e){ /* empty */ }\n};\n\nmodule.exports = function(it){\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_classof.js\n// module id = 54\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/create.js\n// module id = 55\n// module chunks = 0","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D){\n return $Object.create(P, D);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/object/create.js\n// module id = 56\n// module chunks = 0","var $export = require('./_export')\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', {create: require('./_object-create')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.object.create.js\n// module id = 57\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/keys.js\n// module id = 58\n// module chunks = 0","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/object/keys.js\n// module id = 59\n// module chunks = 0","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object')\n , $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function(){\n return function keys(it){\n return $keys(toObject(it));\n };\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.object.keys.js\n// module id = 60\n// module chunks = 0","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export')\n , core = require('./_core')\n , fails = require('./_fails');\nmodule.exports = function(KEY, exec){\n var fn = (core.Object || {})[KEY] || Object[KEY]\n , exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-sap.js\n// module id = 61\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/typeof.js\n// module id = 62\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/symbol/iterator.js\n// module id = 63\n// module chunks = 0","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/symbol/iterator.js\n// module id = 64\n// module chunks = 0","exports.f = require('./_wks');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_wks-ext.js\n// module id = 65\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/symbol.js\n// module id = 66\n// module chunks = 0","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/symbol/index.js\n// module id = 67\n// module chunks = 0","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global')\n , has = require('./_has')\n , DESCRIPTORS = require('./_descriptors')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , META = require('./_meta').KEY\n , $fails = require('./_fails')\n , shared = require('./_shared')\n , setToStringTag = require('./_set-to-string-tag')\n , uid = require('./_uid')\n , wks = require('./_wks')\n , wksExt = require('./_wks-ext')\n , wksDefine = require('./_wks-define')\n , keyOf = require('./_keyof')\n , enumKeys = require('./_enum-keys')\n , isArray = require('./_is-array')\n , anObject = require('./_an-object')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , createDesc = require('./_property-desc')\n , _create = require('./_object-create')\n , gOPNExt = require('./_object-gopn-ext')\n , $GOPD = require('./_object-gopd')\n , $DP = require('./_object-dp')\n , $keys = require('./_object-keys')\n , gOPD = $GOPD.f\n , dP = $DP.f\n , gOPN = gOPNExt.f\n , $Symbol = global.Symbol\n , $JSON = global.JSON\n , _stringify = $JSON && $JSON.stringify\n , PROTOTYPE = 'prototype'\n , HIDDEN = wks('_hidden')\n , TO_PRIMITIVE = wks('toPrimitive')\n , isEnum = {}.propertyIsEnumerable\n , SymbolRegistry = shared('symbol-registry')\n , AllSymbols = shared('symbols')\n , OPSymbols = shared('op-symbols')\n , ObjectProto = Object[PROTOTYPE]\n , USE_NATIVE = typeof $Symbol == 'function'\n , QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function(){\n return _create(dP({}, 'a', {\n get: function(){ return dP(this, 'a', {value: 7}).a; }\n })).a != 7;\n}) ? function(it, key, D){\n var protoDesc = gOPD(ObjectProto, key);\n if(protoDesc)delete ObjectProto[key];\n dP(it, key, D);\n if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function(tag){\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){\n return typeof it == 'symbol';\n} : function(it){\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D){\n if(it === ObjectProto)$defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if(has(AllSymbols, key)){\n if(!D.enumerable){\n if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;\n D = _create(D, {enumerable: createDesc(0, false)});\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P){\n anObject(it);\n var keys = enumKeys(P = toIObject(P))\n , i = 0\n , l = keys.length\n , key;\n while(l > i)$defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P){\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key){\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){\n it = toIObject(it);\n key = toPrimitive(key, true);\n if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;\n var D = gOPD(it, key);\n if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it){\n var names = gOPN(toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it){\n var IS_OP = it === ObjectProto\n , names = gOPN(IS_OP ? OPSymbols : toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif(!USE_NATIVE){\n $Symbol = function Symbol(){\n if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function(value){\n if(this === ObjectProto)$set.call(OPSymbols, value);\n if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString(){\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if(DESCRIPTORS && !require('./_library')){\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function(name){\n return wrap(wks(name));\n }\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});\n\nfor(var symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);\n\nfor(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key){\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key){\n if(isSymbol(key))return keyOf(SymbolRegistry, key);\n throw TypeError(key + ' is not a symbol!');\n },\n useSetter: function(){ setter = true; },\n useSimple: function(){ setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it){\n if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined\n var args = [it]\n , i = 1\n , replacer, $replacer;\n while(arguments.length > i)args.push(arguments[i++]);\n replacer = args[1];\n if(typeof replacer == 'function')$replacer = replacer;\n if($replacer || !isArray(replacer))replacer = function(key, value){\n if($replacer)value = $replacer.call(this, key, value);\n if(!isSymbol(value))return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.symbol.js\n// module id = 68\n// module chunks = 0","var META = require('./_uid')('meta')\n , isObject = require('./_is-object')\n , has = require('./_has')\n , setDesc = require('./_object-dp').f\n , id = 0;\nvar isExtensible = Object.isExtensible || function(){\n return true;\n};\nvar FREEZE = !require('./_fails')(function(){\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function(it){\n setDesc(it, META, {value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n }});\n};\nvar fastKey = function(it, create){\n // return primitive with prefix\n if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return 'F';\n // not necessary to add metadata\n if(!create)return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function(it, create){\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return true;\n // not necessary to add metadata\n if(!create)return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function(it){\n if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_meta.js\n// module id = 69\n// module chunks = 0","var global = require('./_global')\n , core = require('./_core')\n , LIBRARY = require('./_library')\n , wksExt = require('./_wks-ext')\n , defineProperty = require('./_object-dp').f;\nmodule.exports = function(name){\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_wks-define.js\n// module id = 70\n// module chunks = 0","var getKeys = require('./_object-keys')\n , toIObject = require('./_to-iobject');\nmodule.exports = function(object, el){\n var O = toIObject(object)\n , keys = getKeys(O)\n , length = keys.length\n , index = 0\n , key;\n while(length > index)if(O[key = keys[index++]] === el)return key;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_keyof.js\n// module id = 71\n// module chunks = 0","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie');\nmodule.exports = function(it){\n var result = getKeys(it)\n , getSymbols = gOPS.f;\n if(getSymbols){\n var symbols = getSymbols(it)\n , isEnum = pIE.f\n , i = 0\n , key;\n while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);\n } return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_enum-keys.js\n// module id = 72\n// module chunks = 0","exports.f = Object.getOwnPropertySymbols;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gops.js\n// module id = 73\n// module chunks = 0","exports.f = {}.propertyIsEnumerable;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-pie.js\n// module id = 74\n// module chunks = 0","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg){\n return cof(arg) == 'Array';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_is-array.js\n// module id = 75\n// module chunks = 0","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject')\n , gOPN = require('./_object-gopn').f\n , toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function(it){\n try {\n return gOPN(it);\n } catch(e){\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it){\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gopn-ext.js\n// module id = 76\n// module chunks = 0","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal')\n , hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\n return $keys(O, hiddenKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gopn.js\n// module id = 77\n// module chunks = 0","var pIE = require('./_object-pie')\n , createDesc = require('./_property-desc')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , has = require('./_has')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P){\n O = toIObject(O);\n P = toPrimitive(P, true);\n if(IE8_DOM_DEFINE)try {\n return gOPD(O, P);\n } catch(e){ /* empty */ }\n if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gopd.js\n// module id = 78\n// module chunks = 0","require('./_wks-define')('asyncIterator');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es7.symbol.async-iterator.js\n// module id = 80\n// module chunks = 0","require('./_wks-define')('observable');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es7.symbol.observable.js\n// module id = 81\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/json/stringify.js\n// module id = 82\n// module chunks = 0","var core = require('../../modules/_core')\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/json/stringify.js\n// module id = 83\n// module chunks = 0","// first check if moment.js is already loaded in the browser window, if so,\n// use this instance. Else, load via commonjs.\nmodule.exports = (typeof window !== 'undefined') && window['moment'] || require('moment');\n\n\n\n// WEBPACK FOOTER //\n// ./lib/module/moment.js","//! moment.js\n//! version : 2.17.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\nvar hookCallback;\n\nfunction hooks () {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback (callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n}\n\nfunction isObjectEmpty(obj) {\n var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\n}\n\nfunction isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n}\n\nfunction isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n}\n\nfunction map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nvar some$1 = some;\n\nfunction isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some$1.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n}\n\nfunction createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = hooks.momentProperties = [];\n\nfunction copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i in momentProperties) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\nvar updateInProgress = false;\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n}\n\nfunction absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\nfunction warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n}\n\nfunction set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\d{1,2}/).source);\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar keys$1 = keys;\n\nvar defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n};\n\nfunction calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nvar defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n};\n\nfunction longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate () {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d';\nvar defaultOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal (number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n};\n\nfunction relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n}\n\nfunction pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {};\n\nfunction addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n}\n\nfunction normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {};\n\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nfunction makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n}\n\nfunction set$1 (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n}\n\n// MOMENTS\n\nfunction stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\n\nfunction stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n}\n\nvar formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\nvar localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\nvar formatFunctions = {};\n\nvar formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar match1 = /\\d/; // 0 - 9\nvar match2 = /\\d\\d/; // 00 - 99\nvar match3 = /\\d{3}/; // 000 - 999\nvar match4 = /\\d{4}/; // 0000 - 9999\nvar match6 = /[+-]?\\d{6}/; // -999999 - 999999\nvar match1to2 = /\\d\\d?/; // 0 - 99\nvar match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nvar match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nvar match1to3 = /\\d{1,3}/; // 0 - 999\nvar match1to4 = /\\d{1,4}/; // 0 - 9999\nvar match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\nvar matchUnsigned = /\\d+/; // 0 - inf\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nvar matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\nvar matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\nvar regexes = {};\n\nfunction addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nvar tokens = {};\n\nfunction addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nvar YEAR = 0;\nvar MONTH = 1;\nvar DATE = 2;\nvar HOUR = 3;\nvar MINUTE = 4;\nvar SECOND = 5;\nvar MILLISECOND = 6;\nvar WEEK = 7;\nvar WEEKDAY = 8;\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nvar indexOf$1 = indexOf;\n\nfunction daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// ALIASES\n\naddUnitAlias('month', 'M');\n\n// PRIORITY\n\naddUnitPriority('month', 8);\n\n// PARSING\n\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nvar defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nfunction localeMonths (m, format) {\n if (!m) {\n return this._months;\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nvar defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nfunction localeMonthsShort (m, format) {\n if (!m) {\n return this._monthsShort;\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n}\n\nfunction getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n}\n\nvar defaultMonthsShortRegex = matchWord;\nfunction monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n}\n\nvar defaultMonthsRegex = matchWord;\nfunction monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\naddUnitAlias('year', 'y');\n\n// PRIORITIES\n\naddUnitPriority('year', 1);\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear () {\n return isLeapYear(this.year());\n}\n\nfunction createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\n var date = new Date(y, m, d, h, M, s, ms);\n\n //the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n\nfunction createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n //the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n\n// PARSING\n\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n});\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek () {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear () {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\n\nvar defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nfunction localeWeekdays (m, format) {\n if (!m) {\n return this._weekdays;\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n}\n\nvar defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nfunction localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n}\n\nvar defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nfunction localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nvar defaultWeekdaysRegex = matchWord;\nfunction weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n}\n\nvar defaultWeekdaysShortRegex = matchWord;\nfunction weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n}\n\nvar defaultWeekdaysMinRegex = matchWord;\nfunction weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n}\n\n\nfunction computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\nfunction meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// ALIASES\n\naddUnitAlias('hour', 'h');\n\n// PRIORITY\naddUnitPriority('hour', 13);\n\n// PARSING\n\nfunction matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nfunction localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\n\n// MOMENTS\n\n// Setting the hour should keep the time, because the user explicitly\n// specified which hour he wants. So trying to maintain the same hour (in\n// a new timezone) makes sense. Adding/subtracting hours does not follow\n// this rule.\nvar getSetHour = makeGetSet('Hours', true);\n\n// months\n// week\n// weekdays\n// meridiem\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n ordinalParse: defaultOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n};\n\n// internal storage for locale config files\nvar locales = {};\nvar localeFamilies = {};\nvar globalLocale;\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n}\n\nfunction loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys$1(locales);\n}\n\nfunction checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nvar basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\nvar tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\nvar isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n];\n\n// iso time formats and regexes\nvar isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\n\nvar aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n// date from iso format\nfunction configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\n// date from iso format or fallback\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n hooks.createFromInputFallback(config);\n }\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n}\n\n\nfunction meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n}\n\nfunction createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (typeof(input) === 'object') {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\nvar prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +(new Date());\n};\n\nfunction Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration (obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// FORMATTING\n\nfunction offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset (input, keepLocalTime) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal () {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\nvar isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\nfunction createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\n\nfunction parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add');\nvar subtract = createAdder(-1, 'subtract');\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n}\n\nfunction calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n}\n\nfunction clone () {\n return new Moment(this);\n}\n\nfunction isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n}\n\nfunction isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n}\n\nfunction isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n}\n\nfunction isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n}\n\nfunction diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 < this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData () {\n return this._locale;\n}\n\nfunction startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n}\n\nfunction endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n}\n\nfunction valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n}\n\nfunction unix () {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate () {\n return new Date(this.valueOf());\n}\n\nfunction toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n}\n\nfunction toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n}\n\nfunction toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$1 () {\n return isValid(this);\n}\n\nfunction parsingFlags () {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt () {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n});\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n}\n\nfunction getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n}\n\nfunction getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\naddUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\naddUnitPriority('quarter', 7);\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\naddUnitAlias('date', 'D');\n\n// PRIOROITY\naddUnitPriority('date', 9);\n\n// PARSING\n\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\naddUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\naddUnitAlias('minute', 'm');\n\n// PRIORITY\n\naddUnitPriority('minute', 14);\n\n// PARSING\n\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\naddUnitAlias('second', 's');\n\n// PRIORITY\n\naddUnitPriority('second', 15);\n\n// PARSING\n\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n\n// ALIASES\n\naddUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\naddUnitPriority('millisecond', 16);\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n// MOMENTS\n\nvar getSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$1;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\n\n// Year\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\n\n// Week Year\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\n\n// Quarter\nproto.quarter = proto.quarters = getSetQuarter;\n\n// Month\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\n\n// Week\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\n\n// Day\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\n\n// Hour\nproto.hour = proto.hours = getSetHour;\n\n// Minute\nproto.minute = proto.minutes = getSetMinute;\n\n// Second\nproto.second = proto.seconds = getSetSecond;\n\n// Millisecond\nproto.millisecond = proto.milliseconds = getSetMillisecond;\n\n// Offset\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\n\n// Timezone\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\n\n// Deprecations\nproto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\nproto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\nproto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\nproto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\nproto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\nfunction createUnix (input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat (string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\n\n// Month\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\n\n// Week\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n// Day of Week\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n// Hours\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n ordinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\n// Side effect imports\nhooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\nhooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\nvar mathAbs = Math.abs;\n\nfunction abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n}\n\nfunction monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n}\n\nfunction as (units) {\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n}\n\n// TODO: Use this.as('ms')?\nfunction valueOf$1 () {\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n}\n\nfunction makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms');\nvar asSeconds = makeAs('s');\nvar asMinutes = makeAs('m');\nvar asHours = makeAs('h');\nvar asDays = makeAs('d');\nvar asWeeks = makeAs('w');\nvar asMonths = makeAs('M');\nvar asYears = makeAs('y');\n\nfunction get$2 (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n}\n\nfunction makeGetter(name) {\n return function () {\n return this._data[name];\n };\n}\n\nvar milliseconds = makeGetter('milliseconds');\nvar seconds = makeGetter('seconds');\nvar minutes = makeGetter('minutes');\nvar hours = makeGetter('hours');\nvar days = makeGetter('days');\nvar months = makeGetter('months');\nvar years = makeGetter('years');\n\nfunction weeks () {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round;\nvar thresholds = {\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month\n M: 11 // months to year\n};\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds < thresholds.s && ['s', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n return true;\n}\n\nfunction humanize (withSuffix) {\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\n// Deprecations\nproto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\nproto$2.lang = lang;\n\n// Side effect imports\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n// Side effect imports\n\n\nhooks.version = '2.17.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\nreturn hooks;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/moment.js\n// module id = 85\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 86\n// module chunks = 0","function webpackContext(req) {\n\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n}\nwebpackContext.keys = function() { return []; };\nwebpackContext.resolve = webpackContext;\nmodule.exports = webpackContext;\nwebpackContext.id = 87;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale ^\\.\\/$^$\n// module id = 87\n// module chunks = 0","var _rng;\n\nvar globalVar = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : null;\n\nif (globalVar && globalVar.crypto && crypto.getRandomValues) {\n // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto\n // Moderately fast, high quality\n var _rnds8 = new Uint8Array(16);\n _rng = function whatwgRNG() {\n crypto.getRandomValues(_rnds8);\n return _rnds8;\n };\n}\n\nif (!_rng) {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var _rnds = new Array(16);\n _rng = function () {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return _rnds;\n };\n}\n\n// uuid.js\n//\n// Copyright (c) 2010-2012 Robert Kieffer\n// MIT License - http://opensource.org/licenses/mit-license.php\n\n// Unique ID creation requires a high quality random # generator. We feature\n// detect to determine the best RNG source, normalizing to a function that\n// returns 128-bits of randomness, since that's what's usually required\n\n//var _rng = require('./rng');\n\n// Maps for number <-> hex string conversion\nvar _byteToHex = [];\nvar _hexToByte = {};\nfor (var i = 0; i < 256; i++) {\n _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n _hexToByte[_byteToHex[i]] = i;\n}\n\n// **`parse()` - Parse a UUID into it's component bytes**\nfunction parse(s, buf, offset) {\n var i = (buf && offset) || 0, ii = 0;\n\n buf = buf || [];\n s.toLowerCase().replace(/[0-9a-f]{2}/g, function (oct) {\n if (ii < 16) { // Don't overflow!\n buf[i + ii++] = _hexToByte[oct];\n }\n });\n\n // Zero out remaining bytes if string was short\n while (ii < 16) {\n buf[i + ii++] = 0;\n }\n\n return buf;\n}\n\n// **`unparse()` - Convert UUID byte array (ala parse()) into a string**\nfunction unparse(buf, offset) {\n var i = offset || 0, bth = _byteToHex;\n return bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]];\n}\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\n// random #'s we need to init node and clockseq\nvar _seedBytes = _rng();\n\n// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\nvar _nodeId = [\n _seedBytes[0] | 0x01,\n _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]\n];\n\n// Per 4.2.2, randomize (14 bit) clockseq\nvar _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;\n\n// Previous uuid creation time\nvar _lastMSecs = 0, _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs) / 10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n var node = options.node || _nodeId;\n for (var n = 0; n < 6; n++) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : unparse(b);\n}\n\n// **`v4()` - Generate random UUID**\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v4(options, buf, offset) {\n // Deprecated - 'format' argument, as supported in v1.2\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options == 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || _rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ii++) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || unparse(rnds);\n}\n\n// Export public API\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\nuuid.parse = parse;\nuuid.unparse = unparse;\n\nmodule.exports = uuid;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/module/uuid.js","// utils\nexports.util = require('./lib/util');\nexports.DOMutil = require('./lib/DOMutil');\n\n// data\nexports.DataSet = require('./lib/DataSet');\nexports.DataView = require('./lib/DataView');\nexports.Queue = require('./lib/Queue');\n\n// Graph3d\nexports.Graph3d = require('./lib/graph3d/Graph3d');\nexports.graph3d = {\n Camera: require('./lib/graph3d/Camera'),\n Filter: require('./lib/graph3d/Filter'),\n Point2d: require('./lib/graph3d/Point2d'),\n Point3d: require('./lib/graph3d/Point3d'),\n Slider: require('./lib/graph3d/Slider'),\n StepNumber: require('./lib/graph3d/StepNumber')\n};\n\n// bundled external libraries\nexports.moment = require('./lib/module/moment');\nexports.Hammer = require('./lib/module/hammer');\nexports.keycharm = require('keycharm');\n\n\n\n// WEBPACK FOOTER //\n// ./index-graph3d.js","// DOM utility methods\n\n/**\n * this prepares the JSON container for allocating SVG elements\n * @param JSONcontainer\n * @private\n */\nexports.prepareElements = function(JSONcontainer) {\n // cleanup the redundant svgElements;\n for (var elementType in JSONcontainer) {\n if (JSONcontainer.hasOwnProperty(elementType)) {\n JSONcontainer[elementType].redundant = JSONcontainer[elementType].used;\n JSONcontainer[elementType].used = [];\n }\n }\n};\n\n/**\n * this cleans up all the unused SVG elements. By asking for the parentNode, we only need to supply the JSON container from\n * which to remove the redundant elements.\n *\n * @param JSONcontainer\n * @private\n */\nexports.cleanupElements = function(JSONcontainer) {\n // cleanup the redundant svgElements;\n for (var elementType in JSONcontainer) {\n if (JSONcontainer.hasOwnProperty(elementType)) {\n if (JSONcontainer[elementType].redundant) {\n for (var i = 0; i < JSONcontainer[elementType].redundant.length; i++) {\n JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i]);\n }\n JSONcontainer[elementType].redundant = [];\n }\n }\n }\n};\n\n/**\n * Ensures that all elements are removed first up so they can be recreated cleanly\n * @param JSONcontainer\n */\nexports.resetElements = function(JSONcontainer) {\n exports.prepareElements(JSONcontainer);\n exports.cleanupElements(JSONcontainer);\n exports.prepareElements(JSONcontainer);\n}\n\n/**\n * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer\n * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this.\n *\n * @param elementType\n * @param JSONcontainer\n * @param svgContainer\n * @returns {*}\n * @private\n */\nexports.getSVGElement = function (elementType, JSONcontainer, svgContainer) {\n var element;\n // allocate SVG element, if it doesnt yet exist, create one.\n if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before\n // check if there is an redundant element\n if (JSONcontainer[elementType].redundant.length > 0) {\n element = JSONcontainer[elementType].redundant[0];\n JSONcontainer[elementType].redundant.shift();\n }\n else {\n // create a new element and add it to the SVG\n element = document.createElementNS('http://www.w3.org/2000/svg', elementType);\n svgContainer.appendChild(element);\n }\n }\n else {\n // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it.\n element = document.createElementNS('http://www.w3.org/2000/svg', elementType);\n JSONcontainer[elementType] = {used: [], redundant: []};\n svgContainer.appendChild(element);\n }\n JSONcontainer[elementType].used.push(element);\n return element;\n};\n\n\n/**\n * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer\n * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this.\n *\n * @param elementType\n * @param JSONcontainer\n * @param DOMContainer\n * @returns {*}\n * @private\n */\nexports.getDOMElement = function (elementType, JSONcontainer, DOMContainer, insertBefore) {\n var element;\n // allocate DOM element, if it doesnt yet exist, create one.\n if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before\n // check if there is an redundant element\n if (JSONcontainer[elementType].redundant.length > 0) {\n element = JSONcontainer[elementType].redundant[0];\n JSONcontainer[elementType].redundant.shift();\n }\n else {\n // create a new element and add it to the SVG\n element = document.createElement(elementType);\n if (insertBefore !== undefined) {\n DOMContainer.insertBefore(element, insertBefore);\n }\n else {\n DOMContainer.appendChild(element);\n }\n }\n }\n else {\n // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it.\n element = document.createElement(elementType);\n JSONcontainer[elementType] = {used: [], redundant: []};\n if (insertBefore !== undefined) {\n DOMContainer.insertBefore(element, insertBefore);\n }\n else {\n DOMContainer.appendChild(element);\n }\n }\n JSONcontainer[elementType].used.push(element);\n return element;\n};\n\n\n\n\n/**\n * Draw a point object. This is a separate function because it can also be called by the legend.\n * The reason the JSONcontainer and the target SVG svgContainer have to be supplied is so the legend can use these functions\n * as well.\n *\n * @param x\n * @param y\n * @param groupTemplate: A template containing the necessary information to draw the datapoint e.g., {style: 'circle', size: 5, className: 'className' }\n * @param JSONcontainer\n * @param svgContainer\n * @param labelObj\n * @returns {*}\n */\nexports.drawPoint = function(x, y, groupTemplate, JSONcontainer, svgContainer, labelObj) {\n var point;\n if (groupTemplate.style == 'circle') {\n point = exports.getSVGElement('circle', JSONcontainer, svgContainer);\n point.setAttributeNS(null, \"cx\", x);\n point.setAttributeNS(null, \"cy\", y);\n point.setAttributeNS(null, \"r\", 0.5 * groupTemplate.size);\n }\n else {\n point = exports.getSVGElement('rect', JSONcontainer, svgContainer);\n point.setAttributeNS(null, \"x\", x - 0.5 * groupTemplate.size);\n point.setAttributeNS(null, \"y\", y - 0.5 * groupTemplate.size);\n point.setAttributeNS(null, \"width\", groupTemplate.size);\n point.setAttributeNS(null, \"height\", groupTemplate.size);\n }\n\n if (groupTemplate.styles !== undefined) {\n point.setAttributeNS(null, \"style\", groupTemplate.styles);\n }\n point.setAttributeNS(null, \"class\", groupTemplate.className + \" vis-point\");\n //handle label\n\n\n if (labelObj) {\n var label = exports.getSVGElement('text', JSONcontainer, svgContainer);\n if (labelObj.xOffset) {\n x = x + labelObj.xOffset;\n }\n\n if (labelObj.yOffset) {\n y = y + labelObj.yOffset;\n }\n if (labelObj.content) {\n label.textContent = labelObj.content;\n }\n\n if (labelObj.className) {\n label.setAttributeNS(null, \"class\", labelObj.className + \" vis-label\");\n }\n label.setAttributeNS(null, \"x\", x);\n label.setAttributeNS(null, \"y\", y);\n }\n\n return point;\n};\n\n/**\n * draw a bar SVG element centered on the X coordinate\n *\n * @param x\n * @param y\n * @param className\n */\nexports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer, style) {\n if (height != 0) {\n if (height < 0) {\n height *= -1;\n y -= height;\n }\n var rect = exports.getSVGElement('rect',JSONcontainer, svgContainer);\n rect.setAttributeNS(null, \"x\", x - 0.5 * width);\n rect.setAttributeNS(null, \"y\", y);\n rect.setAttributeNS(null, \"width\", width);\n rect.setAttributeNS(null, \"height\", height);\n rect.setAttributeNS(null, \"class\", className);\n if (style) {\n rect.setAttributeNS(null, \"style\", style);\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/DOMutil.js","var util = require('./util');\nvar Queue = require('./Queue');\n\n/**\n * DataSet\n *\n * Usage:\n * var dataSet = new DataSet({\n * fieldId: '_id',\n * type: {\n * // ...\n * }\n * });\n *\n * dataSet.add(item);\n * dataSet.add(data);\n * dataSet.update(item);\n * dataSet.update(data);\n * dataSet.remove(id);\n * dataSet.remove(ids);\n * var data = dataSet.get();\n * var data = dataSet.get(id);\n * var data = dataSet.get(ids);\n * var data = dataSet.get(ids, options, data);\n * dataSet.clear();\n *\n * A data set can:\n * - add/remove/update data\n * - gives triggers upon changes in the data\n * - can import/export data in various data formats\n *\n * @param {Array} [data] Optional array with initial data\n * @param {Object} [options] Available options:\n * {String} fieldId Field name of the id in the\n * items, 'id' by default.\n * {Object. listener.callback != callback);\n }\n};\n\n// TODO: remove this deprecated function some day (replaced with `on` since version 0.5, deprecated since v4.0)\nDataSet.prototype.unsubscribe = function () {\n throw new Error('DataSet.unsubscribe is deprecated. Use DataSet.off instead.');\n};\n\n/**\n * Trigger an event\n * @param {String} event\n * @param {Object | null} params\n * @param {String} [senderId] Optional id of the sender.\n * @private\n */\nDataSet.prototype._trigger = function (event, params, senderId) {\n if (event == '*') {\n throw new Error('Cannot trigger event *');\n }\n\n var subscribers = [];\n if (event in this._subscribers) {\n subscribers = subscribers.concat(this._subscribers[event]);\n }\n if ('*' in this._subscribers) {\n subscribers = subscribers.concat(this._subscribers['*']);\n }\n\n for (var i = 0, len = subscribers.length; i < len; i++) {\n var subscriber = subscribers[i];\n if (subscriber.callback) {\n subscriber.callback(event, params, senderId || null);\n }\n }\n};\n\n/**\n * Add data.\n * Adding an item will fail when there already is an item with the same id.\n * @param {Object | Array} data\n * @param {String} [senderId] Optional sender id\n * @return {Array} addedIds Array with the ids of the added items\n */\nDataSet.prototype.add = function (data, senderId) {\n var addedIds = [],\n id,\n me = this;\n\n if (Array.isArray(data)) {\n // Array\n for (var i = 0, len = data.length; i < len; i++) {\n id = me._addItem(data[i]);\n addedIds.push(id);\n }\n }\n else if (data instanceof Object) {\n // Single item\n id = me._addItem(data);\n addedIds.push(id);\n }\n else {\n throw new Error('Unknown dataType');\n }\n\n if (addedIds.length) {\n this._trigger('add', {items: addedIds}, senderId);\n }\n\n return addedIds;\n};\n\n/**\n * Update existing items. When an item does not exist, it will be created\n * @param {Object | Array} data\n * @param {String} [senderId] Optional sender id\n * @return {Array} updatedIds The ids of the added or updated items\n */\nDataSet.prototype.update = function (data, senderId) {\n var addedIds = [];\n var updatedIds = [];\n var oldData = [];\n var updatedData = [];\n var me = this;\n var fieldId = me._fieldId;\n\n var addOrUpdate = function (item) {\n var id = item[fieldId];\n if (me._data[id]) {\n var oldItem = util.extend({}, me._data[id]);\n // update item\n id = me._updateItem(item);\n updatedIds.push(id);\n updatedData.push(item);\n oldData.push(oldItem);\n }\n else {\n // add new item\n id = me._addItem(item);\n addedIds.push(id);\n }\n };\n\n if (Array.isArray(data)) {\n // Array\n for (var i = 0, len = data.length; i < len; i++) {\n if (data[i] instanceof Object){\n addOrUpdate(data[i]);\n } else {\n console.warn('Ignoring input item, which is not an object at index ' + i);\n }\n }\n }\n else if (data instanceof Object) {\n // Single item\n addOrUpdate(data);\n }\n else {\n throw new Error('Unknown dataType');\n }\n\n if (addedIds.length) {\n this._trigger('add', {items: addedIds}, senderId);\n }\n if (updatedIds.length) {\n var props = { items: updatedIds, oldData: oldData, data: updatedData };\n // TODO: remove deprecated property 'data' some day\n //Object.defineProperty(props, 'data', {\n // 'get': (function() {\n // console.warn('Property data is deprecated. Use DataSet.get(ids) to retrieve the new data, use the oldData property on this object to get the old data');\n // return updatedData;\n // }).bind(this)\n //});\n this._trigger('update', props, senderId);\n }\n\n return addedIds.concat(updatedIds);\n};\n\n/**\n * Get a data item or multiple items.\n *\n * Usage:\n *\n * get()\n * get(options: Object)\n *\n * get(id: Number | String)\n * get(id: Number | String, options: Object)\n *\n * get(ids: Number[] | String[])\n * get(ids: Number[] | String[], options: Object)\n *\n * Where:\n *\n * {Number | String} id The id of an item\n * {Number[] | String{}} ids An array with ids of items\n * {Object} options An Object with options. Available options:\n * {String} [returnType] Type of data to be returned.\n * Can be 'Array' (default) or 'Object'.\n * {Object.} [type]\n * {String[]} [fields] field names to be returned\n * {function} [filter] filter items\n * {String | function} [order] Order the items by a field name or custom sort function.\n * @throws Error\n */\nDataSet.prototype.get = function (args) {\n var me = this;\n\n // parse the arguments\n var id, ids, options;\n var firstType = util.getType(arguments[0]);\n if (firstType == 'String' || firstType == 'Number') {\n // get(id [, options])\n id = arguments[0];\n options = arguments[1];\n }\n else if (firstType == 'Array') {\n // get(ids [, options])\n ids = arguments[0];\n options = arguments[1];\n }\n else {\n // get([, options])\n options = arguments[0];\n }\n\n // determine the return type\n var returnType;\n if (options && options.returnType) {\n var allowedValues = ['Array', 'Object'];\n returnType = allowedValues.indexOf(options.returnType) == -1 ? 'Array' : options.returnType;\n }\n else {\n returnType = 'Array';\n }\n\n // build options\n var type = options && options.type || this._options.type;\n var filter = options && options.filter;\n var items = [], item, itemIds, itemId, i, len;\n\n // convert items\n if (id != undefined) {\n // return a single item\n item = me._getItem(id, type);\n if (item && filter && !filter(item)) {\n item = null;\n }\n }\n else if (ids != undefined) {\n // return a subset of items\n for (i = 0, len = ids.length; i < len; i++) {\n item = me._getItem(ids[i], type);\n if (!filter || filter(item)) {\n items.push(item);\n }\n }\n }\n else {\n // return all items\n itemIds = Object.keys(this._data);\n for (i = 0, len = itemIds.length; i < len; i++) {\n itemId = itemIds[i];\n item = me._getItem(itemId, type);\n if (!filter || filter(item)) {\n items.push(item);\n }\n }\n }\n\n // order the results\n if (options && options.order && id == undefined) {\n this._sort(items, options.order);\n }\n\n // filter fields of the items\n if (options && options.fields) {\n var fields = options.fields;\n if (id != undefined) {\n item = this._filterFields(item, fields);\n }\n else {\n for (i = 0, len = items.length; i < len; i++) {\n items[i] = this._filterFields(items[i], fields);\n }\n }\n }\n\n // return the results\n if (returnType == 'Object') {\n var result = {},\n resultant;\n for (i = 0, len = items.length; i < len; i++) {\n resultant = items[i];\n result[resultant.id] = resultant;\n }\n return result;\n }\n else {\n if (id != undefined) {\n // a single item\n return item;\n }\n else {\n // just return our array\n return items;\n }\n }\n};\n\n/**\n * Get ids of all items or from a filtered set of items.\n * @param {Object} [options] An Object with options. Available options:\n * {function} [filter] filter items\n * {String | function} [order] Order the items by\n * a field name or custom sort function.\n * @return {Array} ids\n */\nDataSet.prototype.getIds = function (options) {\n var data = this._data,\n filter = options && options.filter,\n order = options && options.order,\n type = options && options.type || this._options.type,\n itemIds = Object.keys(data),\n i,\n len,\n id,\n item,\n items,\n ids = [];\n\n if (filter) {\n // get filtered items\n if (order) {\n // create ordered list\n items = [];\n for (i = 0, len = itemIds.length; i < len; i++) {\n id = itemIds[i];\n item = this._getItem(id, type);\n if (filter(item)) {\n items.push(item);\n }\n }\n\n this._sort(items, order);\n\n for (i = 0, len = items.length; i < len; i++) {\n ids.push(items[i][this._fieldId]);\n }\n }\n else {\n // create unordered list\n for (i = 0, len = itemIds.length; i < len; i++) {\n id = itemIds[i];\n item = this._getItem(id, type);\n if (filter(item)) {\n ids.push(item[this._fieldId]);\n }\n }\n }\n }\n else {\n // get all items\n if (order) {\n // create an ordered list\n items = [];\n for (i = 0, len = itemIds.length; i < len; i++) {\n id = itemIds[i];\n items.push(data[id]);\n }\n\n this._sort(items, order);\n\n for (i = 0, len = items.length; i < len; i++) {\n ids.push(items[i][this._fieldId]);\n }\n }\n else {\n // create unordered list\n for (i = 0, len = itemIds.length; i < len; i++) {\n id = itemIds[i];\n item = data[id];\n ids.push(item[this._fieldId]);\n }\n }\n }\n\n return ids;\n};\n\n/**\n * Returns the DataSet itself. Is overwritten for example by the DataView,\n * which returns the DataSet it is connected to instead.\n */\nDataSet.prototype.getDataSet = function () {\n return this;\n};\n\n/**\n * Execute a callback function for every item in the dataset.\n * @param {function} callback\n * @param {Object} [options] Available options:\n * {Object.} [type]\n * {String[]} [fields] filter fields\n * {function} [filter] filter items\n * {String | function} [order] Order the items by\n * a field name or custom sort function.\n */\nDataSet.prototype.forEach = function (callback, options) {\n var filter = options && options.filter,\n type = options && options.type || this._options.type,\n data = this._data,\n itemIds = Object.keys(data),\n i,\n len,\n item,\n id;\n\n if (options && options.order) {\n // execute forEach on ordered list\n var items = this.get(options);\n\n for (i = 0, len = items.length; i < len; i++) {\n item = items[i];\n id = item[this._fieldId];\n callback(item, id);\n }\n }\n else {\n // unordered\n for (i = 0, len = itemIds.length; i < len; i++) {\n id = itemIds[i];\n item = this._getItem(id, type);\n if (!filter || filter(item)) {\n callback(item, id);\n }\n }\n }\n};\n\n/**\n * Map every item in the dataset.\n * @param {function} callback\n * @param {Object} [options] Available options:\n * {Object.} [type]\n * {String[]} [fields] filter fields\n * {function} [filter] filter items\n * {String | function} [order] Order the items by\n * a field name or custom sort function.\n * @return {Object[]} mappedItems\n */\nDataSet.prototype.map = function (callback, options) {\n var filter = options && options.filter,\n type = options && options.type || this._options.type,\n mappedItems = [],\n data = this._data,\n itemIds = Object.keys(data),\n i,\n len,\n id,\n item;\n\n // convert and filter items\n for (i = 0, len = itemIds.length; i < len; i++) {\n id = itemIds[i];\n item = this._getItem(id, type);\n if (!filter || filter(item)) {\n mappedItems.push(callback(item, id));\n }\n }\n\n // order items\n if (options && options.order) {\n this._sort(mappedItems, options.order);\n }\n\n return mappedItems;\n};\n\n/**\n * Filter the fields of an item\n * @param {Object | null} item\n * @param {String[]} fields Field names\n * @return {Object | null} filteredItem or null if no item is provided\n * @private\n */\nDataSet.prototype._filterFields = function (item, fields) {\n if (!item) { // item is null\n return item;\n }\n\n var filteredItem = {},\n itemFields = Object.keys(item),\n len = itemFields.length,\n i,\n field;\n\n if(Array.isArray(fields)){\n for (i = 0; i < len; i++) {\n field = itemFields[i];\n if (fields.indexOf(field) != -1) {\n filteredItem[field] = item[field];\n }\n }\n }else{\n for (i = 0; i < len; i++) {\n field = itemFields[i];\n if (fields.hasOwnProperty(field)) {\n filteredItem[fields[field]] = item[field];\n }\n }\n }\n\n return filteredItem;\n};\n\n/**\n * Sort the provided array with items\n * @param {Object[]} items\n * @param {String | function} order A field name or custom sort function.\n * @private\n */\nDataSet.prototype._sort = function (items, order) {\n if (util.isString(order)) {\n // order by provided field name\n var name = order; // field name\n items.sort(function (a, b) {\n var av = a[name];\n var bv = b[name];\n return (av > bv) ? 1 : ((av < bv) ? -1 : 0);\n });\n }\n else if (typeof order === 'function') {\n // order by sort function\n items.sort(order);\n }\n // TODO: extend order by an Object {field:String, direction:String}\n // where direction can be 'asc' or 'desc'\n else {\n throw new TypeError('Order must be a function or a string');\n }\n};\n\n/**\n * Remove an object by pointer or by id\n * @param {String | Number | Object | Array} id Object or id, or an array with\n * objects or ids to be removed\n * @param {String} [senderId] Optional sender id\n * @return {Array} removedIds\n */\nDataSet.prototype.remove = function (id, senderId) {\n var removedIds = [],\n removedItems = [],\n ids = [],\n i, len, itemId, item;\n\n // force everything to be an array for simplicity\n ids = Array.isArray(id) ? id : [id];\n\n for (i = 0, len = ids.length; i < len; i++) {\n item = this._remove(ids[i]);\n if (item) {\n itemId = item[this._fieldId];\n if (itemId != undefined) {\n removedIds.push(itemId);\n removedItems.push(item);\n }\n }\n }\n\n if (removedIds.length) {\n this._trigger('remove', {items: removedIds, oldData: removedItems}, senderId);\n }\n\n return removedIds;\n};\n\n/**\n * Remove an item by its id\n * @param {Number | String | Object} id id or item\n * @returns {Number | String | null} id\n * @private\n */\nDataSet.prototype._remove = function (id) {\n var item,\n ident;\n\n // confirm the id to use based on the args type\n if (util.isNumber(id) || util.isString(id)) {\n ident = id;\n }\n else if (id instanceof Object) {\n ident = id[this._fieldId]; // look for the identifier field using _fieldId\n }\n\n // do the remove if the item is found\n if (ident !== undefined && this._data[ident]) {\n item = this._data[ident];\n delete this._data[ident];\n this.length--;\n return item;\n }\n return null;\n};\n\n/**\n * Clear the data\n * @param {String} [senderId] Optional sender id\n * @return {Array} removedIds The ids of all removed items\n */\nDataSet.prototype.clear = function (senderId) {\n var i, len;\n var ids = Object.keys(this._data);\n var items = [];\n\n for (i = 0, len = ids.length; i < len; i++) {\n items.push(this._data[ids[i]]);\n }\n\n this._data = {};\n this.length = 0;\n\n this._trigger('remove', {items: ids, oldData: items}, senderId);\n\n return ids;\n};\n\n/**\n * Find the item with maximum value of a specified field\n * @param {String} field\n * @return {Object | null} item Item containing max value, or null if no items\n */\nDataSet.prototype.max = function (field) {\n var data = this._data,\n itemIds = Object.keys(data),\n max = null,\n maxField = null,\n i,\n len;\n\n for (i = 0, len = itemIds.length; i < len; i++) {\n var id = itemIds[i];\n var item = data[id];\n var itemField = item[field];\n if (itemField != null && (!max || itemField > maxField)) {\n max = item;\n maxField = itemField;\n }\n }\n\n return max;\n};\n\n/**\n * Find the item with minimum value of a specified field\n * @param {String} field\n * @return {Object | null} item Item containing max value, or null if no items\n */\nDataSet.prototype.min = function (field) {\n var data = this._data,\n itemIds = Object.keys(data),\n min = null,\n minField = null,\n i,\n len;\n\n for (i = 0, len = itemIds.length; i < len; i++) {\n var id = itemIds[i];\n var item = data[id];\n var itemField = item[field];\n if (itemField != null && (!min || itemField < minField)) {\n min = item;\n minField = itemField;\n }\n }\n\n return min;\n};\n\n/**\n * Find all distinct values of a specified field\n * @param {String} field\n * @return {Array} values Array containing all distinct values. If data items\n * do not contain the specified field are ignored.\n * The returned array is unordered.\n */\nDataSet.prototype.distinct = function (field) {\n var data = this._data;\n var itemIds = Object.keys(data);\n var values = [];\n var fieldType = this._options.type && this._options.type[field] || null;\n var count = 0;\n var i,\n j,\n len;\n\n for (i = 0, len = itemIds.length; i < len; i++) {\n var id = itemIds[i];\n var item = data[id];\n var value = item[field];\n var exists = false;\n for (j = 0; j < count; j++) {\n if (values[j] == value) {\n exists = true;\n break;\n }\n }\n if (!exists && (value !== undefined)) {\n values[count] = value;\n count++;\n }\n }\n\n if (fieldType) {\n for (i = 0, len = values.length; i < len; i++) {\n values[i] = util.convert(values[i], fieldType);\n }\n }\n\n return values;\n};\n\n/**\n * Add a single item. Will fail when an item with the same id already exists.\n * @param {Object} item\n * @return {String} id\n * @private\n */\nDataSet.prototype._addItem = function (item) {\n var id = item[this._fieldId];\n\n if (id != undefined) {\n // check whether this id is already taken\n if (this._data[id]) {\n // item already exists\n throw new Error('Cannot add item: item with id ' + id + ' already exists');\n }\n }\n else {\n // generate an id\n id = util.randomUUID();\n item[this._fieldId] = id;\n }\n\n var d = {},\n fields = Object.keys(item),\n i,\n len;\n for (i = 0, len = fields.length; i < len; i++) {\n var field = fields[i];\n var fieldType = this._type[field]; // type may be undefined\n d[field] = util.convert(item[field], fieldType);\n }\n this._data[id] = d;\n this.length++;\n\n return id;\n};\n\n/**\n * Get an item. Fields can be converted to a specific type\n * @param {String} id\n * @param {Object.} [types] field types to convert\n * @return {Object | null} item\n * @private\n */\nDataSet.prototype._getItem = function (id, types) {\n var field, value, i, len;\n\n // get the item from the dataset\n var raw = this._data[id];\n if (!raw) {\n return null;\n }\n\n // convert the items field types\n var converted = {},\n fields = Object.keys(raw);\n\n if (types) {\n for (i = 0, len = fields.length; i < len; i++) {\n field = fields[i];\n value = raw[field];\n converted[field] = util.convert(value, types[field]);\n }\n }\n else {\n // no field types specified, no converting needed\n for (i = 0, len = fields.length; i < len; i++) {\n field = fields[i];\n value = raw[field];\n converted[field] = value;\n }\n }\n\n if (!converted[this._fieldId]) {\n converted[this._fieldId] = raw.id;\n }\n\n return converted;\n};\n\n/**\n * Update a single item: merge with existing item.\n * Will fail when the item has no id, or when there does not exist an item\n * with the same id.\n * @param {Object} item\n * @return {String} id\n * @private\n */\nDataSet.prototype._updateItem = function (item) {\n var id = item[this._fieldId];\n if (id == undefined) {\n throw new Error('Cannot update item: item has no id (item: ' + JSON.stringify(item) + ')');\n }\n var d = this._data[id];\n if (!d) {\n // item doesn't exist\n throw new Error('Cannot update item: no item with id ' + id + ' found');\n }\n\n // merge with current item\n var fields = Object.keys(item);\n for (var i = 0, len = fields.length; i < len; i++) {\n var field = fields[i];\n var fieldType = this._type[field]; // type may be undefined\n d[field] = util.convert(item[field], fieldType);\n }\n\n return id;\n};\n\nmodule.exports = DataSet;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/DataSet.js","/**\n * A queue\n * @param {Object} options\n * Available options:\n * - delay: number When provided, the queue will be flushed\n * automatically after an inactivity of this delay\n * in milliseconds.\n * Default value is null.\n * - max: number When the queue exceeds the given maximum number\n * of entries, the queue is flushed automatically.\n * Default value of max is Infinity.\n * @constructor\n */\nfunction Queue(options) {\n // options\n this.delay = null;\n this.max = Infinity;\n\n // properties\n this._queue = [];\n this._timeout = null;\n this._extended = null;\n\n this.setOptions(options);\n}\n\n/**\n * Update the configuration of the queue\n * @param {Object} options\n * Available options:\n * - delay: number When provided, the queue will be flushed\n * automatically after an inactivity of this delay\n * in milliseconds.\n * Default value is null.\n * - max: number When the queue exceeds the given maximum number\n * of entries, the queue is flushed automatically.\n * Default value of max is Infinity.\n * @param options\n */\nQueue.prototype.setOptions = function (options) {\n if (options && typeof options.delay !== 'undefined') {\n this.delay = options.delay;\n }\n if (options && typeof options.max !== 'undefined') {\n this.max = options.max;\n }\n\n this._flushIfNeeded();\n};\n\n/**\n * Extend an object with queuing functionality.\n * The object will be extended with a function flush, and the methods provided\n * in options.replace will be replaced with queued ones.\n * @param {Object} object\n * @param {Object} options\n * Available options:\n * - replace: Array.\n * A list with method names of the methods\n * on the object to be replaced with queued ones.\n * - delay: number When provided, the queue will be flushed\n * automatically after an inactivity of this delay\n * in milliseconds.\n * Default value is null.\n * - max: number When the queue exceeds the given maximum number\n * of entries, the queue is flushed automatically.\n * Default value of max is Infinity.\n * @return {Queue} Returns the created queue\n */\nQueue.extend = function (object, options) {\n var queue = new Queue(options);\n\n if (object.flush !== undefined) {\n throw new Error('Target object already has a property flush');\n }\n object.flush = function () {\n queue.flush();\n };\n\n var methods = [{\n name: 'flush',\n original: undefined\n }];\n\n if (options && options.replace) {\n for (var i = 0; i < options.replace.length; i++) {\n var name = options.replace[i];\n methods.push({\n name: name,\n original: object[name]\n });\n queue.replace(object, name);\n }\n }\n\n queue._extended = {\n object: object,\n methods: methods\n };\n\n return queue;\n};\n\n/**\n * Destroy the queue. The queue will first flush all queued actions, and in\n * case it has extended an object, will restore the original object.\n */\nQueue.prototype.destroy = function () {\n this.flush();\n\n if (this._extended) {\n var object = this._extended.object;\n var methods = this._extended.methods;\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n if (method.original) {\n object[method.name] = method.original;\n }\n else {\n delete object[method.name];\n }\n }\n this._extended = null;\n }\n};\n\n/**\n * Replace a method on an object with a queued version\n * @param {Object} object Object having the method\n * @param {string} method The method name\n */\nQueue.prototype.replace = function(object, method) {\n var me = this;\n var original = object[method];\n if (!original) {\n throw new Error('Method ' + method + ' undefined');\n }\n\n object[method] = function () {\n // create an Array with the arguments\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n // add this call to the queue\n me.queue({\n args: args,\n fn: original,\n context: this\n });\n };\n};\n\n/**\n * Queue a call\n * @param {function | {fn: function, args: Array} | {fn: function, args: Array, context: Object}} entry\n */\nQueue.prototype.queue = function(entry) {\n if (typeof entry === 'function') {\n this._queue.push({fn: entry});\n }\n else {\n this._queue.push(entry);\n }\n\n this._flushIfNeeded();\n};\n\n/**\n * Check whether the queue needs to be flushed\n * @private\n */\nQueue.prototype._flushIfNeeded = function () {\n // flush when the maximum is exceeded.\n if (this._queue.length > this.max) {\n this.flush();\n }\n\n // flush after a period of inactivity when a delay is configured\n clearTimeout(this._timeout);\n if (this.queue.length > 0 && typeof this.delay === 'number') {\n var me = this;\n this._timeout = setTimeout(function () {\n me.flush();\n }, this.delay);\n }\n};\n\n/**\n * Flush all queued calls\n */\nQueue.prototype.flush = function () {\n while (this._queue.length > 0) {\n var entry = this._queue.shift();\n entry.fn.apply(entry.context || entry.fn, entry.args || []);\n }\n};\n\nmodule.exports = Queue;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/Queue.js","var util = require('./util');\nvar DataSet = require('./DataSet');\n\n/**\n * DataView\n *\n * a dataview offers a filtered view on a dataset or an other dataview.\n *\n * @param {DataSet | DataView} data\n * @param {Object} [options] Available options: see method get\n *\n * @constructor DataView\n */\nfunction DataView (data, options) {\n this._data = null;\n this._ids = {}; // ids of the items currently in memory (just contains a boolean true)\n this.length = 0; // number of items in the DataView\n this._options = options || {};\n this._fieldId = 'id'; // name of the field containing id\n this._subscribers = {}; // event subscribers\n\n var me = this;\n this.listener = function () {\n me._onEvent.apply(me, arguments);\n };\n\n this.setData(data);\n}\n\n// TODO: implement a function .config() to dynamically update things like configured filter\n// and trigger changes accordingly\n\n/**\n * Set a data source for the view\n * @param {DataSet | DataView} data\n */\nDataView.prototype.setData = function (data) {\n var ids, id, i, len, items;\n\n if (this._data) {\n // unsubscribe from current dataset\n if (this._data.off) {\n this._data.off('*', this.listener);\n }\n\n // trigger a remove of all items in memory\n ids = this._data.getIds({filter: this._options && this._options.filter});\n items = [];\n\n for (i = 0, len = ids.length; i < len; i++) {\n items.push(this._data._data[ids[i]]);\n }\n\n this._ids = {};\n this.length = 0;\n this._trigger('remove', {items: ids, oldData: items});\n }\n\n this._data = data;\n\n if (this._data) {\n // update fieldId\n this._fieldId = this._options.fieldId ||\n (this._data && this._data.options && this._data.options.fieldId) ||\n 'id';\n\n // trigger an add of all added items\n ids = this._data.getIds({filter: this._options && this._options.filter});\n for (i = 0, len = ids.length; i < len; i++) {\n id = ids[i];\n this._ids[id] = true;\n }\n this.length = ids.length;\n this._trigger('add', {items: ids});\n\n // subscribe to new dataset\n if (this._data.on) {\n this._data.on('*', this.listener);\n }\n }\n};\n\n/**\n * Refresh the DataView. Useful when the DataView has a filter function\n * containing a variable parameter.\n */\nDataView.prototype.refresh = function () {\n var id, i, len;\n var ids = this._data.getIds({filter: this._options && this._options.filter}),\n oldIds = Object.keys(this._ids),\n newIds = {},\n addedIds = [],\n removedIds = [],\n removedItems = [];\n\n // check for additions\n for (i = 0, len = ids.length; i < len; i++) {\n id = ids[i];\n newIds[id] = true;\n if (!this._ids[id]) {\n addedIds.push(id);\n this._ids[id] = true;\n }\n }\n\n // check for removals\n for (i = 0, len = oldIds.length; i < len; i++) {\n id = oldIds[i];\n if (!newIds[id]) {\n removedIds.push(id);\n removedItems.push(this._data._data[id]);\n delete this._ids[id];\n }\n }\n\n this.length += addedIds.length - removedIds.length;\n\n // trigger events\n if (addedIds.length) {\n this._trigger('add', {items: addedIds});\n }\n if (removedIds.length) {\n this._trigger('remove', {items: removedIds, oldData: removedItems});\n }\n};\n\n/**\n * Get data from the data view\n *\n * Usage:\n *\n * get()\n * get(options: Object)\n * get(options: Object, data: Array | DataTable)\n *\n * get(id: Number)\n * get(id: Number, options: Object)\n * get(id: Number, options: Object, data: Array | DataTable)\n *\n * get(ids: Number[])\n * get(ids: Number[], options: Object)\n * get(ids: Number[], options: Object, data: Array | DataTable)\n *\n * Where:\n *\n * {Number | String} id The id of an item\n * {Number[] | String{}} ids An array with ids of items\n * {Object} options An Object with options. Available options:\n * {String} [type] Type of data to be returned. Can\n * be 'DataTable' or 'Array' (default)\n * {Object.} [convert]\n * {String[]} [fields] field names to be returned\n * {function} [filter] filter items\n * {String | function} [order] Order the items by\n * a field name or custom sort function.\n * {Array | DataTable} [data] If provided, items will be appended to this\n * array or table. Required in case of Google\n * DataTable.\n * @param args\n */\nDataView.prototype.get = function (args) {\n var me = this;\n\n // parse the arguments\n var ids, options, data;\n var firstType = util.getType(arguments[0]);\n if (firstType == 'String' || firstType == 'Number' || firstType == 'Array') {\n // get(id(s) [, options] [, data])\n ids = arguments[0]; // can be a single id or an array with ids\n options = arguments[1];\n data = arguments[2];\n }\n else {\n // get([, options] [, data])\n options = arguments[0];\n data = arguments[1];\n }\n\n // extend the options with the default options and provided options\n var viewOptions = util.extend({}, this._options, options);\n\n // create a combined filter method when needed\n if (this._options.filter && options && options.filter) {\n viewOptions.filter = function (item) {\n return me._options.filter(item) && options.filter(item);\n }\n }\n\n // build up the call to the linked data set\n var getArguments = [];\n if (ids != undefined) {\n getArguments.push(ids);\n }\n getArguments.push(viewOptions);\n getArguments.push(data);\n\n return this._data && this._data.get.apply(this._data, getArguments);\n};\n\n/**\n * Get ids of all items or from a filtered set of items.\n * @param {Object} [options] An Object with options. Available options:\n * {function} [filter] filter items\n * {String | function} [order] Order the items by\n * a field name or custom sort function.\n * @return {Array} ids\n */\nDataView.prototype.getIds = function (options) {\n var ids;\n\n if (this._data) {\n var defaultFilter = this._options.filter;\n var filter;\n\n if (options && options.filter) {\n if (defaultFilter) {\n filter = function (item) {\n return defaultFilter(item) && options.filter(item);\n }\n }\n else {\n filter = options.filter;\n }\n }\n else {\n filter = defaultFilter;\n }\n\n ids = this._data.getIds({\n filter: filter,\n order: options && options.order\n });\n }\n else {\n ids = [];\n }\n\n return ids;\n};\n\n/**\n * Map every item in the dataset.\n * @param {function} callback\n * @param {Object} [options] Available options:\n * {Object.} [type]\n * {String[]} [fields] filter fields\n * {function} [filter] filter items\n * {String | function} [order] Order the items by\n * a field name or custom sort function.\n * @return {Object[]} mappedItems\n */\nDataView.prototype.map = function (callback,options) {\n var mappedItems = [];\n if (this._data) {\n var defaultFilter = this._options.filter;\n var filter;\n\n if (options && options.filter) {\n if (defaultFilter) {\n filter = function (item) {\n return defaultFilter(item) && options.filter(item);\n }\n }\n else {\n filter = options.filter;\n }\n }\n else {\n filter = defaultFilter;\n }\n\n mappedItems = this._data.map(callback,{\n filter: filter,\n order: options && options.order\n });\n }\n else {\n mappedItems = [];\n }\n\n return mappedItems;\n};\n\n/**\n * Get the DataSet to which this DataView is connected. In case there is a chain\n * of multiple DataViews, the root DataSet of this chain is returned.\n * @return {DataSet} dataSet\n */\nDataView.prototype.getDataSet = function () {\n var dataSet = this;\n while (dataSet instanceof DataView) {\n dataSet = dataSet._data;\n }\n return dataSet || null;\n};\n\n/**\n * Event listener. Will propagate all events from the connected data set to\n * the subscribers of the DataView, but will filter the items and only trigger\n * when there are changes in the filtered data set.\n * @param {String} event\n * @param {Object | null} params\n * @param {String} senderId\n * @private\n */\nDataView.prototype._onEvent = function (event, params, senderId) {\n var i, len, id, item;\n var ids = params && params.items;\n var addedIds = [],\n updatedIds = [],\n removedIds = [],\n oldItems = [],\n updatedItems = [],\n removedItems = [];\n\n if (ids && this._data) {\n switch (event) {\n case 'add':\n // filter the ids of the added items\n for (i = 0, len = ids.length; i < len; i++) {\n id = ids[i];\n item = this.get(id);\n if (item) {\n this._ids[id] = true;\n addedIds.push(id);\n }\n }\n\n break;\n\n case 'update':\n // determine the event from the views viewpoint: an updated\n // item can be added, updated, or removed from this view.\n for (i = 0, len = ids.length; i < len; i++) {\n id = ids[i];\n item = this.get(id);\n\n if (item) {\n if (this._ids[id]) {\n updatedIds.push(id);\n updatedItems.push(params.data[i]);\n oldItems.push(params.oldData[i]);\n }\n else {\n this._ids[id] = true;\n addedIds.push(id);\n }\n }\n else {\n if (this._ids[id]) {\n delete this._ids[id];\n removedIds.push(id);\n removedItems.push(params.oldData[i]);\n }\n else {\n // nothing interesting for me :-(\n }\n }\n }\n\n break;\n\n case 'remove':\n // filter the ids of the removed items\n for (i = 0, len = ids.length; i < len; i++) {\n id = ids[i];\n if (this._ids[id]) {\n delete this._ids[id];\n removedIds.push(id);\n removedItems.push(params.oldData[i]);\n }\n }\n\n break;\n }\n\n this.length += addedIds.length - removedIds.length;\n\n if (addedIds.length) {\n this._trigger('add', {items: addedIds}, senderId);\n }\n if (updatedIds.length) {\n this._trigger('update', {items: updatedIds, oldData: oldItems, data: updatedItems}, senderId);\n }\n if (removedIds.length) {\n this._trigger('remove', {items: removedIds, oldData: removedItems}, senderId);\n }\n }\n};\n\n// copy subscription functionality from DataSet\nDataView.prototype.on = DataSet.prototype.on;\nDataView.prototype.off = DataSet.prototype.off;\nDataView.prototype._trigger = DataSet.prototype._trigger;\n\n// TODO: make these functions deprecated (replaced with `on` and `off` since version 0.5)\nDataView.prototype.subscribe = DataView.prototype.on;\nDataView.prototype.unsubscribe = DataView.prototype.off;\n\nmodule.exports = DataView;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/DataView.js","var Emitter = require('emitter-component'); var DataSet = require('../DataSet');\nvar DataView = require('../DataView');\nvar util = require('../util');\nvar Point3d = require('./Point3d');\nvar Point2d = require('./Point2d');\nvar Camera = require('./Camera');\nvar Filter = require('./Filter');\nvar Slider = require('./Slider');\nvar StepNumber = require('./StepNumber');\nvar Range = require('./Range');\nvar Settings = require('./Settings');\n\n\n/// enumerate the available styles\nGraph3d.STYLE = Settings.STYLE; \n\n\n/**\n * Following label is used in the settings to describe values which should be\n * determined by the code while running, from the current data and graph style.\n * \n * Using 'undefined' directly achieves the same thing, but this is more\n * descriptive by describing the intent.\n */\nvar autoByDefault = undefined;\n\n\n/**\n * Default values for option settings.\n *\n * These are the values used when a Graph3d instance is initialized without\n * custom settings.\n *\n * If a field is not in this list, a default value of 'autoByDefault' is assumed,\n * which is just an alias for 'undefined'.\n */\nvar DEFAULTS = {\n width : '400px',\n height : '400px',\n filterLabel : 'time',\n legendLabel : 'value',\n xLabel : 'x',\n yLabel : 'y',\n zLabel : 'z',\n xValueLabel : function(v) { return v; },\n yValueLabel : function(v) { return v; },\n zValueLabel : function(v) { return v; },\n showGrid : true,\n showPerspective : true,\n showShadow : false,\n keepAspectRatio : true,\n verticalRatio : 0.5, // 0.1 to 1.0, where 1.0 results in a 'cube'\n dotSizeRatio : 0.02, // size of the dots as a fraction of the graph width\n\n showAnimationControls: autoByDefault,\n animationInterval : 1000, // milliseconds\n animationPreload : false,\n animationAutoStart : autoByDefault,\n\n axisColor : '#4D4D4D',\n gridColor : '#D3D3D3',\n xCenter : '55%',\n yCenter : '50%',\n\n style : Graph3d.STYLE.DOT,\n tooltip : false,\n showLegend : autoByDefault, // determined by graph style\n backgroundColor : autoByDefault,\n\n dataColor : {\n fill : '#7DC1FF',\n stroke : '#3267D2',\n strokeWidth: 1 // px\n },\n\n cameraPosition : {\n horizontal: 1.0,\n vertical : 0.5,\n distance : 1.7\n },\n\n xBarWidth : autoByDefault,\n yBarWidth : autoByDefault,\n valueMin : autoByDefault,\n valueMax : autoByDefault,\n xMin : autoByDefault,\n xMax : autoByDefault,\n xStep : autoByDefault,\n yMin : autoByDefault,\n yMax : autoByDefault,\n yStep : autoByDefault,\n zMin : autoByDefault,\n zMax : autoByDefault,\n zStep : autoByDefault\n};\n\n\n// -----------------------------------------------------------------------------\n// Class Graph3d\n// -----------------------------------------------------------------------------\n\n\n/**\n * @constructor Graph3d\n * Graph3d displays data in 3d.\n *\n * Graph3d is developed in javascript as a Google Visualization Chart.\n *\n * @param {Element} container The DOM element in which the Graph3d will\n * be created. Normally a div element.\n * @param {DataSet | DataView | Array} [data]\n * @param {Object} [options]\n */\nfunction Graph3d(container, data, options) {\n if (!(this instanceof Graph3d)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n // create variables and set default values\n this.containerElement = container;\n\n this.dataTable = null; // The original data table\n this.dataPoints = null; // The table with point objects\n\n // create a frame and canvas\n this.create();\n\n Settings.setDefaults(DEFAULTS, this);\n\n // the column indexes\n this.colX = undefined;\n this.colY = undefined;\n this.colZ = undefined;\n this.colValue = undefined;\n this.colFilter = undefined;\n\n // TODO: customize axis range\n\n // apply options (also when undefined)\n this.setOptions(options);\n\n // apply data\n if (data) {\n this.setData(data);\n }\n}\n\n// Extend Graph3d with an Emitter mixin\nEmitter(Graph3d.prototype);\n\n/**\n * Calculate the scaling values, dependent on the range in x, y, and z direction\n */\nGraph3d.prototype._setScale = function() {\n this.scale = new Point3d(\n 1 / this.xRange.range(),\n 1 / this.yRange.range(),\n 1 / this.zRange.range()\n );\n\n // keep aspect ration between x and y scale if desired\n if (this.keepAspectRatio) {\n if (this.scale.x < this.scale.y) {\n //noinspection JSSuspiciousNameCombination\n this.scale.y = this.scale.x;\n }\n else {\n //noinspection JSSuspiciousNameCombination\n this.scale.x = this.scale.y;\n }\n }\n\n // scale the vertical axis\n this.scale.z *= this.verticalRatio;\n // TODO: can this be automated? verticalRatio?\n\n // determine scale for (optional) value\n if (this.valueRange !== undefined) {\n this.scale.value = 1 / this.valueRange.range();\n }\n\n // position the camera arm\n var xCenter = this.xRange.center() * this.scale.x;\n var yCenter = this.yRange.center() * this.scale.y;\n var zCenter = this.zRange.center() * this.scale.z;\n this.camera.setArmLocation(xCenter, yCenter, zCenter);\n};\n\n\n/**\n * Convert a 3D location to a 2D location on screen\n * Source: ttp://en.wikipedia.org/wiki/3D_projection\n *\n * @param {Point3d} point3d A 3D point with parameters x, y, z\n * @returns {Point2d} point2d A 2D point with parameters x, y\n */\nGraph3d.prototype._convert3Dto2D = function(point3d) {\n var translation = this._convertPointToTranslation(point3d);\n return this._convertTranslationToScreen(translation);\n};\n\n/**\n * Convert a 3D location its translation seen from the camera\n * Source: http://en.wikipedia.org/wiki/3D_projection\n *\n * @param {Point3d} point3d A 3D point with parameters x, y, z\n * @returns {Point3d} translation A 3D point with parameters x, y, z This is\n * the translation of the point, seen from the\n * camera.\n */\nGraph3d.prototype._convertPointToTranslation = function(point3d) {\n var cameraLocation = this.camera.getCameraLocation(),\n cameraRotation = this.camera.getCameraRotation(),\n ax = point3d.x * this.scale.x,\n ay = point3d.y * this.scale.y,\n az = point3d.z * this.scale.z,\n\n cx = cameraLocation.x,\n cy = cameraLocation.y,\n cz = cameraLocation.z,\n\n // calculate angles\n sinTx = Math.sin(cameraRotation.x),\n cosTx = Math.cos(cameraRotation.x),\n sinTy = Math.sin(cameraRotation.y),\n cosTy = Math.cos(cameraRotation.y),\n sinTz = Math.sin(cameraRotation.z),\n cosTz = Math.cos(cameraRotation.z),\n\n // calculate translation\n dx = cosTy * (sinTz * (ay - cy) + cosTz * (ax - cx)) - sinTy * (az - cz),\n dy = sinTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) + cosTx * (cosTz * (ay - cy) - sinTz * (ax-cx)),\n dz = cosTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) - sinTx * (cosTz * (ay - cy) - sinTz * (ax-cx));\n\n return new Point3d(dx, dy, dz);\n};\n\n/**\n * Convert a translation point to a point on the screen\n *\n * @param {Point3d} translation A 3D point with parameters x, y, z This is\n * the translation of the point, seen from the\n * camera.\n * @returns {Point2d} point2d A 2D point with parameters x, y\n */\nGraph3d.prototype._convertTranslationToScreen = function(translation) {\n var ex = this.eye.x,\n ey = this.eye.y,\n ez = this.eye.z,\n dx = translation.x,\n dy = translation.y,\n dz = translation.z;\n\n // calculate position on screen from translation\n var bx;\n var by;\n if (this.showPerspective) {\n bx = (dx - ex) * (ez / dz);\n by = (dy - ey) * (ez / dz);\n }\n else {\n bx = dx * -(ez / this.camera.getArmLength());\n by = dy * -(ez / this.camera.getArmLength());\n }\n\n // shift and scale the point to the center of the screen\n // use the width of the graph to scale both horizontally and vertically.\n return new Point2d(\n this.currentXCenter + bx * this.frame.canvas.clientWidth,\n this.currentYCenter - by * this.frame.canvas.clientWidth);\n};\n\n\n/**\n * Calculate the translations and screen positions of all points\n */\nGraph3d.prototype._calcTranslations = function(points, sort) {\n if (sort === undefined) {\n sort = true;\n }\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n point.trans = this._convertPointToTranslation(point.point);\n point.screen = this._convertTranslationToScreen(point.trans);\n\n // calculate the translation of the point at the bottom (needed for sorting)\n var transBottom = this._convertPointToTranslation(point.bottom);\n point.dist = this.showPerspective ? transBottom.length() : -transBottom.z;\n }\n\n if (!sort) {\n return;\n }\n\n // sort the points on depth of their (x,y) position (not on z)\n var sortDepth = function (a, b) {\n return b.dist - a.dist;\n };\n points.sort(sortDepth);\n};\n\n\nGraph3d.prototype.getNumberOfRows = function(data) {\n return data.length;\n}\n\n\nGraph3d.prototype.getNumberOfColumns = function(data) {\n var counter = 0;\n for (var column in data[0]) {\n if (data[0].hasOwnProperty(column)) {\n counter++;\n }\n }\n return counter;\n}\n\n\nGraph3d.prototype.getDistinctValues = function(data, column) {\n var distinctValues = [];\n for (var i = 0; i < data.length; i++) {\n if (distinctValues.indexOf(data[i][column]) == -1) {\n distinctValues.push(data[i][column]);\n }\n }\n return distinctValues;\n}\n\n\n/**\n * Get the absolute min/max values for the passed data column.\n *\n * @returns {Range} A Range instance with min/max members properly set.\n */\nGraph3d.prototype.getColumnRange = function(data,column) {\n var range = new Range();\n\n // Adjust the range so that it covers all values in the passed data elements.\n for (var i = 0; i < data.length; i++) {\n var item = data[i][column];\n range.adjust(item);\n }\n\n return range;\n};\n\n\n/**\n * Check if the state is consistent for the use of the value field.\n *\n * Throws if a problem is detected.\n */\nGraph3d.prototype._checkValueField = function (data) {\n\n var hasValueField = this.style === Graph3d.STYLE.BARCOLOR\n || this.style === Graph3d.STYLE.BARSIZE\n || this.style === Graph3d.STYLE.DOTCOLOR\n || this.style === Graph3d.STYLE.DOTSIZE;\n\n if (!hasValueField) {\n return; // No need to check further\n }\n\n // Following field must be present for the current graph style\n if (this.colValue === undefined) {\n throw new Error('Expected data to have '\n + ' field \\'style\\' '\n + ' for graph style \\'' + this.style + '\\''\n );\n }\n\n // The data must also contain this field.\n // Note that only first data element is checked.\n if (data[0][this.colValue] === undefined) {\n throw new Error('Expected data to have '\n + ' field \\'' + this.colValue + '\\' '\n + ' for graph style \\'' + this.style + '\\''\n );\n }\n};\n\n\n/**\n * Set default values for range\n *\n * The default values override the range values, if defined.\n *\n * Because it's possible that only defaultMin or defaultMax is set, it's better\n * to pass in a range already set with the min/max set from the data. Otherwise,\n * it's quite hard to process the min/max properly.\n */\nGraph3d.prototype._setRangeDefaults = function (range, defaultMin, defaultMax) {\n if (defaultMin !== undefined) {\n range.min = defaultMin;\n }\n\n if (defaultMax !== undefined) {\n range.max = defaultMax;\n }\n\n // This is the original way that the default min/max values were adjusted.\n // TODO: Perhaps it's better if an error is thrown if the values do not agree.\n // But this will change the behaviour.\n if (range.max <= range.min) range.max = range.min + 1;\n};\n\n\n/**\n * Initialize the data from the data table. Calculate minimum and maximum values\n * and column index values\n * @param {Array | DataSet | DataView} rawData The data containing the items for\n * the Graph.\n * @param {Number} style Style Number\n */\nGraph3d.prototype._dataInitialize = function (rawData, style) {\n var me = this;\n\n // unsubscribe from the dataTable\n if (this.dataSet) {\n this.dataSet.off('*', this._onChange);\n }\n\n if (rawData === undefined)\n return;\n\n if (Array.isArray(rawData)) {\n rawData = new DataSet(rawData);\n }\n\n var data;\n if (rawData instanceof DataSet || rawData instanceof DataView) {\n data = rawData.get();\n }\n else {\n throw new Error('Array, DataSet, or DataView expected');\n }\n\n if (data.length == 0)\n return;\n\n this.dataSet = rawData;\n this.dataTable = data;\n\n // subscribe to changes in the dataset\n this._onChange = function () {\n me.setData(me.dataSet);\n };\n this.dataSet.on('*', this._onChange);\n\n // determine the location of x,y,z,value,filter columns\n this.colX = 'x';\n this.colY = 'y';\n this.colZ = 'z';\n\n\n var withBars = this.style == Graph3d.STYLE.BAR ||\n this.style == Graph3d.STYLE.BARCOLOR ||\n this.style == Graph3d.STYLE.BARSIZE;\n\n // determine barWidth from data\n if (withBars) {\n if (this.defaultXBarWidth !== undefined) {\n this.xBarWidth = this.defaultXBarWidth;\n }\n else {\n var dataX = this.getDistinctValues(data,this.colX);\n this.xBarWidth = (dataX[1] - dataX[0]) || 1;\n }\n\n if (this.defaultYBarWidth !== undefined) {\n this.yBarWidth = this.defaultYBarWidth;\n }\n else {\n var dataY = this.getDistinctValues(data,this.colY);\n this.yBarWidth = (dataY[1] - dataY[0]) || 1;\n }\n }\n\n // calculate minimums and maximums\n var NUMSTEPS = 5;\n\n var xRange = this.getColumnRange(data, this.colX);\n if (withBars) {\n xRange.expand(this.xBarWidth / 2);\n }\n this._setRangeDefaults(xRange, this.defaultXMin, this.defaultXMax);\n this.xRange = xRange;\n this.xStep = (this.defaultXStep !== undefined) ? this.defaultXStep : xRange.range()/NUMSTEPS;\n\n var yRange = this.getColumnRange(data, this.colY);\n if (withBars) {\n yRange.expand(this.yBarWidth / 2);\n }\n this._setRangeDefaults(yRange, this.defaultYMin, this.defaultYMax);\n this.yRange = yRange;\n this.yStep = (this.defaultYStep !== undefined) ? this.defaultYStep : yRange.range()/NUMSTEPS;\n\n var zRange = this.getColumnRange(data, this.colZ);\n this._setRangeDefaults(zRange, this.defaultZMin, this.defaultZMax);\n this.zRange = zRange;\n this.zStep = (this.defaultZStep !== undefined) ? this.defaultZStep : zRange.range()/NUMSTEPS;\n\n if (data[0].hasOwnProperty('style')) {\n this.colValue = 'style';\n var valueRange = this.getColumnRange(data,this.colValue);\n this._setRangeDefaults(valueRange, this.defaultValueMin, this.defaultValueMax);\n this.valueRange = valueRange;\n }\n\n\n // check if a filter column is provided\n // Needs to be started after zRange is defined\n if (data[0].hasOwnProperty('filter')) {\n // Only set this field if it's actually present\n this.colFilter = 'filter';\n\n if (this.dataFilter === undefined) {\n this.dataFilter = new Filter(rawData, this.colFilter, this);\n this.dataFilter.setOnLoadCallback(function() {me.redraw();});\n }\n }\n\n \n // set the scale dependent on the ranges.\n this._setScale();\n};\n\n\n\n/**\n * Filter the data based on the current filter\n *\n * @param {Array} data\n * @returns {Array} dataPoints Array with point objects which can be drawn on\n * screen\n */\nGraph3d.prototype._getDataPoints = function (data) {\n // TODO: store the created matrix dataPoints in the filters instead of\n // reloading each time.\n var x, y, i, z, obj, point;\n\n var dataPoints = [];\n\n if (this.style === Graph3d.STYLE.GRID ||\n this.style === Graph3d.STYLE.SURFACE) {\n // copy all values from the google data table to a matrix\n // the provided values are supposed to form a grid of (x,y) positions\n\n // create two lists with all present x and y values\n var dataX = [];\n var dataY = [];\n for (i = 0; i < this.getNumberOfRows(data); i++) {\n x = data[i][this.colX] || 0;\n y = data[i][this.colY] || 0;\n\n if (dataX.indexOf(x) === -1) {\n dataX.push(x);\n }\n if (dataY.indexOf(y) === -1) {\n dataY.push(y);\n }\n }\n\n var sortNumber = function (a, b) {\n return a - b;\n };\n dataX.sort(sortNumber);\n dataY.sort(sortNumber);\n\n // create a grid, a 2d matrix, with all values.\n var dataMatrix = []; // temporary data matrix\n for (i = 0; i < data.length; i++) {\n x = data[i][this.colX] || 0;\n y = data[i][this.colY] || 0;\n z = data[i][this.colZ] || 0;\n\n // TODO: implement Array().indexOf() for Internet Explorer\n var xIndex = dataX.indexOf(x);\n var yIndex = dataY.indexOf(y);\n\n if (dataMatrix[xIndex] === undefined) {\n dataMatrix[xIndex] = [];\n }\n\n var point3d = new Point3d();\n point3d.x = x;\n point3d.y = y;\n point3d.z = z;\n point3d.data = data[i];\n\n obj = {};\n obj.point = point3d;\n obj.trans = undefined;\n obj.screen = undefined;\n obj.bottom = new Point3d(x, y, this.zRange.min);\n\n dataMatrix[xIndex][yIndex] = obj;\n\n dataPoints.push(obj);\n }\n\n // fill in the pointers to the neighbors.\n for (x = 0; x < dataMatrix.length; x++) {\n for (y = 0; y < dataMatrix[x].length; y++) {\n if (dataMatrix[x][y]) {\n dataMatrix[x][y].pointRight = (x < dataMatrix.length-1) ? dataMatrix[x+1][y] : undefined;\n dataMatrix[x][y].pointTop = (y < dataMatrix[x].length-1) ? dataMatrix[x][y+1] : undefined;\n dataMatrix[x][y].pointCross =\n (x < dataMatrix.length-1 && y < dataMatrix[x].length-1) ?\n dataMatrix[x+1][y+1] :\n undefined;\n }\n }\n }\n }\n else { // 'dot', 'dot-line', etc.\n this._checkValueField(data);\n\n // copy all values from the google data table to a list with Point3d objects\n for (i = 0; i < data.length; i++) {\n point = new Point3d();\n point.x = data[i][this.colX] || 0;\n point.y = data[i][this.colY] || 0;\n point.z = data[i][this.colZ] || 0;\n point.data = data[i];\n\n if (this.colValue !== undefined) {\n point.value = data[i][this.colValue] || 0;\n }\n\n obj = {};\n obj.point = point;\n obj.bottom = new Point3d(point.x, point.y, this.zRange.min);\n obj.trans = undefined;\n obj.screen = undefined;\n\n if (this.style === Graph3d.STYLE.LINE) {\n if (i > 0) {\n // Add next point for line drawing\n dataPoints[i - 1].pointNext = obj;\n }\n }\n\n dataPoints.push(obj);\n }\n }\n\n return dataPoints;\n};\n\n/**\n * Create the main frame for the Graph3d.\n *\n * This function is executed once when a Graph3d object is created. The frame\n * contains a canvas, and this canvas contains all objects like the axis and\n * nodes.\n */\nGraph3d.prototype.create = function () {\n // remove all elements from the container element.\n while (this.containerElement.hasChildNodes()) {\n this.containerElement.removeChild(this.containerElement.firstChild);\n }\n\n this.frame = document.createElement('div');\n this.frame.style.position = 'relative';\n this.frame.style.overflow = 'hidden';\n\n // create the graph canvas (HTML canvas element)\n this.frame.canvas = document.createElement( 'canvas' );\n this.frame.canvas.style.position = 'relative';\n this.frame.appendChild(this.frame.canvas);\n //if (!this.frame.canvas.getContext) {\n {\n var noCanvas = document.createElement( 'DIV' );\n noCanvas.style.color = 'red';\n noCanvas.style.fontWeight = 'bold' ;\n noCanvas.style.padding = '10px';\n noCanvas.innerHTML = 'Error: your browser does not support HTML canvas';\n this.frame.canvas.appendChild(noCanvas);\n }\n\n this.frame.filter = document.createElement( 'div' );\n this.frame.filter.style.position = 'absolute';\n this.frame.filter.style.bottom = '0px';\n this.frame.filter.style.left = '0px';\n this.frame.filter.style.width = '100%';\n this.frame.appendChild(this.frame.filter);\n\n // add event listeners to handle moving and zooming the contents\n var me = this;\n var onmousedown = function (event) {me._onMouseDown(event);};\n var ontouchstart = function (event) {me._onTouchStart(event);};\n var onmousewheel = function (event) {me._onWheel(event);};\n var ontooltip = function (event) {me._onTooltip(event);};\n var onclick = function(event) {me._onClick(event);};\n // TODO: these events are never cleaned up... can give a 'memory leakage'\n\n util.addEventListener(this.frame.canvas, 'keydown', onkeydown);\n util.addEventListener(this.frame.canvas, 'mousedown', onmousedown);\n util.addEventListener(this.frame.canvas, 'touchstart', ontouchstart);\n util.addEventListener(this.frame.canvas, 'mousewheel', onmousewheel);\n util.addEventListener(this.frame.canvas, 'mousemove', ontooltip);\n util.addEventListener(this.frame.canvas, 'click', onclick);\n\n // add the new graph to the container element\n this.containerElement.appendChild(this.frame);\n};\n\n\n/**\n * Set a new size for the graph\n */\nGraph3d.prototype._setSize = function(width, height) {\n this.frame.style.width = width;\n this.frame.style.height = height;\n\n this._resizeCanvas();\n};\n\n\n/**\n * Resize the canvas to the current size of the frame\n */\nGraph3d.prototype._resizeCanvas = function() {\n this.frame.canvas.style.width = '100%';\n this.frame.canvas.style.height = '100%';\n\n this.frame.canvas.width = this.frame.canvas.clientWidth;\n this.frame.canvas.height = this.frame.canvas.clientHeight;\n\n // adjust with for margin\n this.frame.filter.style.width = (this.frame.canvas.clientWidth - 2 * 10) + 'px';\n};\n\n/**\n * Start animation\n */\nGraph3d.prototype.animationStart = function() {\n if (!this.frame.filter || !this.frame.filter.slider)\n throw new Error('No animation available');\n\n this.frame.filter.slider.play();\n};\n\n\n/**\n * Stop animation\n */\nGraph3d.prototype.animationStop = function() {\n if (!this.frame.filter || !this.frame.filter.slider) return;\n\n this.frame.filter.slider.stop();\n};\n\n\n/**\n * Resize the center position based on the current values in this.xCenter\n * and this.yCenter (which are strings with a percentage or a value\n * in pixels). The center positions are the variables this.currentXCenter\n * and this.currentYCenter\n */\nGraph3d.prototype._resizeCenter = function() {\n // calculate the horizontal center position\n if (this.xCenter.charAt(this.xCenter.length-1) === '%') {\n this.currentXCenter =\n parseFloat(this.xCenter) / 100 *\n this.frame.canvas.clientWidth;\n }\n else {\n this.currentXCenter = parseFloat(this.xCenter); // supposed to be in px\n }\n\n // calculate the vertical center position\n if (this.yCenter.charAt(this.yCenter.length-1) === '%') {\n this.currentYCenter =\n parseFloat(this.yCenter) / 100 *\n (this.frame.canvas.clientHeight - this.frame.filter.clientHeight);\n }\n else {\n this.currentYCenter = parseFloat(this.yCenter); // supposed to be in px\n }\n};\n\n\n\n/**\n * Retrieve the current camera rotation\n *\n * @returns {object} An object with parameters horizontal, vertical, and\n * distance\n */\nGraph3d.prototype.getCameraPosition = function() {\n var pos = this.camera.getArmRotation();\n pos.distance = this.camera.getArmLength();\n return pos;\n};\n\n/**\n * Load data into the 3D Graph\n */\nGraph3d.prototype._readData = function(data) {\n // read the data\n this._dataInitialize(data, this.style);\n\n\n if (this.dataFilter) {\n // apply filtering\n this.dataPoints = this.dataFilter._getDataPoints();\n }\n else {\n // no filtering. load all data\n this.dataPoints = this._getDataPoints(this.dataTable);\n }\n\n // draw the filter\n this._redrawFilter();\n};\n\n/**\n * Replace the dataset of the Graph3d\n *\n * @param {Array | DataSet | DataView} data\n */\nGraph3d.prototype.setData = function (data) {\n this._readData(data);\n this.redraw();\n\n // start animation when option is true\n if (this.animationAutoStart && this.dataFilter) {\n this.animationStart();\n }\n};\n\n/**\n * Update the options. Options will be merged with current options\n *\n * @param {Object} options\n */\nGraph3d.prototype.setOptions = function (options) {\n var cameraPosition = undefined;\n\n this.animationStop();\n\n Settings.setOptions(options, this);\n\n this.setPointDrawingMethod();\n this._setSize(this.width, this.height);\n\n // re-load the data\n if (this.dataTable) {\n this.setData(this.dataTable);\n }\n\n // start animation when option is true\n if (this.animationAutoStart && this.dataFilter) {\n this.animationStart();\n }\n};\n\n\n/**\n * Determine which point drawing method to use for the current graph style.\n */\nGraph3d.prototype.setPointDrawingMethod = function() {\n var method = undefined;\n\n switch (this.style) {\n case Graph3d.STYLE.BAR:\n method = Graph3d.prototype._redrawBarGraphPoint;\n break;\n case Graph3d.STYLE.BARCOLOR:\n method = Graph3d.prototype._redrawBarColorGraphPoint;\n break;\n case Graph3d.STYLE.BARSIZE:\n method = Graph3d.prototype._redrawBarSizeGraphPoint;\n break;\n case Graph3d.STYLE.DOT:\n method = Graph3d.prototype._redrawDotGraphPoint;\n break;\n case Graph3d.STYLE.DOTLINE:\n method = Graph3d.prototype._redrawDotLineGraphPoint;\n break;\n case Graph3d.STYLE.DOTCOLOR:\n method = Graph3d.prototype._redrawDotColorGraphPoint;\n break;\n case Graph3d.STYLE.DOTSIZE:\n method = Graph3d.prototype._redrawDotSizeGraphPoint;\n break;\n case Graph3d.STYLE.SURFACE:\n method = Graph3d.prototype._redrawSurfaceGraphPoint;\n break;\n case Graph3d.STYLE.GRID:\n method = Graph3d.prototype._redrawGridGraphPoint;\n break;\n case Graph3d.STYLE.LINE:\n method = Graph3d.prototype._redrawLineGraphPoint;\n break;\n default:\n throw new Error('Can not determine point drawing method '\n + 'for graph style \\'' + this.style + '\\'');\n break;\n }\n\n this._pointDrawingMethod = method;\n};\n\n\n/**\n * Redraw the Graph.\n */\nGraph3d.prototype.redraw = function() {\n if (this.dataPoints === undefined) {\n throw new Error('Graph data not initialized');\n }\n\n this._resizeCanvas();\n this._resizeCenter();\n this._redrawSlider();\n this._redrawClear();\n this._redrawAxis();\n\n this._redrawDataGraph();\n\n this._redrawInfo();\n this._redrawLegend();\n};\n\n\n/**\n * Get drawing context without exposing canvas\n */\nGraph3d.prototype._getContext = function() {\n var canvas = this.frame.canvas;\n var ctx = canvas.getContext('2d');\n\n ctx.lineJoin = 'round';\n ctx.lineCap = 'round';\n\n return ctx;\n};\n\n\n/**\n * Clear the canvas before redrawing\n */\nGraph3d.prototype._redrawClear = function() {\n var canvas = this.frame.canvas;\n var ctx = canvas.getContext('2d');\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n};\n\n\nGraph3d.prototype._dotSize = function() {\n return this.frame.clientWidth * this.dotSizeRatio;\n};\n\n\n/**\n * Get legend width\n */\nGraph3d.prototype._getLegendWidth = function() {\n var width;\n\n if (this.style === Graph3d.STYLE.DOTSIZE) {\n var dotSize = this._dotSize();\n width = dotSize / 2 + dotSize * 2;\n } else if (this.style === Graph3d.STYLE.BARSIZE) {\n width = this.xBarWidth ;\n } else {\n width = 20;\n }\n return width;\n}\n\n\n/**\n * Redraw the legend based on size, dot color, or surface height\n */\nGraph3d.prototype._redrawLegend = function() {\n\n //Return without drawing anything, if no legend is specified\n if (this.showLegend !== true) {\n return;\n }\n\n // Do not draw legend when graph style does not support\n if (this.style === Graph3d.STYLE.LINE\n || this.style === Graph3d.STYLE.BARSIZE //TODO add legend support for BARSIZE\n ){\n return;\n }\n\n // Legend types - size and color. Determine if size legend.\n var isSizeLegend = (this.style === Graph3d.STYLE.BARSIZE\n || this.style === Graph3d.STYLE.DOTSIZE) ;\n\n // Legend is either tracking z values or style values. This flag if false means use z values.\n var isValueLegend = (this.style === Graph3d.STYLE.DOTSIZE\n || this.style === Graph3d.STYLE.DOTCOLOR\n || this.style === Graph3d.STYLE.BARCOLOR);\n\n var height = Math.max(this.frame.clientHeight * 0.25, 100);\n var top = this.margin;\n var width = this._getLegendWidth() ; // px - overwritten by size legend\n var right = this.frame.clientWidth - this.margin;\n var left = right - width;\n var bottom = top + height;\n\n var ctx = this._getContext();\n ctx.lineWidth = 1;\n ctx.font = '14px arial'; // TODO: put in options\n\n if (isSizeLegend === false) {\n // draw the color bar\n var ymin = 0;\n var ymax = height; // Todo: make height customizable\n var y;\n\n for (y = ymin; y < ymax; y++) {\n var f = (y - ymin) / (ymax - ymin);\n var hue = f * 240;\n var color = this._hsv2rgb(hue, 1, 1);\n\n ctx.strokeStyle = color;\n ctx.beginPath();\n ctx.moveTo(left, top + y);\n ctx.lineTo(right, top + y);\n ctx.stroke();\n }\n ctx.strokeStyle = this.axisColor;\n ctx.strokeRect(left, top, width, height);\n\n } else {\n\n // draw the size legend box\n var widthMin;\n if (this.style === Graph3d.STYLE.DOTSIZE) {\n var dotSize = this._dotSize();\n widthMin = dotSize / 2; // px\n } else if (this.style === Graph3d.STYLE.BARSIZE) {\n //widthMin = this.xBarWidth * 0.2 this is wrong - barwidth measures in terms of xvalues\n }\n ctx.strokeStyle = this.axisColor;\n ctx.fillStyle = this.dataColor.fill;\n ctx.beginPath();\n ctx.moveTo(left, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right - width + widthMin, bottom);\n ctx.lineTo(left, bottom);\n ctx.closePath();\n ctx.fill();\n ctx.stroke();\n }\n\n // print value text along the legend edge\n var gridLineLen = 5; // px\n\n var legendMin = isValueLegend ? this.valueRange.min : this.zRange.min;\n var legendMax = isValueLegend ? this.valueRange.max : this.zRange.max;\n var step = new StepNumber(legendMin, legendMax, (legendMax-legendMin)/5, true);\n step.start(true);\n\n var y;\n var from;\n var to;\n while (!step.end()) {\n y = bottom - (step.getCurrent() - legendMin) / (legendMax - legendMin) * height;\n from = new Point2d(left - gridLineLen, y);\n to = new Point2d(left, y);\n this._line(ctx, from, to);\n\n ctx.textAlign = 'right';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = this.axisColor;\n ctx.fillText(step.getCurrent(), left - 2 * gridLineLen, y);\n\n step.next();\n }\n\n ctx.textAlign = 'right';\n ctx.textBaseline = 'top';\n var label = this.legendLabel;\n ctx.fillText(label, right, bottom + this.margin);\n};\n\n/**\n * Redraw the filter\n */\nGraph3d.prototype._redrawFilter = function() {\n this.frame.filter.innerHTML = '';\n\n if (this.dataFilter) {\n var options = {\n 'visible': this.showAnimationControls\n };\n var slider = new Slider(this.frame.filter, options);\n this.frame.filter.slider = slider;\n\n // TODO: css here is not nice here...\n this.frame.filter.style.padding = '10px';\n //this.frame.filter.style.backgroundColor = '#EFEFEF';\n\n slider.setValues(this.dataFilter.values);\n slider.setPlayInterval(this.animationInterval);\n\n // create an event handler\n var me = this;\n var onchange = function () {\n var index = slider.getIndex();\n\n me.dataFilter.selectValue(index);\n me.dataPoints = me.dataFilter._getDataPoints();\n\n me.redraw();\n };\n slider.setOnChangeCallback(onchange);\n }\n else {\n this.frame.filter.slider = undefined;\n }\n};\n\n/**\n * Redraw the slider\n */\nGraph3d.prototype._redrawSlider = function() {\n if ( this.frame.filter.slider !== undefined) {\n this.frame.filter.slider.redraw();\n }\n};\n\n\n/**\n * Redraw common information\n */\nGraph3d.prototype._redrawInfo = function() {\n if (this.dataFilter) {\n var ctx = this._getContext();\n\n ctx.font = '14px arial'; // TODO: put in options\n ctx.lineStyle = 'gray';\n ctx.fillStyle = 'gray';\n ctx.textAlign = 'left';\n ctx.textBaseline = 'top';\n\n var x = this.margin;\n var y = this.margin;\n ctx.fillText(this.dataFilter.getLabel() + ': ' + this.dataFilter.getSelectedValue(), x, y);\n }\n};\n\n\n/**\n * Draw a line between 2d points 'from' and 'to'.\n *\n * If stroke style specified, set that as well.\n */\nGraph3d.prototype._line = function(ctx, from, to, strokeStyle) {\n if (strokeStyle !== undefined) {\n ctx.strokeStyle = strokeStyle;\n }\n\n ctx.beginPath();\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x , to.y );\n ctx.stroke();\n}\n\n\nGraph3d.prototype.drawAxisLabelX = function(ctx, point3d, text, armAngle, yMargin) {\n if (yMargin === undefined) {\n yMargin = 0;\n }\n\n var point2d = this._convert3Dto2D(point3d);\n\n if (Math.cos(armAngle * 2) > 0) {\n ctx.textAlign = 'center';\n ctx.textBaseline = 'top';\n point2d.y += yMargin;\n }\n else if (Math.sin(armAngle * 2) < 0){\n ctx.textAlign = 'right';\n ctx.textBaseline = 'middle';\n }\n else {\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n }\n\n ctx.fillStyle = this.axisColor;\n ctx.fillText(text, point2d.x, point2d.y);\n}\n\n\nGraph3d.prototype.drawAxisLabelY = function(ctx, point3d, text, armAngle, yMargin) {\n if (yMargin === undefined) {\n yMargin = 0;\n }\n\n var point2d = this._convert3Dto2D(point3d);\n\n if (Math.cos(armAngle * 2) < 0) {\n ctx.textAlign = 'center';\n ctx.textBaseline = 'top';\n point2d.y += yMargin;\n }\n else if (Math.sin(armAngle * 2) > 0){\n ctx.textAlign = 'right';\n ctx.textBaseline = 'middle';\n }\n else {\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n }\n\n ctx.fillStyle = this.axisColor;\n ctx.fillText(text, point2d.x, point2d.y);\n}\n\n\nGraph3d.prototype.drawAxisLabelZ = function(ctx, point3d, text, offset) {\n if (offset === undefined) {\n offset = 0;\n }\n\n var point2d = this._convert3Dto2D(point3d);\n ctx.textAlign = 'right';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = this.axisColor;\n ctx.fillText(text, point2d.x - offset, point2d.y);\n};\n\n\n/**\n\n\n/**\n * Draw a line between 2d points 'from' and 'to'.\n *\n * If stroke style specified, set that as well.\n */\nGraph3d.prototype._line3d = function(ctx, from, to, strokeStyle) {\n var from2d = this._convert3Dto2D(from);\n var to2d = this._convert3Dto2D(to);\n\n this._line(ctx, from2d, to2d, strokeStyle);\n}\n\n\n/**\n * Redraw the axis\n */\nGraph3d.prototype._redrawAxis = function() {\n var ctx = this._getContext(),\n from, to, step, prettyStep,\n text, xText, yText, zText,\n offset, xOffset, yOffset;\n\n // TODO: get the actual rendered style of the containerElement\n //ctx.font = this.containerElement.style.font;\n ctx.font = 24 / this.camera.getArmLength() + 'px arial';\n\n // calculate the length for the short grid lines\n var gridLenX = 0.025 / this.scale.x;\n var gridLenY = 0.025 / this.scale.y;\n var textMargin = 5 / this.camera.getArmLength(); // px\n var armAngle = this.camera.getArmRotation().horizontal;\n var armVector = new Point2d(Math.cos(armAngle), Math.sin(armAngle));\n\n var xRange = this.xRange;\n var yRange = this.yRange;\n var zRange = this.zRange;\n\n // draw x-grid lines\n ctx.lineWidth = 1;\n prettyStep = (this.defaultXStep === undefined);\n step = new StepNumber(xRange.min, xRange.max, this.xStep, prettyStep);\n step.start(true);\n\n while (!step.end()) {\n var x = step.getCurrent();\n\n if (this.showGrid) {\n from = new Point3d(x, yRange.min, zRange.min);\n to = new Point3d(x, yRange.max, zRange.min);\n this._line3d(ctx, from, to, this.gridColor);\n }\n else {\n from = new Point3d(x, yRange.min, zRange.min);\n to = new Point3d(x, yRange.min+gridLenX, zRange.min);\n this._line3d(ctx, from, to, this.axisColor);\n\n from = new Point3d(x, yRange.max, zRange.min);\n to = new Point3d(x, yRange.max-gridLenX, zRange.min);\n this._line3d(ctx, from, to, this.axisColor);\n }\n\n yText = (armVector.x > 0) ? yRange.min : yRange.max;\n var point3d = new Point3d(x, yText, zRange.min);\n var msg = ' ' + this.xValueLabel(x) + ' ';\n this.drawAxisLabelX(ctx, point3d, msg, armAngle, textMargin);\n\n step.next();\n }\n\n // draw y-grid lines\n ctx.lineWidth = 1;\n prettyStep = (this.defaultYStep === undefined);\n step = new StepNumber(yRange.min, yRange.max, this.yStep, prettyStep);\n step.start(true);\n\n while (!step.end()) {\n var y = step.getCurrent();\n\n if (this.showGrid) {\n from = new Point3d(xRange.min, y, zRange.min);\n to = new Point3d(xRange.max, y, zRange.min);\n this._line3d(ctx, from, to, this.gridColor);\n }\n else {\n from = new Point3d(xRange.min, y, zRange.min);\n to = new Point3d(xRange.min+gridLenY, y, zRange.min);\n this._line3d(ctx, from, to, this.axisColor);\n\n from = new Point3d(xRange.max, y, zRange.min);\n to = new Point3d(xRange.max-gridLenY, y, zRange.min);\n this._line3d(ctx, from, to, this.axisColor);\n }\n\n xText = (armVector.y > 0) ? xRange.min : xRange.max;\n point3d = new Point3d(xText, y, zRange.min);\n var msg = ' ' + this.yValueLabel(y) + ' ';\n this.drawAxisLabelY(ctx, point3d, msg, armAngle, textMargin);\n\n step.next();\n }\n\n // draw z-grid lines and axis\n ctx.lineWidth = 1;\n prettyStep = (this.defaultZStep === undefined);\n step = new StepNumber(zRange.min, zRange.max, this.zStep, prettyStep);\n step.start(true);\n\n xText = (armVector.x > 0) ? xRange.min : xRange.max;\n yText = (armVector.y < 0) ? yRange.min : yRange.max;\n\n while (!step.end()) {\n var z = step.getCurrent();\n\n // TODO: make z-grid lines really 3d?\n var from3d = new Point3d(xText, yText, z);\n var from2d = this._convert3Dto2D(from3d);\n to = new Point2d(from2d.x - textMargin, from2d.y);\n this._line(ctx, from2d, to, this.axisColor);\n\n var msg = this.zValueLabel(z) + ' ';\n this.drawAxisLabelZ(ctx, from3d, msg, 5);\n\n step.next();\n }\n\n ctx.lineWidth = 1;\n from = new Point3d(xText, yText, zRange.min);\n to = new Point3d(xText, yText, zRange.max);\n this._line3d(ctx, from, to, this.axisColor);\n\n // draw x-axis\n var xMin2d;\n var xMax2d;\n ctx.lineWidth = 1;\n\n // line at yMin\n xMin2d = new Point3d(xRange.min, yRange.min, zRange.min);\n xMax2d = new Point3d(xRange.max, yRange.min, zRange.min);\n this._line3d(ctx, xMin2d, xMax2d, this.axisColor);\n // line at ymax\n xMin2d = new Point3d(xRange.min, yRange.max, zRange.min);\n xMax2d = new Point3d(xRange.max, yRange.max, zRange.min);\n this._line3d(ctx, xMin2d, xMax2d, this.axisColor);\n\n // draw y-axis\n ctx.lineWidth = 1;\n // line at xMin\n from = new Point3d(xRange.min, yRange.min, zRange.min);\n to = new Point3d(xRange.min, yRange.max, zRange.min);\n this._line3d(ctx, from, to, this.axisColor);\n // line at xMax\n from = new Point3d(xRange.max, yRange.min, zRange.min);\n to = new Point3d(xRange.max, yRange.max, zRange.min);\n this._line3d(ctx, from, to, this.axisColor);\n\n // draw x-label\n var xLabel = this.xLabel;\n if (xLabel.length > 0) {\n yOffset = 0.1 / this.scale.y;\n xText = (xRange.max + 3*xRange.min)/4;\n yText = (armVector.x > 0) ? yRange.min - yOffset: yRange.max + yOffset;\n text = new Point3d(xText, yText, zRange.min);\n this.drawAxisLabelX(ctx, text, xLabel, armAngle);\n }\n\n // draw y-label\n var yLabel = this.yLabel;\n if (yLabel.length > 0) {\n xOffset = 0.1 / this.scale.x;\n xText = (armVector.y > 0) ? xRange.min - xOffset : xRange.max + xOffset;\n yText = (yRange.max + 3*yRange.min)/4;\n text = new Point3d(xText, yText, zRange.min);\n\n this.drawAxisLabelY(ctx, text, yLabel, armAngle);\n }\n\n // draw z-label\n var zLabel = this.zLabel;\n if (zLabel.length > 0) {\n offset = 30; // pixels. // TODO: relate to the max width of the values on the z axis?\n xText = (armVector.x > 0) ? xRange.min : xRange.max;\n yText = (armVector.y < 0) ? yRange.min : yRange.max;\n zText = (zRange.max + 3*zRange.min)/4;\n text = new Point3d(xText, yText, zText);\n\n this.drawAxisLabelZ(ctx, text, zLabel, offset);\n }\n};\n\n/**\n * Calculate the color based on the given value.\n * @param {Number} H Hue, a value be between 0 and 360\n * @param {Number} S Saturation, a value between 0 and 1\n * @param {Number} V Value, a value between 0 and 1\n */\nGraph3d.prototype._hsv2rgb = function(H, S, V) {\n var R, G, B, C, Hi, X;\n\n C = V * S;\n Hi = Math.floor(H/60); // hi = 0,1,2,3,4,5\n X = C * (1 - Math.abs(((H/60) % 2) - 1));\n\n switch (Hi) {\n case 0: R = C; G = X; B = 0; break;\n case 1: R = X; G = C; B = 0; break;\n case 2: R = 0; G = C; B = X; break;\n case 3: R = 0; G = X; B = C; break;\n case 4: R = X; G = 0; B = C; break;\n case 5: R = C; G = 0; B = X; break;\n\n default: R = 0; G = 0; B = 0; break;\n }\n\n return 'RGB(' + parseInt(R*255) + ',' + parseInt(G*255) + ',' + parseInt(B*255) + ')';\n};\n\n\nGraph3d.prototype._getStrokeWidth = function(point) {\n if (point !== undefined) {\n if (this.showPerspective) {\n return 1 / -point.trans.z * this.dataColor.strokeWidth;\n }\n else {\n return -(this.eye.z / this.camera.getArmLength()) * this.dataColor.strokeWidth;\n }\n }\n\n return this.dataColor.strokeWidth;\n};\n\n\n// -----------------------------------------------------------------------------\n// Drawing primitives for the graphs\n// -----------------------------------------------------------------------------\n\n\n/**\n * Draw a bar element in the view with the given properties.\n */\nGraph3d.prototype._redrawBar = function(ctx, point, xWidth, yWidth, color, borderColor) {\n var i, j, surface;\n\n // calculate all corner points\n var me = this;\n var point3d = point.point;\n var zMin = this.zRange.min;\n var top = [\n {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, point3d.z)},\n {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, point3d.z)},\n {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, point3d.z)},\n {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, point3d.z)}\n ];\n var bottom = [\n {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, zMin)},\n {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, zMin)},\n {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, zMin)},\n {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, zMin)}\n ];\n\n // calculate screen location of the points\n top.forEach(function (obj) {\n obj.screen = me._convert3Dto2D(obj.point);\n });\n bottom.forEach(function (obj) {\n obj.screen = me._convert3Dto2D(obj.point);\n });\n\n // create five sides, calculate both corner points and center points\n var surfaces = [\n {corners: top, center: Point3d.avg(bottom[0].point, bottom[2].point)},\n {corners: [top[0], top[1], bottom[1], bottom[0]], center: Point3d.avg(bottom[1].point, bottom[0].point)},\n {corners: [top[1], top[2], bottom[2], bottom[1]], center: Point3d.avg(bottom[2].point, bottom[1].point)},\n {corners: [top[2], top[3], bottom[3], bottom[2]], center: Point3d.avg(bottom[3].point, bottom[2].point)},\n {corners: [top[3], top[0], bottom[0], bottom[3]], center: Point3d.avg(bottom[0].point, bottom[3].point)}\n ];\n point.surfaces = surfaces;\n\n // calculate the distance of each of the surface centers to the camera\n for (j = 0; j < surfaces.length; j++) {\n surface = surfaces[j];\n var transCenter = this._convertPointToTranslation(surface.center);\n surface.dist = this.showPerspective ? transCenter.length() : -transCenter.z;\n // TODO: this dept calculation doesn't work 100% of the cases due to perspective,\n // but the current solution is fast/simple and works in 99.9% of all cases\n // the issue is visible in example 14, with graph.setCameraPosition({horizontal: 2.97, vertical: 0.5, distance: 0.9})\n }\n\n // order the surfaces by their (translated) depth\n surfaces.sort(function (a, b) {\n var diff = b.dist - a.dist;\n if (diff) return diff;\n\n // if equal depth, sort the top surface last\n if (a.corners === top) return 1;\n if (b.corners === top) return -1;\n\n // both are equal\n return 0;\n });\n\n // draw the ordered surfaces\n ctx.lineWidth = this._getStrokeWidth(point);\n ctx.strokeStyle = borderColor;\n ctx.fillStyle = color;\n // NOTE: we start at j=2 instead of j=0 as we don't need to draw the two surfaces at the backside\n for (j = 2; j < surfaces.length; j++) {\n surface = surfaces[j];\n this._polygon(ctx, surface.corners);\n }\n};\n\n\n/**\n * Draw a polygon using the passed points and fill it with the passed style and stroke.\n *\n * @param points an array of points.\n * @param fillStyle optional; the fill style to set\n * @param strokeStyle optional; the stroke style to set\n */\nGraph3d.prototype._polygon = function(ctx, points, fillStyle, strokeStyle) {\n if (points.length < 2) {\n return;\n }\n\n if (fillStyle !== undefined) {\n ctx.fillStyle = fillStyle;\n }\n if (strokeStyle !== undefined) {\n ctx.strokeStyle = strokeStyle;\n }\n ctx.beginPath();\n ctx.moveTo(points[0].screen.x, points[0].screen.y);\n\n for (var i = 1; i < points.length; ++i) {\n var point = points[i];\n ctx.lineTo(point.screen.x, point.screen.y);\n }\n\n ctx.closePath();\n ctx.fill();\n ctx.stroke(); // TODO: only draw stroke when strokeWidth > 0\n};\n\n\n/**\n * @param size optional; if not specified use value from 'this._dotSize()`\n */\nGraph3d.prototype._drawCircle = function(ctx, point, color, borderColor, size) {\n var radius = this._calcRadius(point, size);\n\n ctx.lineWidth = this._getStrokeWidth(point);\n ctx.strokeStyle = borderColor;\n ctx.fillStyle = color;\n ctx.beginPath();\n ctx.arc(point.screen.x, point.screen.y, radius, 0, Math.PI*2, true);\n ctx.fill();\n ctx.stroke();\n};\n\n\n/**\n * Determine the colors for the 'regular' graph styles.\n */\nGraph3d.prototype._getColorsRegular = function(point) {\n // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0\n var hue = (1 - (point.point.z - this.zRange.min) * this.scale.z / this.verticalRatio) * 240;\n var color = this._hsv2rgb(hue, 1, 1);\n var borderColor = this._hsv2rgb(hue, 1, 0.8);\n\n return {\n fill : color,\n border: borderColor\n };\n};\n\n\n/**\n * Get the colors for the 'color' graph styles.\n * These styles are currently: 'bar-color' and 'dot-color'\n * Color may be set as a string representation of HTML color, like #ff00ff,\n * or calculated from a number, for example, distance from this point\n * The first option is useful when we have some pre-given legend, to which we have to adjust ourselves\n * The second option is useful when we are interested in automatically setting the color, from some value,\n * using some color scale\n */\nGraph3d.prototype._getColorsColor = function(point) {\n // calculate the color based on the value\n var color, borderColor;\n\n if (typeof point.point.value === \"string\") {\n color = point.point.value;\n borderColor = point.point.value;\n }\n else {\n var hue = (1 - (point.point.value - this.valueRange.min) * this.scale.value) * 240;\n color = this._hsv2rgb(hue, 1, 1);\n borderColor = this._hsv2rgb(hue, 1, 0.8);\n }\n return {\n fill : color,\n border : borderColor\n };\n};\n\n\n/**\n * Get the colors for the 'size' graph styles.\n * These styles are currently: 'bar-size' and 'dot-size'\n */\nGraph3d.prototype._getColorsSize = function() {\n return {\n fill : this.dataColor.fill,\n border : this.dataColor.stroke\n };\n};\n\n\n/**\n * Determine the size of a point on-screen, as determined by the\n * distance to the camera.\n *\n * @param size the size that needs to be translated to screen coordinates.\n * optional; if not passed, use the default point size.\n */\nGraph3d.prototype._calcRadius = function(point, size) {\n if (size === undefined) {\n size = this._dotSize();\n }\n\n var radius;\n if (this.showPerspective) {\n radius = size / -point.trans.z;\n }\n else {\n radius = size * -(this.eye.z / this.camera.getArmLength());\n }\n if (radius < 0) {\n radius = 0;\n }\n\n return radius;\n};\n\n\n// -----------------------------------------------------------------------------\n// Methods for drawing points per graph style.\n// -----------------------------------------------------------------------------\n\n\n/**\n * Draw single datapoint for graph style 'bar'.\n */\nGraph3d.prototype._redrawBarGraphPoint = function(ctx, point) {\n var xWidth = this.xBarWidth / 2;\n var yWidth = this.yBarWidth / 2;\n var colors = this._getColorsRegular(point);\n\n this._redrawBar(ctx, point, xWidth, yWidth, colors.fill, colors.border);\n};\n\n\n/**\n * Draw single datapoint for graph style 'bar-color'.\n */\nGraph3d.prototype._redrawBarColorGraphPoint = function(ctx, point) {\n var xWidth = this.xBarWidth / 2;\n var yWidth = this.yBarWidth / 2;\n var colors = this._getColorsColor(point);\n\n this._redrawBar(ctx, point, xWidth, yWidth, colors.fill, colors.border);\n};\n\n\n/**\n * Draw single datapoint for graph style 'bar-size'.\n */\nGraph3d.prototype._redrawBarSizeGraphPoint = function(ctx, point) {\n // calculate size for the bar\n var fraction = (point.point.value - this.valueRange.min) / this.valueRange.range();\n var xWidth = (this.xBarWidth / 2) * (fraction * 0.8 + 0.2);\n var yWidth = (this.yBarWidth / 2) * (fraction * 0.8 + 0.2);\n\n var colors = this._getColorsSize();\n\n this._redrawBar(ctx, point, xWidth, yWidth, colors.fill, colors.border);\n};\n\n\n/**\n * Draw single datapoint for graph style 'dot'.\n */\nGraph3d.prototype._redrawDotGraphPoint = function(ctx, point) {\n var colors = this._getColorsRegular(point);\n\n this._drawCircle(ctx, point, colors.fill, colors.border);\n};\n\n\n/**\n * Draw single datapoint for graph style 'dot-line'.\n */\nGraph3d.prototype._redrawDotLineGraphPoint = function(ctx, point) {\n // draw a vertical line from the XY-plane to the graph value\n var from = this._convert3Dto2D(point.bottom);\n ctx.lineWidth = 1;\n this._line(ctx, from, point.screen, this.gridColor);\n\n this._redrawDotGraphPoint(ctx, point);\n};\n\n\n/**\n * Draw single datapoint for graph style 'dot-color'.\n */\nGraph3d.prototype._redrawDotColorGraphPoint = function(ctx, point) {\n var colors = this._getColorsColor(point);\n\n this._drawCircle(ctx, point, colors.fill, colors.border);\n};\n\n\n/**\n * Draw single datapoint for graph style 'dot-size'.\n */\nGraph3d.prototype._redrawDotSizeGraphPoint = function(ctx, point) {\n var dotSize = this._dotSize();\n var fraction = (point.point.value - this.valueRange.min) / this.valueRange.range();\n var size = dotSize/2 + 2*dotSize * fraction;\n var colors = this._getColorsSize();\n\n this._drawCircle(ctx, point, colors.fill, colors.border, size);\n};\n\n\n/**\n * Draw single datapoint for graph style 'surface'.\n */\nGraph3d.prototype._redrawSurfaceGraphPoint = function(ctx, point) {\n var right = point.pointRight;\n var top = point.pointTop;\n var cross = point.pointCross;\n\n if (point === undefined || right === undefined || top === undefined || cross === undefined) {\n return;\n }\n\n var topSideVisible = true;\n var fillStyle;\n var strokeStyle;\n var lineWidth;\n\n if (this.showGrayBottom || this.showShadow) {\n // calculate the cross product of the two vectors from center\n // to left and right, in order to know whether we are looking at the\n // bottom or at the top side. We can also use the cross product\n // for calculating light intensity\n var aDiff = Point3d.subtract(cross.trans, point.trans);\n var bDiff = Point3d.subtract(top.trans, right.trans);\n var crossproduct = Point3d.crossProduct(aDiff, bDiff);\n var len = crossproduct.length();\n // FIXME: there is a bug with determining the surface side (shadow or colored)\n\n topSideVisible = (crossproduct.z > 0);\n }\n\n if (topSideVisible) {\n\n // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0\n var zAvg = (point.point.z + right.point.z + top.point.z + cross.point.z) / 4;\n var h = (1 - (zAvg - this.zRange.min) * this.scale.z / this.verticalRatio) * 240;\n var s = 1; // saturation\n var v;\n\n if (this.showShadow) {\n v = Math.min(1 + (crossproduct.x / len) / 2, 1); // value. TODO: scale\n fillStyle = this._hsv2rgb(h, s, v);\n strokeStyle = fillStyle;\n }\n else {\n v = 1;\n fillStyle = this._hsv2rgb(h, s, v);\n strokeStyle = this.axisColor; // TODO: should be customizable\n }\n }\n else {\n fillStyle = 'gray';\n strokeStyle = this.axisColor;\n }\n\n ctx.lineWidth = this._getStrokeWidth(point);\n // TODO: only draw stroke when strokeWidth > 0\n\n var points = [point, right, cross, top];\n this._polygon(ctx, points, fillStyle, strokeStyle);\n};\n\n\n/**\n * Helper method for _redrawGridGraphPoint()\n */\nGraph3d.prototype._drawGridLine = function(ctx, from, to) {\n if (from === undefined || to === undefined) {\n return;\n }\n\n // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0\n var zAvg = (from.point.z + to.point.z) / 2;\n var h = (1 - (zAvg - this.zRange.min) * this.scale.z / this.verticalRatio) * 240;\n\n ctx.lineWidth = this._getStrokeWidth(from) * 2;\n ctx.strokeStyle = this._hsv2rgb(h, 1, 1);\n this._line(ctx, from.screen, to.screen);\n};\n\n\n/**\n * Draw single datapoint for graph style 'Grid'.\n */\nGraph3d.prototype._redrawGridGraphPoint = function(ctx, point) {\n this._drawGridLine(ctx, point, point.pointRight);\n this._drawGridLine(ctx, point, point.pointTop);\n};\n\n\n/**\n * Draw single datapoint for graph style 'line'.\n */\nGraph3d.prototype._redrawLineGraphPoint = function(ctx, point) {\n if (point.pointNext === undefined) {\n return;\n }\n\n ctx.lineWidth = this._getStrokeWidth(point);\n ctx.strokeStyle = this.dataColor.stroke;\n\n this._line(ctx, point.screen, point.pointNext.screen);\n};\n\n\n/**\n * Draw all datapoints for currently selected graph style.\n *\n */\nGraph3d.prototype._redrawDataGraph = function() {\n var ctx = this._getContext();\n var i;\n\n if (this.dataPoints === undefined || this.dataPoints.length <= 0)\n return; // TODO: throw exception?\n\n this._calcTranslations(this.dataPoints);\n\n for (i = 0; i < this.dataPoints.length; i++) {\n var point = this.dataPoints[i];\n\n // Using call() ensures that the correct context is used\n this._pointDrawingMethod.call(this, ctx, point);\n }\n};\n\n\n// -----------------------------------------------------------------------------\n// End methods for drawing points per graph style.\n// -----------------------------------------------------------------------------\n\n/**\n * Store startX, startY and startOffset for mouse operations\n *\n * @param {Event} event The event that occurred\n */\nGraph3d.prototype._storeMousePosition = function(event) {\n // get mouse position (different code for IE and all other browsers)\n this.startMouseX = getMouseX(event);\n this.startMouseY = getMouseY(event);\n\n this._startCameraOffset = this.camera.getOffset();\n};\n\n\n/**\n * Start a moving operation inside the provided parent element\n * @param {Event} event The event that occurred (required for\n * retrieving the mouse position)\n */\nGraph3d.prototype._onMouseDown = function(event) {\n event = event || window.event;\n\n // check if mouse is still down (may be up when focus is lost for example\n // in an iframe)\n if (this.leftButtonDown) {\n this._onMouseUp(event);\n }\n\n // only react on left mouse button down\n this.leftButtonDown = event.which ? (event.which === 1) : (event.button === 1);\n if (!this.leftButtonDown && !this.touchDown) return;\n\n this._storeMousePosition(event);\n\n this.startStart = new Date(this.start);\n this.startEnd = new Date(this.end);\n this.startArmRotation = this.camera.getArmRotation();\n\n this.frame.style.cursor = 'move';\n\n // add event listeners to handle moving the contents\n // we store the function onmousemove and onmouseup in the graph, so we can\n // remove the eventlisteners lateron in the function mouseUp()\n var me = this;\n this.onmousemove = function (event) {me._onMouseMove(event);};\n this.onmouseup = function (event) {me._onMouseUp(event);};\n util.addEventListener(document, 'mousemove', me.onmousemove);\n util.addEventListener(document, 'mouseup', me.onmouseup);\n util.preventDefault(event);\n};\n\n\n/**\n * Perform moving operating.\n * This function activated from within the funcion Graph.mouseDown().\n * @param {Event} event Well, eehh, the event\n */\nGraph3d.prototype._onMouseMove = function (event) {\n this.moving = true;\n event = event || window.event;\n\n // calculate change in mouse position\n var diffX = parseFloat(getMouseX(event)) - this.startMouseX;\n var diffY = parseFloat(getMouseY(event)) - this.startMouseY;\n\n // move with ctrl or rotate by other\n if (event && event.ctrlKey === true) {\n // calculate change in mouse position\n var scaleX = this.frame.clientWidth * 0.5;\n var scaleY = this.frame.clientHeight * 0.5;\n\n var offXNew = (this._startCameraOffset.x || 0) - ((diffX / scaleX) * this.camera.armLength) * 0.8;\n var offYNew = (this._startCameraOffset.y || 0) + ((diffY / scaleY) * this.camera.armLength) * 0.8;\n\n this.camera.setOffset(offXNew, offYNew);\n this._storeMousePosition(event);\n } else {\n var horizontalNew = this.startArmRotation.horizontal + diffX / 200;\n var verticalNew = this.startArmRotation.vertical + diffY / 200;\n\n var snapAngle = 4; // degrees\n var snapValue = Math.sin(snapAngle / 360 * 2 * Math.PI);\n\n // snap horizontally to nice angles at 0pi, 0.5pi, 1pi, 1.5pi, etc...\n // the -0.001 is to take care that the vertical axis is always drawn at the left front corner\n if (Math.abs(Math.sin(horizontalNew)) < snapValue) {\n horizontalNew = Math.round(horizontalNew / Math.PI) * Math.PI - 0.001;\n }\n if (Math.abs(Math.cos(horizontalNew)) < snapValue) {\n horizontalNew = (Math.round(horizontalNew / Math.PI - 0.5) + 0.5) * Math.PI - 0.001;\n }\n\n // snap vertically to nice angles\n if (Math.abs(Math.sin(verticalNew)) < snapValue) {\n verticalNew = Math.round(verticalNew / Math.PI) * Math.PI;\n }\n if (Math.abs(Math.cos(verticalNew)) < snapValue) {\n verticalNew = (Math.round(verticalNew / Math.PI - 0.5) + 0.5) * Math.PI;\n }\n this.camera.setArmRotation(horizontalNew, verticalNew);\n }\n\n this.redraw();\n\n // fire a cameraPositionChange event\n var parameters = this.getCameraPosition();\n this.emit('cameraPositionChange', parameters);\n\n util.preventDefault(event);\n};\n\n\n/**\n * Stop moving operating.\n * This function activated from within the funcion Graph.mouseDown().\n * @param {event} event The event\n */\nGraph3d.prototype._onMouseUp = function (event) {\n this.frame.style.cursor = 'auto';\n this.leftButtonDown = false;\n\n // remove event listeners here\n util.removeEventListener(document, 'mousemove', this.onmousemove);\n util.removeEventListener(document, 'mouseup', this.onmouseup);\n util.preventDefault(event);\n};\n\n/**\n * @param {event} event The event\n */\nGraph3d.prototype._onClick = function (event) {\n if (!this.onclick_callback)\n return;\n if (!this.moving) {\n var boundingRect = this.frame.getBoundingClientRect();\n var mouseX = getMouseX(event) - boundingRect.left;\n var mouseY = getMouseY(event) - boundingRect.top;\n var dataPoint = this._dataPointFromXY(mouseX, mouseY);\n if (dataPoint)\n this.onclick_callback(dataPoint.point.data);\n }\n else { // disable onclick callback, if it came immediately after rotate/pan\n this.moving = false;\n }\n util.preventDefault(event);\n};\n\n/**\n * After having moved the mouse, a tooltip should pop up when the mouse is resting on a data point\n * @param {Event} event A mouse move event\n */\nGraph3d.prototype._onTooltip = function (event) {\n var delay = 300; // ms\n var boundingRect = this.frame.getBoundingClientRect();\n var mouseX = getMouseX(event) - boundingRect.left;\n var mouseY = getMouseY(event) - boundingRect.top;\n\n if (!this.showTooltip) {\n return;\n }\n\n if (this.tooltipTimeout) {\n clearTimeout(this.tooltipTimeout);\n }\n\n // (delayed) display of a tooltip only if no mouse button is down\n if (this.leftButtonDown) {\n this._hideTooltip();\n return;\n }\n\n if (this.tooltip && this.tooltip.dataPoint) {\n // tooltip is currently visible\n var dataPoint = this._dataPointFromXY(mouseX, mouseY);\n if (dataPoint !== this.tooltip.dataPoint) {\n // datapoint changed\n if (dataPoint) {\n this._showTooltip(dataPoint);\n }\n else {\n this._hideTooltip();\n }\n }\n }\n else {\n // tooltip is currently not visible\n var me = this;\n this.tooltipTimeout = setTimeout(function () {\n me.tooltipTimeout = null;\n\n // show a tooltip if we have a data point\n var dataPoint = me._dataPointFromXY(mouseX, mouseY);\n if (dataPoint) {\n me._showTooltip(dataPoint);\n }\n }, delay);\n }\n};\n\n/**\n * Event handler for touchstart event on mobile devices\n */\nGraph3d.prototype._onTouchStart = function(event) {\n this.touchDown = true;\n\n var me = this;\n this.ontouchmove = function (event) {me._onTouchMove(event);};\n this.ontouchend = function (event) {me._onTouchEnd(event);};\n util.addEventListener(document, 'touchmove', me.ontouchmove);\n util.addEventListener(document, 'touchend', me.ontouchend);\n\n this._onMouseDown(event);\n};\n\n/**\n * Event handler for touchmove event on mobile devices\n */\nGraph3d.prototype._onTouchMove = function(event) {\n this._onMouseMove(event);\n};\n\n/**\n * Event handler for touchend event on mobile devices\n */\nGraph3d.prototype._onTouchEnd = function(event) {\n this.touchDown = false;\n\n util.removeEventListener(document, 'touchmove', this.ontouchmove);\n util.removeEventListener(document, 'touchend', this.ontouchend);\n\n this._onMouseUp(event);\n};\n\n\n/**\n * Event handler for mouse wheel event, used to zoom the graph\n * Code from http://adomas.org/javascript-mouse-wheel/\n * @param {event} event The event\n */\nGraph3d.prototype._onWheel = function(event) {\n if (!event) /* For IE. */\n event = window.event;\n\n // retrieve delta\n var delta = 0;\n if (event.wheelDelta) { /* IE/Opera. */\n delta = event.wheelDelta/120;\n } else if (event.detail) { /* Mozilla case. */\n // In Mozilla, sign of delta is different than in IE.\n // Also, delta is multiple of 3.\n delta = -event.detail/3;\n }\n\n // If delta is nonzero, handle it.\n // Basically, delta is now positive if wheel was scrolled up,\n // and negative, if wheel was scrolled down.\n if (delta) {\n var oldLength = this.camera.getArmLength();\n var newLength = oldLength * (1 - delta / 10);\n\n this.camera.setArmLength(newLength);\n this.redraw();\n\n this._hideTooltip();\n }\n\n // fire a cameraPositionChange event\n var parameters = this.getCameraPosition();\n this.emit('cameraPositionChange', parameters);\n\n // Prevent default actions caused by mouse wheel.\n // That might be ugly, but we handle scrolls somehow\n // anyway, so don't bother here..\n util.preventDefault(event);\n};\n\n/**\n * Test whether a point lies inside given 2D triangle\n *\n * @param {Point2d} point\n * @param {Point2d[]} triangle\n * @returns {boolean} true if given point lies inside or on the edge of the\n * triangle, false otherwise\n * @private\n */\nGraph3d.prototype._insideTriangle = function (point, triangle) {\n var a = triangle[0],\n b = triangle[1],\n c = triangle[2];\n\n function sign (x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n\n var as = sign((b.x - a.x) * (point.y - a.y) - (b.y - a.y) * (point.x - a.x));\n var bs = sign((c.x - b.x) * (point.y - b.y) - (c.y - b.y) * (point.x - b.x));\n var cs = sign((a.x - c.x) * (point.y - c.y) - (a.y - c.y) * (point.x - c.x));\n\n // each of the three signs must be either equal to each other or zero\n return (as == 0 || bs == 0 || as == bs) &&\n (bs == 0 || cs == 0 || bs == cs) &&\n (as == 0 || cs == 0 || as == cs);\n};\n\n/**\n * Find a data point close to given screen position (x, y)\n *\n * @param {Number} x\n * @param {Number} y\n * @returns {Object | null} The closest data point or null if not close to any\n * data point\n * @private\n */\nGraph3d.prototype._dataPointFromXY = function (x, y) {\n var i,\n distMax = 100, // px\n dataPoint = null,\n closestDataPoint = null,\n closestDist = null,\n center = new Point2d(x, y);\n\n if (this.style === Graph3d.STYLE.BAR ||\n this.style === Graph3d.STYLE.BARCOLOR ||\n this.style === Graph3d.STYLE.BARSIZE) {\n // the data points are ordered from far away to closest\n for (i = this.dataPoints.length - 1; i >= 0; i--) {\n dataPoint = this.dataPoints[i];\n var surfaces = dataPoint.surfaces;\n if (surfaces) {\n for (var s = surfaces.length - 1; s >= 0; s--) {\n // split each surface in two triangles, and see if the center point is inside one of these\n var surface = surfaces[s];\n var corners = surface.corners;\n var triangle1 = [corners[0].screen, corners[1].screen, corners[2].screen];\n var triangle2 = [corners[2].screen, corners[3].screen, corners[0].screen];\n if (this._insideTriangle(center, triangle1) ||\n this._insideTriangle(center, triangle2)) {\n // return immediately at the first hit\n return dataPoint;\n }\n }\n }\n }\n }\n else {\n // find the closest data point, using distance to the center of the point on 2d screen\n for (i = 0; i < this.dataPoints.length; i++) {\n dataPoint = this.dataPoints[i];\n var point = dataPoint.screen;\n if (point) {\n var distX = Math.abs(x - point.x);\n var distY = Math.abs(y - point.y);\n var dist = Math.sqrt(distX * distX + distY * distY);\n\n if ((closestDist === null || dist < closestDist) && dist < distMax) {\n closestDist = dist;\n closestDataPoint = dataPoint;\n }\n }\n }\n }\n\n\n return closestDataPoint;\n};\n\n/**\n * Display a tooltip for given data point\n * @param {Object} dataPoint\n * @private\n */\nGraph3d.prototype._showTooltip = function (dataPoint) {\n var content, line, dot;\n\n if (!this.tooltip) {\n content = document.createElement('div');\n content.style.position = 'absolute';\n content.style.padding = '10px';\n content.style.border = '1px solid #4d4d4d';\n content.style.color = '#1a1a1a';\n content.style.background = 'rgba(255,255,255,0.7)';\n content.style.borderRadius = '2px';\n content.style.boxShadow = '5px 5px 10px rgba(128,128,128,0.5)';\n\n line = document.createElement('div');\n line.style.position = 'absolute';\n line.style.height = '40px';\n line.style.width = '0';\n line.style.borderLeft = '1px solid #4d4d4d';\n\n dot = document.createElement('div');\n dot.style.position = 'absolute';\n dot.style.height = '0';\n dot.style.width = '0';\n dot.style.border = '5px solid #4d4d4d';\n dot.style.borderRadius = '5px';\n\n this.tooltip = {\n dataPoint: null,\n dom: {\n content: content,\n line: line,\n dot: dot\n }\n };\n }\n else {\n content = this.tooltip.dom.content;\n line = this.tooltip.dom.line;\n dot = this.tooltip.dom.dot;\n }\n\n this._hideTooltip();\n\n this.tooltip.dataPoint = dataPoint;\n if (typeof this.showTooltip === 'function') {\n content.innerHTML = this.showTooltip(dataPoint.point);\n }\n else {\n content.innerHTML = '' +\n '' +\n '' +\n '' +\n '
' + this.xLabel + ':' + dataPoint.point.x + '
' + this.yLabel + ':' + dataPoint.point.y + '
' + this.zLabel + ':' + dataPoint.point.z + '
';\n }\n\n content.style.left = '0';\n content.style.top = '0';\n this.frame.appendChild(content);\n this.frame.appendChild(line);\n this.frame.appendChild(dot);\n\n // calculate sizes\n var contentWidth = content.offsetWidth;\n var contentHeight = content.offsetHeight;\n var lineHeight = line.offsetHeight;\n var dotWidth = dot.offsetWidth;\n var dotHeight = dot.offsetHeight;\n\n var left = dataPoint.screen.x - contentWidth / 2;\n left = Math.min(Math.max(left, 10), this.frame.clientWidth - 10 - contentWidth);\n\n line.style.left = dataPoint.screen.x + 'px';\n line.style.top = (dataPoint.screen.y - lineHeight) + 'px';\n content.style.left = left + 'px';\n content.style.top = (dataPoint.screen.y - lineHeight - contentHeight) + 'px';\n dot.style.left = (dataPoint.screen.x - dotWidth / 2) + 'px';\n dot.style.top = (dataPoint.screen.y - dotHeight / 2) + 'px';\n};\n\n/**\n * Hide the tooltip when displayed\n * @private\n */\nGraph3d.prototype._hideTooltip = function () {\n if (this.tooltip) {\n this.tooltip.dataPoint = null;\n\n for (var prop in this.tooltip.dom) {\n if (this.tooltip.dom.hasOwnProperty(prop)) {\n var elem = this.tooltip.dom[prop];\n if (elem && elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n }\n }\n }\n};\n\n/**--------------------------------------------------------------------------**/\n\n\n/**\n * Get the horizontal mouse position from a mouse event\n *\n * @param {Event} event\n * @returns {Number} mouse x\n */\nfunction getMouseX (event) {\n if ('clientX' in event) return event.clientX;\n return event.targetTouches[0] && event.targetTouches[0].clientX || 0;\n}\n\n/**\n * Get the vertical mouse position from a mouse event\n *\n * @param {Event} event\n * @returns {Number} mouse y\n */\nfunction getMouseY (event) {\n if ('clientY' in event) return event.clientY;\n return event.targetTouches[0] && event.targetTouches[0].clientY || 0;\n}\n\n\n// -----------------------------------------------------------------------------\n// Public methods for specific settings\n// -----------------------------------------------------------------------------\n\n/**\n * Set the rotation and distance of the camera\n *\n * @param {Object} pos An object with the camera position\n * @param {?Number} pos.horizontal The horizontal rotation, between 0 and 2*PI.\n * Optional, can be left undefined.\n * @param {?Number} pos.vertical The vertical rotation, between 0 and 0.5*PI.\n * if vertical=0.5*PI, the graph is shown from\n * the top. Optional, can be left undefined.\n * @param {?Number} pos.distance The (normalized) distance of the camera to the\n * center of the graph, a value between 0.71 and\n * 5.0. Optional, can be left undefined.\n */\nGraph3d.prototype.setCameraPosition = function(pos) {\n Settings.setCameraPosition(pos, this);\n this.redraw();\n};\n\n\n/**\n * Set a new size for the graph\n *\n * @param {string} width Width in pixels or percentage (for example '800px'\n * or '50%')\n * @param {string} height Height in pixels or percentage (for example '400px'\n * or '30%')\n */\nGraph3d.prototype.setSize = function(width, height) {\n\tthis._setSize(width, height);\n\tthis.redraw();\n};\n\n// -----------------------------------------------------------------------------\n// End public methods for specific settings\n// -----------------------------------------------------------------------------\n\n\nmodule.exports = Graph3d;\n\n\n// WEBPACK FOOTER //\n// ./lib/graph3d/Graph3d.js","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks[event] = this._callbacks[event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n var self = this;\n this._callbacks = this._callbacks || {};\n\n function on() {\n self.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks[event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n var args = [].slice.call(arguments, 1)\n , callbacks = this._callbacks[event];\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/emitter-component/index.js\n// module id = 95\n// module chunks = 0","/**\n * @prototype Point3d\n * @param {Number} [x]\n * @param {Number} [y]\n * @param {Number} [z]\n */\nfunction Point3d(x, y, z) {\n this.x = x !== undefined ? x : 0;\n this.y = y !== undefined ? y : 0;\n this.z = z !== undefined ? z : 0;\n};\n\n/**\n * Subtract the two provided points, returns a-b\n * @param {Point3d} a\n * @param {Point3d} b\n * @return {Point3d} a-b\n */\nPoint3d.subtract = function(a, b) {\n var sub = new Point3d();\n sub.x = a.x - b.x;\n sub.y = a.y - b.y;\n sub.z = a.z - b.z;\n return sub;\n};\n\n/**\n * Add the two provided points, returns a+b\n * @param {Point3d} a\n * @param {Point3d} b\n * @return {Point3d} a+b\n */\nPoint3d.add = function(a, b) {\n var sum = new Point3d();\n sum.x = a.x + b.x;\n sum.y = a.y + b.y;\n sum.z = a.z + b.z;\n return sum;\n};\n\n/**\n * Calculate the average of two 3d points\n * @param {Point3d} a\n * @param {Point3d} b\n * @return {Point3d} The average, (a+b)/2\n */\nPoint3d.avg = function(a, b) {\n return new Point3d(\n (a.x + b.x) / 2,\n (a.y + b.y) / 2,\n (a.z + b.z) / 2\n );\n};\n\n/**\n * Calculate the cross product of the two provided points, returns axb\n * Documentation: http://en.wikipedia.org/wiki/Cross_product\n * @param {Point3d} a\n * @param {Point3d} b\n * @return {Point3d} cross product axb\n */\nPoint3d.crossProduct = function(a, b) {\n var crossproduct = new Point3d();\n\n crossproduct.x = a.y * b.z - a.z * b.y;\n crossproduct.y = a.z * b.x - a.x * b.z;\n crossproduct.z = a.x * b.y - a.y * b.x;\n\n return crossproduct;\n};\n\n\n/**\n * Rtrieve the length of the vector (or the distance from this point to the origin\n * @return {Number} length\n */\nPoint3d.prototype.length = function() {\n return Math.sqrt(\n this.x * this.x +\n this.y * this.y +\n this.z * this.z\n );\n};\n\nmodule.exports = Point3d;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/graph3d/Point3d.js","/**\n * @prototype Point2d\n * @param {Number} [x]\n * @param {Number} [y]\n */\nfunction Point2d (x, y) {\n this.x = x !== undefined ? x : 0;\n this.y = y !== undefined ? y : 0;\n}\n\nmodule.exports = Point2d;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/graph3d/Point2d.js","var Point3d = require('./Point3d');\n\n/**\n * @class Camera\n * The camera is mounted on a (virtual) camera arm. The camera arm can rotate\n * The camera is always looking in the direction of the origin of the arm.\n * This way, the camera always rotates around one fixed point, the location\n * of the camera arm.\n *\n * Documentation:\n * http://en.wikipedia.org/wiki/3D_projection\n */\nfunction Camera() {\n this.armLocation = new Point3d();\n this.armRotation = {};\n this.armRotation.horizontal = 0;\n this.armRotation.vertical = 0;\n this.armLength = 1.7;\n this.cameraOffset = new Point3d();\n this.offsetMultiplier = 0.6;\n\n this.cameraLocation = new Point3d();\n this.cameraRotation = new Point3d(0.5*Math.PI, 0, 0);\n\n this.calculateCameraOrientation();\n}\n\n/**\n * Set offset camera in camera coordinates\n * @param {Number} x offset by camera horisontal\n * @param {Number} y offset by camera vertical\n */\nCamera.prototype.setOffset = function(x, y) {\n var abs = Math.abs,\n sign = Math.sign,\n mul = this.offsetMultiplier,\n border = this.armLength * mul;\n\n if (abs(x) > border) {\n x = sign(x) * border;\n }\n if (abs(y) > border) {\n y = sign(y) * border;\n }\n this.cameraOffset.x = x;\n this.cameraOffset.y = y;\n this.calculateCameraOrientation();\n};\n\n/**\n * Get camera offset by horizontal and vertical\n * @return {Point3d} x - horizontal offset, y - vertical offset, z - not used\n */\nCamera.prototype.getOffset = function(x, y) {\n return this.cameraOffset;\n};\n\n/**\n * Set the location (origin) of the arm\n * @param {Number} x Normalized value of x\n * @param {Number} y Normalized value of y\n * @param {Number} z Normalized value of z\n */\nCamera.prototype.setArmLocation = function(x, y, z) {\n this.armLocation.x = x;\n this.armLocation.y = y;\n this.armLocation.z = z;\n\n this.calculateCameraOrientation();\n};\n\n/**\n * Set the rotation of the camera arm\n * @param {Number} horizontal The horizontal rotation, between 0 and 2*PI.\n * Optional, can be left undefined.\n * @param {Number} vertical The vertical rotation, between 0 and 0.5*PI\n * if vertical=0.5*PI, the graph is shown from the\n * top. Optional, can be left undefined.\n */\nCamera.prototype.setArmRotation = function(horizontal, vertical) {\n if (horizontal !== undefined) {\n this.armRotation.horizontal = horizontal;\n }\n\n if (vertical !== undefined) {\n this.armRotation.vertical = vertical;\n if (this.armRotation.vertical < 0) this.armRotation.vertical = 0;\n if (this.armRotation.vertical > 0.5*Math.PI) this.armRotation.vertical = 0.5*Math.PI;\n }\n\n if (horizontal !== undefined || vertical !== undefined) {\n this.calculateCameraOrientation();\n }\n};\n\n/**\n * Retrieve the current arm rotation\n * @return {object} An object with parameters horizontal and vertical\n */\nCamera.prototype.getArmRotation = function() {\n var rot = {};\n rot.horizontal = this.armRotation.horizontal;\n rot.vertical = this.armRotation.vertical;\n\n return rot;\n};\n\n/**\n * Set the (normalized) length of the camera arm.\n * @param {Number} length A length between 0.71 and 5.0\n */\nCamera.prototype.setArmLength = function(length) {\n if (length === undefined)\n return;\n\n this.armLength = length;\n\n // Radius must be larger than the corner of the graph,\n // which has a distance of sqrt(0.5^2+0.5^2) = 0.71 from the center of the\n // graph\n if (this.armLength < 0.71) this.armLength = 0.71;\n if (this.armLength > 5.0) this.armLength = 5.0;\n\n this.setOffset(this.cameraOffset.x, this.cameraOffset.y);\n this.calculateCameraOrientation();\n};\n\n/**\n * Retrieve the arm length\n * @return {Number} length\n */\nCamera.prototype.getArmLength = function() {\n return this.armLength;\n};\n\n/**\n * Retrieve the camera location\n * @return {Point3d} cameraLocation\n */\nCamera.prototype.getCameraLocation = function() {\n return this.cameraLocation;\n};\n\n/**\n * Retrieve the camera rotation\n * @return {Point3d} cameraRotation\n */\nCamera.prototype.getCameraRotation = function() {\n return this.cameraRotation;\n};\n\n/**\n * Calculate the location and rotation of the camera based on the\n * position and orientation of the camera arm\n */\nCamera.prototype.calculateCameraOrientation = function() {\n // calculate location of the camera\n this.cameraLocation.x = this.armLocation.x - this.armLength * Math.sin(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical);\n this.cameraLocation.y = this.armLocation.y - this.armLength * Math.cos(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical);\n this.cameraLocation.z = this.armLocation.z + this.armLength * Math.sin(this.armRotation.vertical);\n\n // calculate rotation of the camera\n this.cameraRotation.x = Math.PI/2 - this.armRotation.vertical;\n this.cameraRotation.y = 0;\n this.cameraRotation.z = -this.armRotation.horizontal;\n\n var xa = this.cameraRotation.x;\n var ya = this.cameraRotation.y;\n var za = this.cameraRotation.z;\n var dx = this.cameraOffset.x;\n var dy = this.cameraOffset.y;\n var sin = Math.sin, cos = Math.cos;\n\n this.cameraLocation.x = this.cameraLocation.x + dx * cos(za) + dy * - sin(za) * cos(xa);\n this.cameraLocation.y = this.cameraLocation.y + dx * sin(za) + dy * cos(za) * cos(xa);\n this.cameraLocation.z = this.cameraLocation.z + dy * sin(xa);\n};\n\nmodule.exports = Camera;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/graph3d/Camera.js","module.exports = { \"default\": require(\"core-js/library/fn/math/sign\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/math/sign.js\n// module id = 99\n// module chunks = 0","require('../../modules/es6.math.sign');\nmodule.exports = require('../../modules/_core').Math.sign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/math/sign.js\n// module id = 100\n// module chunks = 0","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {sign: require('./_math-sign')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.math.sign.js\n// module id = 101\n// module chunks = 0","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x){\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_math-sign.js\n// module id = 102\n// module chunks = 0","var DataView = require('../DataView');\n\n/**\n * @class Filter\n *\n * @param {DataSet} data The google data table\n * @param {Number} column The index of the column to be filtered\n * @param {Graph} graph The graph\n */\nfunction Filter (data, column, graph) {\n this.data = data;\n this.column = column;\n this.graph = graph; // the parent graph\n\n this.index = undefined;\n this.value = undefined;\n\n // read all distinct values and select the first one\n this.values = graph.getDistinctValues(data.get(), this.column);\n\n // sort both numeric and string values correctly\n this.values.sort(function (a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n });\n\n if (this.values.length > 0) {\n this.selectValue(0);\n }\n\n // create an array with the filtered datapoints. this will be loaded afterwards\n this.dataPoints = [];\n\n this.loaded = false;\n this.onLoadCallback = undefined;\n\n if (graph.animationPreload) {\n this.loaded = false;\n this.loadInBackground();\n }\n else {\n this.loaded = true;\n }\n};\n\n\n/**\n * Return the label\n * @return {string} label\n */\nFilter.prototype.isLoaded = function() {\n return this.loaded;\n};\n\n\n/**\n * Return the loaded progress\n * @return {Number} percentage between 0 and 100\n */\nFilter.prototype.getLoadedProgress = function() {\n var len = this.values.length;\n\n var i = 0;\n while (this.dataPoints[i]) {\n i++;\n }\n\n return Math.round(i / len * 100);\n};\n\n\n/**\n * Return the label\n * @return {string} label\n */\nFilter.prototype.getLabel = function() {\n return this.graph.filterLabel;\n};\n\n\n/**\n * Return the columnIndex of the filter\n * @return {Number} columnIndex\n */\nFilter.prototype.getColumn = function() {\n return this.column;\n};\n\n/**\n * Return the currently selected value. Returns undefined if there is no selection\n * @return {*} value\n */\nFilter.prototype.getSelectedValue = function() {\n if (this.index === undefined)\n return undefined;\n\n return this.values[this.index];\n};\n\n/**\n * Retrieve all values of the filter\n * @return {Array} values\n */\nFilter.prototype.getValues = function() {\n return this.values;\n};\n\n/**\n * Retrieve one value of the filter\n * @param {Number} index\n * @return {*} value\n */\nFilter.prototype.getValue = function(index) {\n if (index >= this.values.length)\n throw new Error('Index out of range');\n\n return this.values[index];\n};\n\n\n/**\n * Retrieve the (filtered) dataPoints for the currently selected filter index\n * @param {Number} [index] (optional)\n * @return {Array} dataPoints\n */\nFilter.prototype._getDataPoints = function(index) {\n if (index === undefined)\n index = this.index;\n\n if (index === undefined)\n return [];\n\n var dataPoints;\n if (this.dataPoints[index]) {\n dataPoints = this.dataPoints[index];\n }\n else {\n var f = {};\n f.column = this.column;\n f.value = this.values[index];\n\n var dataView = new DataView(this.data,{filter: function (item) {return (item[f.column] == f.value);}}).get();\n dataPoints = this.graph._getDataPoints(dataView);\n\n this.dataPoints[index] = dataPoints;\n }\n\n return dataPoints;\n};\n\n\n\n/**\n * Set a callback function when the filter is fully loaded.\n */\nFilter.prototype.setOnLoadCallback = function(callback) {\n this.onLoadCallback = callback;\n};\n\n\n/**\n * Add a value to the list with available values for this filter\n * No double entries will be created.\n * @param {Number} index\n */\nFilter.prototype.selectValue = function(index) {\n if (index >= this.values.length)\n throw new Error('Index out of range');\n\n this.index = index;\n this.value = this.values[index];\n};\n\n/**\n * Load all filtered rows in the background one by one\n * Start this method without providing an index!\n */\nFilter.prototype.loadInBackground = function(index) {\n if (index === undefined)\n index = 0;\n\n var frame = this.graph.frame;\n\n if (index < this.values.length) {\n var dataPointsTemp = this._getDataPoints(index);\n //this.graph.redrawInfo(); // TODO: not neat\n\n // create a progress box\n if (frame.progress === undefined) {\n frame.progress = document.createElement('DIV');\n frame.progress.style.position = 'absolute';\n frame.progress.style.color = 'gray';\n frame.appendChild(frame.progress);\n }\n var progress = this.getLoadedProgress();\n frame.progress.innerHTML = 'Loading animation... ' + progress + '%';\n // TODO: this is no nice solution...\n frame.progress.style.bottom = 60 + 'px'; // TODO: use height of slider\n frame.progress.style.left = 10 + 'px';\n\n var me = this;\n setTimeout(function() {me.loadInBackground(index+1);}, 10);\n this.loaded = false;\n }\n else {\n this.loaded = true;\n\n // remove the progress box\n if (frame.progress !== undefined) {\n frame.removeChild(frame.progress);\n frame.progress = undefined;\n }\n\n if (this.onLoadCallback)\n this.onLoadCallback();\n }\n};\n\nmodule.exports = Filter;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/graph3d/Filter.js","var util = require('../util');\n\n/**\n * @constructor Slider\n *\n * An html slider control with start/stop/prev/next buttons\n * @param {Element} container The element where the slider will be created\n * @param {Object} options Available options:\n * {boolean} visible If true (default) the\n * slider is visible.\n */\nfunction Slider(container, options) {\n if (container === undefined) {\n throw new Error('No container element defined');\n }\n this.container = container;\n this.visible = (options && options.visible != undefined) ? options.visible : true;\n\n if (this.visible) {\n this.frame = document.createElement('DIV');\n //this.frame.style.backgroundColor = '#E5E5E5';\n this.frame.style.width = '100%';\n this.frame.style.position = 'relative';\n this.container.appendChild(this.frame);\n\n this.frame.prev = document.createElement('INPUT');\n this.frame.prev.type = 'BUTTON';\n this.frame.prev.value = 'Prev';\n this.frame.appendChild(this.frame.prev);\n\n this.frame.play = document.createElement('INPUT');\n this.frame.play.type = 'BUTTON';\n this.frame.play.value = 'Play';\n this.frame.appendChild(this.frame.play);\n\n this.frame.next = document.createElement('INPUT');\n this.frame.next.type = 'BUTTON';\n this.frame.next.value = 'Next';\n this.frame.appendChild(this.frame.next);\n\n this.frame.bar = document.createElement('INPUT');\n this.frame.bar.type = 'BUTTON';\n this.frame.bar.style.position = 'absolute';\n this.frame.bar.style.border = '1px solid red';\n this.frame.bar.style.width = '100px';\n this.frame.bar.style.height = '6px';\n this.frame.bar.style.borderRadius = '2px';\n this.frame.bar.style.MozBorderRadius = '2px';\n this.frame.bar.style.border = '1px solid #7F7F7F';\n this.frame.bar.style.backgroundColor = '#E5E5E5';\n this.frame.appendChild(this.frame.bar);\n\n this.frame.slide = document.createElement('INPUT');\n this.frame.slide.type = 'BUTTON';\n this.frame.slide.style.margin = '0px';\n this.frame.slide.value = ' ';\n this.frame.slide.style.position = 'relative';\n this.frame.slide.style.left = '-100px';\n this.frame.appendChild(this.frame.slide);\n\n // create events\n var me = this;\n this.frame.slide.onmousedown = function (event) {me._onMouseDown(event);};\n this.frame.prev.onclick = function (event) {me.prev(event);};\n this.frame.play.onclick = function (event) {me.togglePlay(event);};\n this.frame.next.onclick = function (event) {me.next(event);};\n }\n\n this.onChangeCallback = undefined;\n\n this.values = [];\n this.index = undefined;\n\n this.playTimeout = undefined;\n this.playInterval = 1000; // milliseconds\n this.playLoop = true;\n}\n\n/**\n * Select the previous index\n */\nSlider.prototype.prev = function() {\n var index = this.getIndex();\n if (index > 0) {\n index--;\n this.setIndex(index);\n }\n};\n\n/**\n * Select the next index\n */\nSlider.prototype.next = function() {\n var index = this.getIndex();\n if (index < this.values.length - 1) {\n index++;\n this.setIndex(index);\n }\n};\n\n/**\n * Select the next index\n */\nSlider.prototype.playNext = function() {\n var start = new Date();\n\n var index = this.getIndex();\n if (index < this.values.length - 1) {\n index++;\n this.setIndex(index);\n }\n else if (this.playLoop) {\n // jump to the start\n index = 0;\n this.setIndex(index);\n }\n\n var end = new Date();\n var diff = (end - start);\n\n // calculate how much time it to to set the index and to execute the callback\n // function.\n var interval = Math.max(this.playInterval - diff, 0);\n // document.title = diff // TODO: cleanup\n\n var me = this;\n this.playTimeout = setTimeout(function() {me.playNext();}, interval);\n};\n\n/**\n * Toggle start or stop playing\n */\nSlider.prototype.togglePlay = function() {\n if (this.playTimeout === undefined) {\n this.play();\n } else {\n this.stop();\n }\n};\n\n/**\n * Start playing\n */\nSlider.prototype.play = function() {\n // Test whether already playing\n if (this.playTimeout) return;\n\n this.playNext();\n\n if (this.frame) {\n this.frame.play.value = 'Stop';\n }\n};\n\n/**\n * Stop playing\n */\nSlider.prototype.stop = function() {\n clearInterval(this.playTimeout);\n this.playTimeout = undefined;\n\n if (this.frame) {\n this.frame.play.value = 'Play';\n }\n};\n\n/**\n * Set a callback function which will be triggered when the value of the\n * slider bar has changed.\n */\nSlider.prototype.setOnChangeCallback = function(callback) {\n this.onChangeCallback = callback;\n};\n\n/**\n * Set the interval for playing the list\n * @param {Number} interval The interval in milliseconds\n */\nSlider.prototype.setPlayInterval = function(interval) {\n this.playInterval = interval;\n};\n\n/**\n * Retrieve the current play interval\n * @return {Number} interval The interval in milliseconds\n */\nSlider.prototype.getPlayInterval = function(interval) {\n return this.playInterval;\n};\n\n/**\n * Set looping on or off\n * @pararm {boolean} doLoop If true, the slider will jump to the start when\n * the end is passed, and will jump to the end\n * when the start is passed.\n */\nSlider.prototype.setPlayLoop = function(doLoop) {\n this.playLoop = doLoop;\n};\n\n\n/**\n * Execute the onchange callback function\n */\nSlider.prototype.onChange = function() {\n if (this.onChangeCallback !== undefined) {\n this.onChangeCallback();\n }\n};\n\n/**\n * redraw the slider on the correct place\n */\nSlider.prototype.redraw = function() {\n if (this.frame) {\n // resize the bar\n this.frame.bar.style.top = (this.frame.clientHeight/2 -\n this.frame.bar.offsetHeight/2) + 'px';\n this.frame.bar.style.width = (this.frame.clientWidth -\n this.frame.prev.clientWidth -\n this.frame.play.clientWidth -\n this.frame.next.clientWidth - 30) + 'px';\n\n // position the slider button\n var left = this.indexToLeft(this.index);\n this.frame.slide.style.left = (left) + 'px';\n }\n};\n\n\n/**\n * Set the list with values for the slider\n * @param {Array} values A javascript array with values (any type)\n */\nSlider.prototype.setValues = function(values) {\n this.values = values;\n\n if (this.values.length > 0)\n this.setIndex(0);\n else\n this.index = undefined;\n};\n\n/**\n * Select a value by its index\n * @param {Number} index\n */\nSlider.prototype.setIndex = function(index) {\n if (index < this.values.length) {\n this.index = index;\n\n this.redraw();\n this.onChange();\n }\n else {\n throw new Error('Index out of range');\n }\n};\n\n/**\n * retrieve the index of the currently selected vaue\n * @return {Number} index\n */\nSlider.prototype.getIndex = function() {\n return this.index;\n};\n\n\n/**\n * retrieve the currently selected value\n * @return {*} value\n */\nSlider.prototype.get = function() {\n return this.values[this.index];\n};\n\n\nSlider.prototype._onMouseDown = function(event) {\n // only react on left mouse button down\n var leftButtonDown = event.which ? (event.which === 1) : (event.button === 1);\n if (!leftButtonDown) return;\n\n this.startClientX = event.clientX;\n this.startSlideX = parseFloat(this.frame.slide.style.left);\n\n this.frame.style.cursor = 'move';\n\n // add event listeners to handle moving the contents\n // we store the function onmousemove and onmouseup in the graph, so we can\n // remove the eventlisteners lateron in the function mouseUp()\n var me = this;\n this.onmousemove = function (event) {me._onMouseMove(event);};\n this.onmouseup = function (event) {me._onMouseUp(event);};\n util.addEventListener(document, 'mousemove', this.onmousemove);\n util.addEventListener(document, 'mouseup', this.onmouseup);\n util.preventDefault(event);\n};\n\n\nSlider.prototype.leftToIndex = function (left) {\n var width = parseFloat(this.frame.bar.style.width) -\n this.frame.slide.clientWidth - 10;\n var x = left - 3;\n\n var index = Math.round(x / width * (this.values.length-1));\n if (index < 0) index = 0;\n if (index > this.values.length-1) index = this.values.length-1;\n\n return index;\n};\n\nSlider.prototype.indexToLeft = function (index) {\n var width = parseFloat(this.frame.bar.style.width) -\n this.frame.slide.clientWidth - 10;\n\n var x = index / (this.values.length-1) * width;\n var left = x + 3;\n\n return left;\n};\n\n\n\nSlider.prototype._onMouseMove = function (event) {\n var diff = event.clientX - this.startClientX;\n var x = this.startSlideX + diff;\n\n var index = this.leftToIndex(x);\n\n this.setIndex(index);\n\n util.preventDefault();\n};\n\n\nSlider.prototype._onMouseUp = function (event) {\n this.frame.style.cursor = 'auto';\n\n // remove event listeners\n util.removeEventListener(document, 'mousemove', this.onmousemove);\n util.removeEventListener(document, 'mouseup', this.onmouseup);\n\n util.preventDefault();\n};\n\nmodule.exports = Slider;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/graph3d/Slider.js","/**\n * @prototype StepNumber\n * The class StepNumber is an iterator for Numbers. You provide a start and end\n * value, and a best step size. StepNumber itself rounds to fixed values and\n * a finds the step that best fits the provided step.\n *\n * If prettyStep is true, the step size is chosen as close as possible to the\n * provided step, but being a round value like 1, 2, 5, 10, 20, 50, ....\n *\n * Example usage:\n * var step = new StepNumber(0, 10, 2.5, true);\n * step.start();\n * while (!step.end()) {\n * alert(step.getCurrent());\n * step.next();\n * }\n *\n * Version: 1.0\n *\n * @param {Number} start The start value\n * @param {Number} end The end value\n * @param {Number} step Optional. Step size. Must be a positive value.\n * @param {boolean} prettyStep Optional. If true, the step size is rounded\n * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...)\n */\nfunction StepNumber(start, end, step, prettyStep) {\n // set default values\n this._start = 0;\n this._end = 0;\n this._step = 1;\n this.prettyStep = true;\n this.precision = 5;\n\n this._current = 0;\n this.setRange(start, end, step, prettyStep);\n};\n\n\n/**\n * Check for input values, to prevent disasters from happening\n *\n * Source: http://stackoverflow.com/a/1830844\n */\nStepNumber.prototype.isNumeric = function(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\n\n/**\n * Set a new range: start, end and step.\n *\n * @param {Number} start The start value\n * @param {Number} end The end value\n * @param {Number} step Optional. Step size. Must be a positive value.\n * @param {boolean} prettyStep Optional. If true, the step size is rounded\n * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...)\n */\nStepNumber.prototype.setRange = function(start, end, step, prettyStep) {\n if (!this.isNumeric(start)) {\n throw new Error('Parameter \\'start\\' is not numeric; value: ' + start);\n }\n if (!this.isNumeric(end)) {\n throw new Error('Parameter \\'end\\' is not numeric; value: ' + start);\n }\n if (!this.isNumeric(step)) {\n throw new Error('Parameter \\'step\\' is not numeric; value: ' + start);\n }\n\n this._start = start ? start : 0;\n this._end = end ? end : 0;\n\n this.setStep(step, prettyStep);\n};\n\n/**\n * Set a new step size\n * @param {Number} step New step size. Must be a positive value\n * @param {boolean} prettyStep Optional. If true, the provided step is rounded\n * to a pretty step size (like 1, 2, 5, 10, 20, 50, ...)\n */\nStepNumber.prototype.setStep = function(step, prettyStep) {\n if (step === undefined || step <= 0)\n return;\n\n if (prettyStep !== undefined)\n this.prettyStep = prettyStep;\n\n if (this.prettyStep === true)\n this._step = StepNumber.calculatePrettyStep(step);\n else\n this._step = step;\n};\n\n/**\n * Calculate a nice step size, closest to the desired step size.\n * Returns a value in one of the ranges 1*10^n, 2*10^n, or 5*10^n, where n is an\n * integer Number. For example 1, 2, 5, 10, 20, 50, etc...\n * @param {Number} step Desired step size\n * @return {Number} Nice step size\n */\nStepNumber.calculatePrettyStep = function (step) {\n var log10 = function (x) {return Math.log(x) / Math.LN10;};\n\n // try three steps (multiple of 1, 2, or 5\n var step1 = Math.pow(10, Math.round(log10(step))),\n step2 = 2 * Math.pow(10, Math.round(log10(step / 2))),\n step5 = 5 * Math.pow(10, Math.round(log10(step / 5)));\n\n // choose the best step (closest to minimum step)\n var prettyStep = step1;\n if (Math.abs(step2 - step) <= Math.abs(prettyStep - step)) prettyStep = step2;\n if (Math.abs(step5 - step) <= Math.abs(prettyStep - step)) prettyStep = step5;\n\n // for safety\n if (prettyStep <= 0) {\n prettyStep = 1;\n }\n\n return prettyStep;\n};\n\n/**\n * returns the current value of the step\n * @return {Number} current value\n */\nStepNumber.prototype.getCurrent = function () {\n return parseFloat(this._current.toPrecision(this.precision));\n};\n\n/**\n * returns the current step size\n * @return {Number} current step size\n */\nStepNumber.prototype.getStep = function () {\n return this._step;\n};\n\n/**\n * Set the current to its starting value.\n *\n * By default, this will be the largest value smaller than start, which\n * is a multiple of the step size.\n *\n * Parameters checkFirst is optional, default false.\n * If set to true, move the current value one step if smaller than start.\n */\nStepNumber.prototype.start = function(checkFirst) {\n if (checkFirst === undefined) {\n checkFirst = false;\n }\n\n this._current = this._start - this._start % this._step;\n\n if (checkFirst) {\n if (this.getCurrent() < this._start) {\n this.next();\n }\n }\n};\n\n\n/**\n * Do a step, add the step size to the current value\n */\nStepNumber.prototype.next = function () {\n this._current += this._step;\n};\n\n/**\n * Returns true whether the end is reached\n * @return {boolean} True if the current value has passed the end value.\n */\nStepNumber.prototype.end = function () {\n return (this._current > this._end);\n};\n\nmodule.exports = StepNumber;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/graph3d/StepNumber.js","/**\n * @prototype Range\n *\n * Helper class to make working with related min and max values easier.\n *\n * The range is inclusive; a given value is considered part of the range if:\n *\n * this.min <= value <= this.max\n */\nfunction Range() {\n this.min = undefined;\n this.max = undefined;\n}\n\n\n/**\n * Adjust the range so that the passed value fits in it.\n *\n * If the value is outside of the current extremes, adjust\n * the min or max so that the value is within the range.\n *\n * @param {number} value Numeric value to fit in range\n */\nRange.prototype.adjust = function(value) {\n if (value === undefined) return;\n\n if (this.min === undefined || this.min > value ) {\n this.min = value;\n }\n\n if (this.max === undefined || this.max < value) {\n this.max = value;\n }\n};\n\n\n/**\n * Adjust the current range so that the passed range fits in it.\n *\n * @param {Range} range Range instance to fit in current instance\n */\nRange.prototype.combine = function(range) {\n this.add(range.min);\n this.add(range.max);\n};\n\n\n/**\n * Expand the range by the given value\n *\n * min will be lowered by given value;\n * max will be raised by given value\n *\n * Shrinking by passing a negative value is allowed.\n *\n * @param {number} val Amount by which to expand or shrink current range with\n */\nRange.prototype.expand = function(val) {\n if (val === undefined) {\n return;\n }\n\n var newMin = this.min - val;\n var newMax = this.max + val;\n\n // Note that following allows newMin === newMax.\n // This should be OK, since method expand() allows this also.\n if (newMin > newMax) {\n throw new Error('Passed expansion value makes range invalid');\n }\n\n this.min = newMin;\n this.max = newMax;\n};\n\n\n/**\n * Determine the full range width of current instance.\n *\n * @returns {num} The calculated width of this range\n */\nRange.prototype.range = function() {\n return this.max - this.min;\n};\n\n\n/**\n * Determine the central point of current instance.\n *\n * @returns {number} the value in the middle of min and max\n */\nRange.prototype.center = function() {\n return (this.min + this.max) / 2;\n};\n\n\nmodule.exports = Range;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/graph3d/Range.js","////////////////////////////////////////////////////////////////////////////////\n// This modules handles the options for Graph3d.\n//\n////////////////////////////////////////////////////////////////////////////////\nvar Camera = require('./Camera');\nvar Point3d = require('./Point3d');\n\n\n// enumerate the available styles\nvar STYLE = {\n BAR : 0,\n BARCOLOR: 1,\n BARSIZE : 2,\n DOT : 3,\n DOTLINE : 4,\n DOTCOLOR: 5,\n DOTSIZE : 6,\n GRID : 7,\n LINE : 8,\n SURFACE : 9\n};\n\n\n// The string representations of the styles\nvar STYLENAME = {\n 'dot' : STYLE.DOT,\n 'dot-line' : STYLE.DOTLINE,\n 'dot-color': STYLE.DOTCOLOR,\n 'dot-size' : STYLE.DOTSIZE,\n 'line' : STYLE.LINE,\n 'grid' : STYLE.GRID,\n 'surface' : STYLE.SURFACE,\n 'bar' : STYLE.BAR,\n 'bar-color': STYLE.BARCOLOR,\n 'bar-size' : STYLE.BARSIZE\n};\n\n\n/**\n * Field names in the options hash which are of relevance to the user.\n *\n * Specifically, these are the fields which require no special handling,\n * and can be directly copied over.\n */\nvar OPTIONKEYS = [\n 'width',\n 'height',\n 'filterLabel',\n 'legendLabel',\n 'xLabel',\n 'yLabel',\n 'zLabel',\n 'xValueLabel',\n 'yValueLabel',\n 'zValueLabel',\n 'showGrid',\n 'showPerspective',\n 'showShadow',\n 'keepAspectRatio',\n 'verticalRatio',\n 'dotSizeRatio',\n 'showAnimationControls',\n 'animationInterval',\n 'animationPreload',\n 'animationAutoStart',\n 'axisColor',\n 'gridColor',\n 'xCenter',\n 'yCenter'\n];\n\n\n/**\n * Field names in the options hash which are of relevance to the user.\n *\n * Same as OPTIONKEYS, but internally these fields are stored with \n * prefix 'default' in the name.\n */\nvar PREFIXEDOPTIONKEYS = [\n 'xBarWidth',\n 'yBarWidth',\n 'valueMin',\n 'valueMax',\n 'xMin',\n 'xMax',\n 'xStep',\n 'yMin',\n 'yMax',\n 'yStep',\n 'zMin',\n 'zMax',\n 'zStep'\n];\n\n\n// Placeholder for DEFAULTS reference\nvar DEFAULTS = undefined; \n\n\n/**\n * Check if given hash is empty.\n *\n * Source: http://stackoverflow.com/a/679937\n */\nfunction isEmpty(obj) {\n for(var prop in obj) {\n if (obj.hasOwnProperty(prop))\n return false;\n }\n\n return true;\n}\n\n\n\n/**\n * Make first letter of parameter upper case.\n *\n * Source: http://stackoverflow.com/a/1026087\n */\nfunction capitalize(str) {\n if (str === undefined || str === \"\" || typeof str != \"string\") {\n return str;\n }\n\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\n/**\n * Add a prefix to a field name, taking style guide into account\n */\nfunction prefixFieldName(prefix, fieldName) {\n if (prefix === undefined || prefix === \"\") {\n return fieldName;\n }\n\n return prefix + capitalize(fieldName);\n}\n\n\n/**\n * Forcibly copy fields from src to dst in a controlled manner.\n *\n * A given field in dst will always be overwitten. If this field\n * is undefined or not present in src, the field in dst will \n * be explicitly set to undefined.\n * \n * The intention here is to be able to reset all option fields.\n * \n * Only the fields mentioned in array 'fields' will be handled.\n *\n * @param fields array with names of fields to copy\n * @param prefix optional; prefix to use for the target fields.\n */\nfunction forceCopy(src, dst, fields, prefix) {\n var srcKey;\n var dstKey;\n\n for (var i in fields) {\n srcKey = fields[i];\n dstKey = prefixFieldName(prefix, srcKey);\n\n dst[dstKey] = src[srcKey];\n }\n}\n\n\n/**\n * Copy fields from src to dst in a safe and controlled manner.\n *\n * Only the fields mentioned in array 'fields' will be copied over,\n * and only if these are actually defined.\n *\n * @param fields array with names of fields to copy\n * @param prefix optional; prefix to use for the target fields.\n */\nfunction safeCopy(src, dst, fields, prefix) {\n var srcKey;\n var dstKey;\n\n for (var i in fields) {\n srcKey = fields[i];\n if (src[srcKey] === undefined) continue;\n\n dstKey = prefixFieldName(prefix, srcKey);\n\n dst[dstKey] = src[srcKey];\n }\n}\n\n\n/**\n * Initialize dst with the values in src.\n *\n * src is the hash with the default values. \n * A reference DEFAULTS to this hash is stored locally for \n * further handling.\n *\n * For now, dst is assumed to be a Graph3d instance.\n */\nfunction setDefaults(src, dst) {\n if (src === undefined || isEmpty(src)) {\n throw new Error('No DEFAULTS passed');\n }\n if (dst === undefined) {\n throw new Error('No dst passed');\n }\n\n // Remember defaults for future reference\n DEFAULTS = src;\n\n // Handle the defaults which can be simply copied over\n forceCopy(src, dst, OPTIONKEYS);\n forceCopy(src, dst, PREFIXEDOPTIONKEYS, 'default');\n\n // Handle the more complex ('special') fields\n setSpecialSettings(src, dst);\n\n // Following are internal fields, not part of the user settings\n dst.margin = 10; // px\n dst.showGrayBottom = false; // TODO: this does not work correctly\n dst.showTooltip = false;\n dst.onclick_callback = null;\n dst.eye = new Point3d(0, 0, -1); // TODO: set eye.z about 3/4 of the width of the window?\n}\n\n\nfunction setOptions(options, dst) {\n if (options === undefined) {\n return;\n }\n if (dst === undefined) {\n throw new Error('No dst passed');\n }\n\n if (DEFAULTS === undefined || isEmpty(DEFAULTS)) {\n throw new Error('DEFAULTS not set for module Settings');\n }\n\n\n // Handle the parameters which can be simply copied over\n safeCopy(options, dst, OPTIONKEYS);\n safeCopy(options, dst, PREFIXEDOPTIONKEYS, 'default');\n\n // Handle the more complex ('special') fields\n setSpecialSettings(options, dst);\n}\n\n\n/**\n * Special handling for certain parameters\n *\n * 'Special' here means: setting requires more than a simple copy\n */\nfunction setSpecialSettings(src, dst) {\n if (src.backgroundColor !== undefined) {\n setBackgroundColor(src.backgroundColor, dst);\n }\n\n setDataColor(src.dataColor, dst);\n setStyle(src.style, dst);\n setShowLegend(src.showLegend, dst);\n setCameraPosition(src.cameraPosition, dst);\n\n // As special fields go, this is an easy one; just a translation of the name.\n // Can't use this.tooltip directly, because that field exists internally\n if (src.tooltip !== undefined) {\n dst.showTooltip = src.tooltip;\n }\n if (src.onclick != undefined) {\n dst.onclick_callback = src.onclick;\n }\n}\n\n\n/**\n * Set the value of setting 'showLegend'\n *\n * This depends on the value of the style fields, so it must be called\n * after the style field has been initialized.\n */\nfunction setShowLegend(showLegend, dst) {\n if (showLegend === undefined) {\n // If the default was auto, make a choice for this field\n var isAutoByDefault = (DEFAULTS.showLegend === undefined);\n\n if (isAutoByDefault) {\n // these styles default to having legends\n var isLegendGraphStyle = dst.style === STYLE.DOTCOLOR\n || dst.style === STYLE.DOTSIZE;\n\n dst.showLegend = isLegendGraphStyle;\n } else {\n // Leave current value as is\n }\n } else {\n dst.showLegend = showLegend;\n }\n}\n\n\n/**\n * Retrieve the style index from given styleName\n * @param {string} styleName Style name such as 'dot', 'grid', 'dot-line'\n * @return {Number} styleNumber Enumeration value representing the style, or -1\n * when not found\n */\nfunction getStyleNumberByName(styleName) {\n var number = STYLENAME[styleName];\n\n if (number === undefined) {\n return -1;\n }\n\n return number;\n}\n\n\n/**\n * Check if given number is a valid style number.\n *\n * @return true if valid, false otherwise\n */\nfunction checkStyleNumber(style) {\n var valid = false;\n\n for (var n in STYLE) {\n if (STYLE[n] === style) {\n valid = true;\n break;\n }\n }\n\n return valid;\n}\n\n\nfunction setStyle(style, dst) {\n if (style === undefined) {\n return; // Nothing to do\n }\n\n var styleNumber;\n\n if (typeof style === 'string') {\n styleNumber = getStyleNumberByName(style);\n\n if (styleNumber === -1 ) {\n throw new Error('Style \\'' + style + '\\' is invalid');\n }\n } else {\n // Do a pedantic check on style number value\n if (!checkStyleNumber(style)) {\n throw new Error('Style \\'' + style + '\\' is invalid');\n }\n\n styleNumber = style;\n }\n\n dst.style = styleNumber;\n}\n\n\n/**\n * Set the background styling for the graph\n * @param {string | {fill: string, stroke: string, strokeWidth: string}} backgroundColor\n */\nfunction setBackgroundColor(backgroundColor, dst) {\n var fill = 'white';\n var stroke = 'gray';\n var strokeWidth = 1;\n\n if (typeof(backgroundColor) === 'string') {\n fill = backgroundColor;\n stroke = 'none';\n strokeWidth = 0;\n }\n else if (typeof(backgroundColor) === 'object') {\n if (backgroundColor.fill !== undefined) fill = backgroundColor.fill;\n if (backgroundColor.stroke !== undefined) stroke = backgroundColor.stroke;\n if (backgroundColor.strokeWidth !== undefined) strokeWidth = backgroundColor.strokeWidth;\n }\n else {\n throw new Error('Unsupported type of backgroundColor');\n }\n\n dst.frame.style.backgroundColor = fill;\n dst.frame.style.borderColor = stroke;\n dst.frame.style.borderWidth = strokeWidth + 'px';\n dst.frame.style.borderStyle = 'solid';\n}\n\n\nfunction setDataColor(dataColor, dst) {\n if (dataColor === undefined) {\n return; // Nothing to do\n }\n\n if (dst.dataColor === undefined) {\n dst.dataColor = {};\n }\n\n if (typeof dataColor === 'string') {\n dst.dataColor.fill = dataColor;\n dst.dataColor.stroke = dataColor;\n }\n else {\n if (dataColor.fill) {\n dst.dataColor.fill = dataColor.fill;\n }\n if (dataColor.stroke) {\n dst.dataColor.stroke = dataColor.stroke;\n }\n if (dataColor.strokeWidth !== undefined) {\n dst.dataColor.strokeWidth = dataColor.strokeWidth;\n }\n }\n}\n\n\nfunction setCameraPosition(cameraPosition, dst) {\n var camPos = cameraPosition;\n if (camPos === undefined) {\n return;\n }\n\n if (dst.camera === undefined) {\n dst.camera = new Camera();\n }\n\n dst.camera.setArmRotation(camPos.horizontal, camPos.vertical);\n dst.camera.setArmLength(camPos.distance);\n}\n\n\nmodule.exports.STYLE = STYLE;\nmodule.exports.setDefaults = setDefaults;\nmodule.exports.setOptions = setOptions;\nmodule.exports.setCameraPosition = setCameraPosition;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/graph3d/Settings.js","// Only load hammer.js when in a browser environment\n// (loading hammer.js in a node.js environment gives errors)\nif (typeof window !== 'undefined') {\n var propagating = require('propagating-hammerjs');\n var Hammer = window['Hammer'] || require('hammerjs');\n module.exports = propagating(Hammer, {\n preventDefault: 'mouse'\n });\n}\nelse {\n module.exports = function () {\n throw Error('hammer.js is only available in a browser, not in node.js.');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/module/hammer.js","'use strict';\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n window.propagating = factory();\n }\n}(function () {\n var _firstTarget = null; // singleton, will contain the target element where the touch event started\n\n /**\n * Extend an Hammer.js instance with event propagation.\n *\n * Features:\n * - Events emitted by hammer will propagate in order from child to parent\n * elements.\n * - Events are extended with a function `event.stopPropagation()` to stop\n * propagation to parent elements.\n * - An option `preventDefault` to stop all default browser behavior.\n *\n * Usage:\n * var hammer = propagatingHammer(new Hammer(element));\n * var hammer = propagatingHammer(new Hammer(element), {preventDefault: true});\n *\n * @param {Hammer.Manager} hammer An hammer instance.\n * @param {Object} [options] Available options:\n * - `preventDefault: true | false | 'mouse' | 'touch' | 'pen'`.\n * Enforce preventing the default browser behavior.\n * Cannot be set to `false`.\n * @return {Hammer.Manager} Returns the same hammer instance with extended\n * functionality\n */\n return function propagating(hammer, options) {\n var _options = options || {\n preventDefault: false\n };\n\n if (hammer.Manager) {\n // This looks like the Hammer constructor.\n // Overload the constructors with our own.\n var Hammer = hammer;\n\n var PropagatingHammer = function(element, options) {\n var o = Object.create(_options);\n if (options) Hammer.assign(o, options);\n return propagating(new Hammer(element, o), o);\n };\n Hammer.assign(PropagatingHammer, Hammer);\n\n PropagatingHammer.Manager = function (element, options) {\n var o = Object.create(_options);\n if (options) Hammer.assign(o, options);\n return propagating(new Hammer.Manager(element, o), o);\n };\n\n return PropagatingHammer;\n }\n\n // create a wrapper object which will override the functions\n // `on`, `off`, `destroy`, and `emit` of the hammer instance\n var wrapper = Object.create(hammer);\n\n // attach to DOM element\n var element = hammer.element;\n\n if(!element.hammer) element.hammer = [];\n element.hammer.push(wrapper);\n\n // register an event to catch the start of a gesture and store the\n // target in a singleton\n hammer.on('hammer.input', function (event) {\n if (_options.preventDefault === true || (_options.preventDefault === event.pointerType)) {\n event.preventDefault();\n }\n if (event.isFirst) {\n _firstTarget = event.target;\n }\n });\n\n /** @type {Object.>} */\n wrapper._handlers = {};\n\n /**\n * Register a handler for one or multiple events\n * @param {String} events A space separated string with events\n * @param {function} handler A callback function, called as handler(event)\n * @returns {Hammer.Manager} Returns the hammer instance\n */\n wrapper.on = function (events, handler) {\n // register the handler\n split(events).forEach(function (event) {\n var _handlers = wrapper._handlers[event];\n if (!_handlers) {\n wrapper._handlers[event] = _handlers = [];\n\n // register the static, propagated handler\n hammer.on(event, propagatedHandler);\n }\n _handlers.push(handler);\n });\n\n return wrapper;\n };\n\n /**\n * Unregister a handler for one or multiple events\n * @param {String} events A space separated string with events\n * @param {function} [handler] Optional. The registered handler. If not\n * provided, all handlers for given events\n * are removed.\n * @returns {Hammer.Manager} Returns the hammer instance\n */\n wrapper.off = function (events, handler) {\n // unregister the handler\n split(events).forEach(function (event) {\n var _handlers = wrapper._handlers[event];\n if (_handlers) {\n _handlers = handler ? _handlers.filter(function (h) {\n return h !== handler;\n }) : [];\n\n if (_handlers.length > 0) {\n wrapper._handlers[event] = _handlers;\n }\n else {\n // remove static, propagated handler\n hammer.off(event, propagatedHandler);\n delete wrapper._handlers[event];\n }\n }\n });\n\n return wrapper;\n };\n\n /**\n * Emit to the event listeners\n * @param {string} eventType\n * @param {Event} event\n */\n wrapper.emit = function(eventType, event) {\n _firstTarget = event.target;\n hammer.emit(eventType, event);\n };\n\n wrapper.destroy = function () {\n // Detach from DOM element\n var hammers = hammer.element.hammer;\n var idx = hammers.indexOf(wrapper);\n if(idx !== -1) hammers.splice(idx,1);\n if(!hammers.length) delete hammer.element.hammer;\n\n // clear all handlers\n wrapper._handlers = {};\n\n // call original hammer destroy\n hammer.destroy();\n };\n\n // split a string with space separated words\n function split(events) {\n return events.match(/[^ ]+/g);\n }\n\n /**\n * A static event handler, applying event propagation.\n * @param {Object} event\n */\n function propagatedHandler(event) {\n // let only a single hammer instance handle this event\n if (event.type !== 'hammer.input') {\n // it is possible that the same srcEvent is used with multiple hammer events,\n // we keep track on which events are handled in an object _handled\n if (!event.srcEvent._handled) {\n event.srcEvent._handled = {};\n }\n\n if (event.srcEvent._handled[event.type]) {\n return;\n }\n else {\n event.srcEvent._handled[event.type] = true;\n }\n }\n\n // attach a stopPropagation function to the event\n var stopped = false;\n event.stopPropagation = function () {\n stopped = true;\n };\n\n //wrap the srcEvent's stopPropagation to also stop hammer propagation:\n var srcStop = event.srcEvent.stopPropagation.bind(event.srcEvent);\n if(typeof srcStop == \"function\") {\n event.srcEvent.stopPropagation = function(){\n srcStop();\n event.stopPropagation();\n }\n }\n\n // attach firstTarget property to the event\n event.firstTarget = _firstTarget;\n\n // propagate over all elements (until stopped)\n var elem = _firstTarget;\n while (elem && !stopped) {\n var elemHammer = elem.hammer;\n if(elemHammer){\n var _handlers;\n for(var k = 0; k < elemHammer.length; k++){\n _handlers = elemHammer[k]._handlers[event.type];\n if(_handlers) for (var i = 0; i < _handlers.length && !stopped; i++) {\n _handlers[i](event);\n }\n }\n }\n elem = elem.parentNode;\n }\n }\n\n return wrapper;\n };\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/propagating-hammerjs/propagating.js\n// module id = 109\n// module chunks = 0","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/hammerjs/hammer.js\n// module id = 110\n// module chunks = 0","\"use strict\";\r\n/**\r\n * Created by Alex on 11/6/2014.\r\n */\r\n\r\n// https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60\r\n// if the module has no dependencies, the above pattern can be simplified to\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define([], factory);\r\n } else if (typeof exports === 'object') {\r\n // Node. Does not work with strict CommonJS, but\r\n // only CommonJS-like environments that support module.exports,\r\n // like Node.\r\n module.exports = factory();\r\n } else {\r\n // Browser globals (root is window)\r\n root.keycharm = factory();\r\n }\r\n}(this, function () {\r\n\r\n function keycharm(options) {\r\n var preventDefault = options && options.preventDefault || false;\r\n\r\n var container = options && options.container || window;\r\n\r\n var _exportFunctions = {};\r\n var _bound = {keydown:{}, keyup:{}};\r\n var _keys = {};\r\n var i;\r\n\r\n // a - z\r\n for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};}\r\n // A - Z\r\n for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};}\r\n // 0 - 9\r\n for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};}\r\n // F1 - F12\r\n for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};}\r\n // num0 - num9\r\n for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};}\r\n\r\n // numpad misc\r\n _keys['num*'] = {code:106, shift: false};\r\n _keys['num+'] = {code:107, shift: false};\r\n _keys['num-'] = {code:109, shift: false};\r\n _keys['num/'] = {code:111, shift: false};\r\n _keys['num.'] = {code:110, shift: false};\r\n // arrows\r\n _keys['left'] = {code:37, shift: false};\r\n _keys['up'] = {code:38, shift: false};\r\n _keys['right'] = {code:39, shift: false};\r\n _keys['down'] = {code:40, shift: false};\r\n // extra keys\r\n _keys['space'] = {code:32, shift: false};\r\n _keys['enter'] = {code:13, shift: false};\r\n _keys['shift'] = {code:16, shift: undefined};\r\n _keys['esc'] = {code:27, shift: false};\r\n _keys['backspace'] = {code:8, shift: false};\r\n _keys['tab'] = {code:9, shift: false};\r\n _keys['ctrl'] = {code:17, shift: false};\r\n _keys['alt'] = {code:18, shift: false};\r\n _keys['delete'] = {code:46, shift: false};\r\n _keys['pageup'] = {code:33, shift: false};\r\n _keys['pagedown'] = {code:34, shift: false};\r\n // symbols\r\n _keys['='] = {code:187, shift: false};\r\n _keys['-'] = {code:189, shift: false};\r\n _keys[']'] = {code:221, shift: false};\r\n _keys['['] = {code:219, shift: false};\r\n\r\n\r\n\r\n var down = function(event) {handleEvent(event,'keydown');};\r\n var up = function(event) {handleEvent(event,'keyup');};\r\n\r\n // handle the actualy bound key with the event\r\n var handleEvent = function(event,type) {\r\n if (_bound[type][event.keyCode] !== undefined) {\r\n var bound = _bound[type][event.keyCode];\r\n for (var i = 0; i < bound.length; i++) {\r\n if (bound[i].shift === undefined) {\r\n bound[i].fn(event);\r\n }\r\n else if (bound[i].shift == true && event.shiftKey == true) {\r\n bound[i].fn(event);\r\n }\r\n else if (bound[i].shift == false && event.shiftKey == false) {\r\n bound[i].fn(event);\r\n }\r\n }\r\n\r\n if (preventDefault == true) {\r\n event.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n // bind a key to a callback\r\n _exportFunctions.bind = function(key, callback, type) {\r\n if (type === undefined) {\r\n type = 'keydown';\r\n }\r\n if (_keys[key] === undefined) {\r\n throw new Error(\"unsupported key: \" + key);\r\n }\r\n if (_bound[type][_keys[key].code] === undefined) {\r\n _bound[type][_keys[key].code] = [];\r\n }\r\n _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift});\r\n };\r\n\r\n\r\n // bind all keys to a call back (demo purposes)\r\n _exportFunctions.bindAll = function(callback, type) {\r\n if (type === undefined) {\r\n type = 'keydown';\r\n }\r\n for (var key in _keys) {\r\n if (_keys.hasOwnProperty(key)) {\r\n _exportFunctions.bind(key,callback,type);\r\n }\r\n }\r\n };\r\n\r\n // get the key label from an event\r\n _exportFunctions.getKey = function(event) {\r\n for (var key in _keys) {\r\n if (_keys.hasOwnProperty(key)) {\r\n if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) {\r\n return key;\r\n }\r\n else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) {\r\n return key;\r\n }\r\n else if (event.keyCode == _keys[key].code && key == 'shift') {\r\n return key;\r\n }\r\n }\r\n }\r\n return \"unknown key, currently not supported\";\r\n };\r\n\r\n // unbind either a specific callback from a key or all of them (by leaving callback undefined)\r\n _exportFunctions.unbind = function(key, callback, type) {\r\n if (type === undefined) {\r\n type = 'keydown';\r\n }\r\n if (_keys[key] === undefined) {\r\n throw new Error(\"unsupported key: \" + key);\r\n }\r\n if (callback !== undefined) {\r\n var newBindings = [];\r\n var bound = _bound[type][_keys[key].code];\r\n if (bound !== undefined) {\r\n for (var i = 0; i < bound.length; i++) {\r\n if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) {\r\n newBindings.push(_bound[type][_keys[key].code][i]);\r\n }\r\n }\r\n }\r\n _bound[type][_keys[key].code] = newBindings;\r\n }\r\n else {\r\n _bound[type][_keys[key].code] = [];\r\n }\r\n };\r\n\r\n // reset all bound variables.\r\n _exportFunctions.reset = function() {\r\n _bound = {keydown:{}, keyup:{}};\r\n };\r\n\r\n // unbind all listeners and reset all variables.\r\n _exportFunctions.destroy = function() {\r\n _bound = {keydown:{}, keyup:{}};\r\n container.removeEventListener('keydown', down, true);\r\n container.removeEventListener('keyup', up, true);\r\n };\r\n\r\n // create listeners.\r\n container.addEventListener('keydown',down,true);\r\n container.addEventListener('keyup',up,true);\r\n\r\n // return the public functions.\r\n return _exportFunctions;\r\n }\r\n\r\n return keycharm;\r\n}));\r\n\r\n\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/keycharm/keycharm.js\n// module id = 111\n// module chunks = 0","// utils\nexports.util = require('./lib/util');\nexports.DOMutil = require('./lib/DOMutil');\n\n// data\nexports.DataSet = require('./lib/DataSet');\nexports.DataView = require('./lib/DataView');\nexports.Queue = require('./lib/Queue');\n\n// Timeline\nexports.Timeline = require('./lib/timeline/Timeline');\nexports.Graph2d = require('./lib/timeline/Graph2d');\nexports.timeline = {\n Core: require('./lib/timeline/Core'),\n DateUtil: require('./lib/timeline/DateUtil'),\n Range: require('./lib/timeline/Range'),\n stack: require('./lib/timeline/Stack'),\n TimeStep: require('./lib/timeline/TimeStep'),\n\n components: {\n items: {\n Item: require('./lib/timeline/component/item/Item'),\n BackgroundItem: require('./lib/timeline/component/item/BackgroundItem'),\n BoxItem: require('./lib/timeline/component/item/BoxItem'),\n PointItem: require('./lib/timeline/component/item/PointItem'),\n RangeItem: require('./lib/timeline/component/item/RangeItem')\n },\n\n BackgroundGroup: require('./lib/timeline/component/BackgroundGroup'),\n Component: require('./lib/timeline/component/Component'),\n CurrentTime: require('./lib/timeline/component/CurrentTime'),\n CustomTime: require('./lib/timeline/component/CustomTime'),\n DataAxis: require('./lib/timeline/component/DataAxis'),\n DataScale: require('./lib/timeline/component/DataScale'),\n GraphGroup: require('./lib/timeline/component/GraphGroup'),\n Group: require('./lib/timeline/component/Group'),\n ItemSet: require('./lib/timeline/component/ItemSet'),\n Legend: require('./lib/timeline/component/Legend'),\n LineGraph: require('./lib/timeline/component/LineGraph'),\n TimeAxis: require('./lib/timeline/component/TimeAxis')\n }\n};\n\n// bundled external libraries\nexports.moment = require('./lib/module/moment');\nexports.Hammer = require('./lib/module/hammer');\nexports.keycharm = require('keycharm');\n\n\n\n// WEBPACK FOOTER //\n// ./index-timeline-graph2d.js","var Emitter = require('emitter-component');\nvar Hammer = require('../module/hammer');\nvar moment = require('../module/moment');\nvar util = require('../util');\nvar DataSet = require('../DataSet');\nvar DataView = require('../DataView');\nvar Range = require('./Range');\nvar Core = require('./Core');\nvar TimeAxis = require('./component/TimeAxis');\nvar CurrentTime = require('./component/CurrentTime');\nvar CustomTime = require('./component/CustomTime');\nvar ItemSet = require('./component/ItemSet');\n\nvar printStyle = require('../shared/Validator').printStyle;\nvar allOptions = require('./optionsTimeline').allOptions;\nvar configureOptions = require('./optionsTimeline').configureOptions;\n\nimport Configurator from '../shared/Configurator';\nimport Validator from '../shared/Validator';\n\n\n/**\n * Create a timeline visualization\n * @param {HTMLElement} container\n * @param {vis.DataSet | vis.DataView | Array} [items]\n * @param {vis.DataSet | vis.DataView | Array} [groups]\n * @param {Object} [options] See Timeline.setOptions for the available options.\n * @constructor\n * @extends Core\n */\nfunction Timeline (container, items, groups, options) {\n\n if (!(this instanceof Timeline)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n // if the third element is options, the forth is groups (optionally);\n if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) {\n var forthArgument = options;\n options = groups;\n groups = forthArgument;\n }\n\n // TODO: REMOVE THIS in the next MAJOR release\n // see https://github.com/almende/vis/issues/2511\n if (options && options.throttleRedraw) {\n console.warn(\"Timeline option \\\"throttleRedraw\\\" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.\");\n }\n\n var me = this;\n this.defaultOptions = {\n start: null,\n end: null,\n autoResize: true,\n orientation: {\n axis: 'bottom', // axis orientation: 'bottom', 'top', or 'both'\n item: 'bottom' // not relevant\n },\n moment: moment,\n width: null,\n height: null,\n maxHeight: null,\n minHeight: null\n };\n this.options = util.deepExtend({}, this.defaultOptions);\n\n // Create the DOM, props, and emitter\n this._create(container);\n if (!options || (options && typeof options.rtl == \"undefined\")) {\n var directionFromDom, domNode = this.dom.root;\n while (!directionFromDom && domNode) {\n directionFromDom = window.getComputedStyle(domNode, null).direction;\n domNode = domNode.parentElement;\n }\n this.options.rtl = (directionFromDom && (directionFromDom.toLowerCase() == \"rtl\"));\n } else {\n this.options.rtl = options.rtl;\n }\n\n this.options.rollingMode = options && options.rollingMode;\n\n // all components listed here will be repainted automatically\n this.components = [];\n\n this.body = {\n dom: this.dom,\n domProps: this.props,\n emitter: {\n on: this.on.bind(this),\n off: this.off.bind(this),\n emit: this.emit.bind(this)\n },\n hiddenDates: [],\n util: {\n getScale: function () {\n return me.timeAxis.step.scale;\n },\n getStep: function () {\n return me.timeAxis.step.step;\n },\n\n toScreen: me._toScreen.bind(me),\n toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width\n toTime: me._toTime.bind(me),\n toGlobalTime : me._toGlobalTime.bind(me)\n }\n };\n\n // range\n this.range = new Range(this.body, this.options);\n this.components.push(this.range);\n this.body.range = this.range;\n\n // time axis\n this.timeAxis = new TimeAxis(this.body, this.options);\n this.timeAxis2 = null; // used in case of orientation option 'both'\n this.components.push(this.timeAxis);\n\n // current time bar\n this.currentTime = new CurrentTime(this.body, this.options);\n this.components.push(this.currentTime);\n\n // item set\n this.itemSet = new ItemSet(this.body, this.options);\n this.components.push(this.itemSet);\n\n this.itemsData = null; // DataSet\n this.groupsData = null; // DataSet\n\n this.dom.root.onclick = function (event) {\n me.emit('click', me.getEventProperties(event))\n };\n this.dom.root.ondblclick = function (event) {\n me.emit('doubleClick', me.getEventProperties(event))\n };\n this.dom.root.oncontextmenu = function (event) {\n me.emit('contextmenu', me.getEventProperties(event))\n };\n this.dom.root.onmouseover = function (event) {\n me.emit('mouseOver', me.getEventProperties(event))\n };\n this.dom.root.onmousemove = function (event) {\n me.emit('mouseMove', me.getEventProperties(event))\n };\n\n //Single time autoscale/fit\n this.fitDone = false;\n this.on('changed', function (){\n if (this.itemsData == null || this.options.rollingMode) return;\n if (!me.fitDone) {\n me.fitDone = true;\n if (me.options.start != undefined || me.options.end != undefined) {\n if (me.options.start == undefined || me.options.end == undefined) {\n var range = me.getItemRange();\n }\n\n var start = me.options.start != undefined ? me.options.start : range.min;\n var end = me.options.end != undefined ? me.options.end : range.max;\n me.setWindow(start, end, {animation: false});\n }\n else {\n me.fit({animation: false});\n }\n }\n });\n\n // apply options\n if (options) {\n this.setOptions(options);\n }\n\n // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS!\n if (groups) {\n this.setGroups(groups);\n }\n\n // create itemset\n if (items) {\n this.setItems(items);\n }\n\n // draw for the first time\n this._redraw();\n}\n\n// Extend the functionality from Core\nTimeline.prototype = new Core();\n\n/**\n * Load a configurator\n * @return {Object}\n * @private\n */\nTimeline.prototype._createConfigurator = function () {\n return new Configurator(this, this.dom.container, configureOptions);\n};\n\n/**\n * Force a redraw. The size of all items will be recalculated.\n * Can be useful to manually redraw when option autoResize=false and the window\n * has been resized, or when the items CSS has been changed.\n *\n * Note: this function will be overridden on construction with a trottled version\n */\nTimeline.prototype.redraw = function() {\n this.itemSet && this.itemSet.markDirty({refreshItems: true});\n this._redraw();\n};\n\nTimeline.prototype.setOptions = function (options) {\n // validate options\n let errorFound = Validator.validate(options, allOptions);\n\n if (errorFound === true) {\n console.log('%cErrors have been found in the supplied options object.', printStyle);\n }\n Core.prototype.setOptions.call(this, options);\n\n if ('type' in options) {\n if (options.type !== this.options.type) {\n this.options.type = options.type;\n\n // force recreation of all items\n var itemsData = this.itemsData;\n if (itemsData) {\n var selection = this.getSelection();\n this.setItems(null); // remove all\n this.setItems(itemsData); // add all\n this.setSelection(selection); // restore selection\n }\n }\n }\n};\n\n/**\n * Set items\n * @param {vis.DataSet | Array | null} items\n */\nTimeline.prototype.setItems = function(items) {\n // convert to type DataSet when needed\n var newDataSet;\n if (!items) {\n newDataSet = null;\n }\n else if (items instanceof DataSet || items instanceof DataView) {\n newDataSet = items;\n }\n else {\n // turn an array into a dataset\n newDataSet = new DataSet(items, {\n type: {\n start: 'Date',\n end: 'Date'\n }\n });\n }\n\n // set items\n this.itemsData = newDataSet;\n this.itemSet && this.itemSet.setItems(newDataSet);\n};\n\n/**\n * Set groups\n * @param {vis.DataSet | Array} groups\n */\nTimeline.prototype.setGroups = function(groups) {\n // convert to type DataSet when needed\n var newDataSet;\n if (!groups) {\n newDataSet = null;\n }\n else {\n var filter = function(group) {\n return group.visible !== false;\n }\n if (groups instanceof DataSet || groups instanceof DataView) {\n newDataSet = new DataView(groups,{filter: filter});\n }\n else {\n // turn an array into a dataset\n newDataSet = new DataSet(groups.filter(filter));\n }\n }\n\n\n this.groupsData = newDataSet;\n this.itemSet.setGroups(newDataSet);\n};\n\n/**\n * Set both items and groups in one go\n * @param {{items: Array | vis.DataSet, groups: Array | vis.DataSet}} data\n */\nTimeline.prototype.setData = function (data) {\n if (data && data.groups) {\n this.setGroups(data.groups);\n }\n\n if (data && data.items) {\n this.setItems(data.items);\n }\n};\n\n/**\n * Set selected items by their id. Replaces the current selection\n * Unknown id's are silently ignored.\n * @param {string[] | string} [ids] An array with zero or more id's of the items to be\n * selected. If ids is an empty array, all items will be\n * unselected.\n * @param {Object} [options] Available options:\n * `focus: boolean`\n * If true, focus will be set to the selected item(s)\n * `animation: boolean | {duration: number, easingFunction: string}`\n * If true (default), the range is animated\n * smoothly to the new window. An object can be\n * provided to specify duration and easing function.\n * Default duration is 500 ms, and default easing\n * function is 'easeInOutQuad'.\n * Only applicable when option focus is true.\n */\nTimeline.prototype.setSelection = function(ids, options) {\n this.itemSet && this.itemSet.setSelection(ids);\n\n if (options && options.focus) {\n this.focus(ids, options);\n }\n};\n\n/**\n * Get the selected items by their id\n * @return {Array} ids The ids of the selected items\n */\nTimeline.prototype.getSelection = function() {\n return this.itemSet && this.itemSet.getSelection() || [];\n};\n\n/**\n * Adjust the visible window such that the selected item (or multiple items)\n * are centered on screen.\n * @param {String | String[]} id An item id or array with item ids\n * @param {Object} [options] Available options:\n * `animation: boolean | {duration: number, easingFunction: string}`\n * If true (default), the range is animated\n * smoothly to the new window. An object can be\n * provided to specify duration and easing function.\n * Default duration is 500 ms, and default easing\n * function is 'easeInOutQuad'.\n */\nTimeline.prototype.focus = function(id, options) {\n if (!this.itemsData || id == undefined) return;\n\n var ids = Array.isArray(id) ? id : [id];\n\n // get the specified item(s)\n var itemsData = this.itemsData.getDataSet().get(ids, {\n type: {\n start: 'Date',\n end: 'Date'\n }\n });\n\n // calculate minimum start and maximum end of specified items\n var start = null;\n var end = null;\n itemsData.forEach(function (itemData) {\n var s = itemData.start.valueOf();\n var e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf();\n\n if (start === null || s < start) {\n start = s;\n }\n\n if (end === null || e > end) {\n end = e;\n }\n });\n\n if (start !== null && end !== null) {\n // calculate the new middle and interval for the window\n var middle = (start + end) / 2;\n var interval = Math.max((this.range.end - this.range.start), (end - start) * 1.1);\n\n var animation = (options && options.animation !== undefined) ? options.animation : true;\n this.range.setRange(middle - interval / 2, middle + interval / 2, animation);\n }\n};\n\n/**\n * Set Timeline window such that it fits all items\n * @param {Object} [options] Available options:\n * `animation: boolean | {duration: number, easingFunction: string}`\n * If true (default), the range is animated\n * smoothly to the new window. An object can be\n * provided to specify duration and easing function.\n * Default duration is 500 ms, and default easing\n * function is 'easeInOutQuad'.\n */\nTimeline.prototype.fit = function (options) {\n var animation = (options && options.animation !== undefined) ? options.animation : true;\n var range;\n\n var dataset = this.itemsData && this.itemsData.getDataSet();\n if (dataset.length === 1 && dataset.get()[0].end === undefined) {\n // a single item -> don't fit, just show a range around the item from -4 to +3 days\n range = this.getDataRange();\n this.moveTo(range.min.valueOf(), {animation});\n }\n else {\n // exactly fit the items (plus a small margin)\n range = this.getItemRange();\n this.range.setRange(range.min, range.max, animation);\n }\n};\n\n/**\n * Determine the range of the items, taking into account their actual width\n * and a margin of 10 pixels on both sides.\n * @return {{min: Date | null, max: Date | null}}\n */\nTimeline.prototype.getItemRange = function () {\n // get a rough approximation for the range based on the items start and end dates\n var range = this.getDataRange();\n var min = range.min !== null ? range.min.valueOf() : null;\n var max = range.max !== null ? range.max.valueOf() : null;\n var minItem = null;\n var maxItem = null;\n\n if (min != null && max != null) {\n var interval = (max - min); // ms\n if (interval <= 0) {\n interval = 10;\n }\n var factor = interval / this.props.center.width;\n\n function getStart(item) {\n return util.convert(item.data.start, 'Date').valueOf()\n }\n\n function getEnd(item) {\n var end = item.data.end != undefined ? item.data.end : item.data.start;\n return util.convert(end, 'Date').valueOf();\n }\n\n // calculate the date of the left side and right side of the items given\n util.forEach(this.itemSet.items, function (item) {\n if (item.groupShowing) {\n item.show();\n item.repositionX();\n }\n\n var start = getStart(item);\n var end = getEnd(item);\n\n if (this.options.rtl) {\n var startSide = start - (item.getWidthRight() + 10) * factor;\n var endSide = end + (item.getWidthLeft() + 10) * factor;\n } else {\n var startSide = start - (item.getWidthLeft() + 10) * factor;\n var endSide = end + (item.getWidthRight() + 10) * factor;\n }\n\n\n if (startSide < min) {\n min = startSide;\n minItem = item;\n }\n if (endSide > max) {\n max = endSide;\n maxItem = item;\n }\n }.bind(this));\n\n if (minItem && maxItem) {\n var lhs = minItem.getWidthLeft() + 10;\n var rhs = maxItem.getWidthRight() + 10;\n var delta = this.props.center.width - lhs - rhs; // px\n\n if (delta > 0) {\n if (this.options.rtl) {\n min = getStart(minItem) - rhs * interval / delta; // ms\n max = getEnd(maxItem) + lhs * interval / delta; // ms\n } else {\n min = getStart(minItem) - lhs * interval / delta; // ms\n max = getEnd(maxItem) + rhs * interval / delta; // ms\n }\n }\n }\n }\n\n return {\n min: min != null ? new Date(min) : null,\n max: max != null ? new Date(max) : null\n }\n};\n\n/**\n * Calculate the data range of the items start and end dates\n * @returns {{min: Date | null, max: Date | null}}\n */\nTimeline.prototype.getDataRange = function() {\n var min = null;\n var max = null;\n\n var dataset = this.itemsData && this.itemsData.getDataSet();\n if (dataset) {\n dataset.forEach(function (item) {\n var start = util.convert(item.start, 'Date').valueOf();\n var end = util.convert(item.end != undefined ? item.end : item.start, 'Date').valueOf();\n if (min === null || start < min) {\n min = start;\n }\n if (max === null || end > max) {\n max = end;\n }\n });\n }\n\n return {\n min: min != null ? new Date(min) : null,\n max: max != null ? new Date(max) : null\n }\n};\n\n/**\n * Generate Timeline related information from an event\n * @param {Event} event\n * @return {Object} An object with related information, like on which area\n * The event happened, whether clicked on an item, etc.\n */\nTimeline.prototype.getEventProperties = function (event) {\n var clientX = event.center ? event.center.x : event.clientX;\n var clientY = event.center ? event.center.y : event.clientY;\n if (this.options.rtl) {\n var x = util.getAbsoluteRight(this.dom.centerContainer) - clientX;\n } else {\n var x = clientX - util.getAbsoluteLeft(this.dom.centerContainer);\n }\n var y = clientY - util.getAbsoluteTop(this.dom.centerContainer);\n\n var item = this.itemSet.itemFromTarget(event);\n var group = this.itemSet.groupFromTarget(event);\n var customTime = CustomTime.customTimeFromTarget(event);\n\n var snap = this.itemSet.options.snap || null;\n var scale = this.body.util.getScale();\n var step = this.body.util.getStep();\n var time = this._toTime(x);\n var snappedTime = snap ? snap(time, scale, step) : time;\n\n var element = util.getTarget(event);\n var what = null;\n if (item != null) {what = 'item';}\n else if (customTime != null) {what = 'custom-time';}\n else if (util.hasParent(element, this.timeAxis.dom.foreground)) {what = 'axis';}\n else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) {what = 'axis';}\n else if (util.hasParent(element, this.itemSet.dom.labelSet)) {what = 'group-label';}\n else if (util.hasParent(element, this.currentTime.bar)) {what = 'current-time';}\n else if (util.hasParent(element, this.dom.center)) {what = 'background';}\n\n return {\n event: event,\n item: item ? item.id : null,\n group: group ? group.groupId : null,\n what: what,\n pageX: event.srcEvent ? event.srcEvent.pageX : event.pageX,\n pageY: event.srcEvent ? event.srcEvent.pageY : event.pageY,\n x: x,\n y: y,\n time: time,\n snappedTime: snappedTime\n }\n};\n\nmodule.exports = Timeline;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/Timeline.js","var util = require('../util');\n\nimport ColorPicker from './ColorPicker'\n\n/**\n * The way this works is for all properties of this.possible options, you can supply the property name in any form to list the options.\n * Boolean options are recognised as Boolean\n * Number options should be written as array: [default value, min value, max value, stepsize]\n * Colors should be written as array: ['color', '#ffffff']\n * Strings with should be written as array: [option1, option2, option3, ..]\n *\n * The options are matched with their counterparts in each of the modules and the values used in the configuration are\n *\n * @param parentModule | the location where parentModule.setOptions() can be called\n * @param defaultContainer | the default container of the module\n * @param configureOptions | the fully configured and predefined options set found in allOptions.js\n * @param pixelRatio | canvas pixel ratio\n */\nclass Configurator {\n constructor(parentModule, defaultContainer, configureOptions, pixelRatio = 1) {\n this.parent = parentModule;\n this.changedOptions = [];\n this.container = defaultContainer;\n this.allowCreation = false;\n\n this.options = {};\n this.initialized = false;\n this.popupCounter = 0;\n this.defaultOptions = {\n enabled: false,\n filter: true,\n container: undefined,\n showButton: true\n };\n util.extend(this.options, this.defaultOptions);\n\n this.configureOptions = configureOptions;\n this.moduleOptions = {};\n this.domElements = [];\n this.popupDiv = {};\n this.popupLimit = 5;\n this.popupHistory = {};\n this.colorPicker = new ColorPicker(pixelRatio);\n this.wrapper = undefined;\n }\n\n\n /**\n * refresh all options.\n * Because all modules parse their options by themselves, we just use their options. We copy them here.\n *\n * @param options\n */\n setOptions(options) {\n if (options !== undefined) {\n // reset the popup history because the indices may have been changed.\n this.popupHistory = {};\n this._removePopup();\n\n let enabled = true;\n if (typeof options === 'string') {\n this.options.filter = options;\n }\n else if (options instanceof Array) {\n this.options.filter = options.join();\n }\n else if (typeof options === 'object') {\n if (options.container !== undefined) {\n this.options.container = options.container;\n }\n if (options.filter !== undefined) {\n this.options.filter = options.filter;\n }\n if (options.showButton !== undefined) {\n this.options.showButton = options.showButton;\n }\n if (options.enabled !== undefined) {\n enabled = options.enabled;\n }\n }\n else if (typeof options === 'boolean') {\n this.options.filter = true;\n enabled = options;\n }\n else if (typeof options === 'function') {\n this.options.filter = options;\n enabled = true;\n }\n if (this.options.filter === false) {\n enabled = false;\n }\n\n this.options.enabled = enabled;\n }\n this._clean();\n }\n\n\n setModuleOptions(moduleOptions) {\n this.moduleOptions = moduleOptions;\n if (this.options.enabled === true) {\n this._clean();\n if (this.options.container !== undefined) {\n this.container = this.options.container;\n }\n this._create();\n }\n }\n\n /**\n * Create all DOM elements\n * @private\n */\n _create() {\n this._clean();\n this.changedOptions = [];\n\n let filter = this.options.filter;\n let counter = 0;\n let show = false;\n for (let option in this.configureOptions) {\n if (this.configureOptions.hasOwnProperty(option)) {\n this.allowCreation = false;\n show = false;\n if (typeof filter === 'function') {\n show = filter(option,[]);\n show = show || this._handleObject(this.configureOptions[option], [option], true);\n }\n else if (filter === true || filter.indexOf(option) !== -1) {\n show = true;\n }\n\n if (show !== false) {\n this.allowCreation = true;\n\n // linebreak between categories\n if (counter > 0) {\n this._makeItem([]);\n }\n // a header for the category\n this._makeHeader(option);\n\n // get the sub options\n this._handleObject(this.configureOptions[option], [option]);\n }\n counter++;\n }\n }\n\n if (this.options.showButton === true) {\n let generateButton = document.createElement('div');\n generateButton.className = 'vis-configuration vis-config-button';\n generateButton.innerHTML = 'generate options';\n generateButton.onclick = () => {this._printOptions();};\n generateButton.onmouseover = () => {generateButton.className = 'vis-configuration vis-config-button hover';};\n generateButton.onmouseout = () => {generateButton.className = 'vis-configuration vis-config-button';};\n\n this.optionsContainer = document.createElement('div');\n this.optionsContainer.className = 'vis-configuration vis-config-option-container';\n\n this.domElements.push(this.optionsContainer);\n this.domElements.push(generateButton);\n }\n\n this._push();\n //~ this.colorPicker.insertTo(this.container);\n }\n\n\n /**\n * draw all DOM elements on the screen\n * @private\n */\n _push() {\n this.wrapper = document.createElement('div');\n this.wrapper.className = 'vis-configuration-wrapper';\n this.container.appendChild(this.wrapper);\n for (var i = 0; i < this.domElements.length; i++) {\n this.wrapper.appendChild(this.domElements[i]);\n }\n\n this._showPopupIfNeeded()\n }\n\n\n /**\n * delete all DOM elements\n * @private\n */\n _clean() {\n for (var i = 0; i < this.domElements.length; i++) {\n this.wrapper.removeChild(this.domElements[i]);\n }\n\n if (this.wrapper !== undefined) {\n this.container.removeChild(this.wrapper);\n this.wrapper = undefined;\n }\n this.domElements = [];\n\n this._removePopup();\n }\n\n\n /**\n * get the value from the actualOptions if it exists\n * @param {array} path | where to look for the actual option\n * @returns {*}\n * @private\n */\n _getValue(path) {\n let base = this.moduleOptions;\n for (let i = 0; i < path.length; i++) {\n if (base[path[i]] !== undefined) {\n base = base[path[i]];\n }\n else {\n base = undefined;\n break;\n }\n }\n return base;\n }\n\n\n /**\n * all option elements are wrapped in an item\n * @param path\n * @param domElements\n * @private\n */\n _makeItem(path, ...domElements) {\n if (this.allowCreation === true) {\n let item = document.createElement('div');\n item.className = 'vis-configuration vis-config-item vis-config-s' + path.length;\n domElements.forEach((element) => {\n item.appendChild(element);\n });\n this.domElements.push(item);\n return this.domElements.length;\n }\n return 0;\n }\n\n\n /**\n * header for major subjects\n * @param name\n * @private\n */\n _makeHeader(name) {\n let div = document.createElement('div');\n div.className = 'vis-configuration vis-config-header';\n div.innerHTML = name;\n this._makeItem([],div);\n }\n\n\n /**\n * make a label, if it is an object label, it gets different styling.\n * @param name\n * @param path\n * @param objectLabel\n * @returns {HTMLElement}\n * @private\n */\n _makeLabel(name, path, objectLabel = false) {\n let div = document.createElement('div');\n div.className = 'vis-configuration vis-config-label vis-config-s' + path.length;\n if (objectLabel === true) {\n div.innerHTML = '' + name + ':';\n }\n else {\n div.innerHTML = name + ':';\n }\n return div;\n }\n\n\n /**\n * make a dropdown list for multiple possible string optoins\n * @param arr\n * @param value\n * @param path\n * @private\n */\n _makeDropdown(arr, value, path) {\n let select = document.createElement('select');\n select.className = 'vis-configuration vis-config-select';\n let selectedValue = 0;\n if (value !== undefined) {\n if (arr.indexOf(value) !== -1) {\n selectedValue = arr.indexOf(value);\n }\n }\n\n for (let i = 0; i < arr.length; i++) {\n let option = document.createElement('option');\n option.value = arr[i];\n if (i === selectedValue) {\n option.selected = 'selected';\n }\n option.innerHTML = arr[i];\n select.appendChild(option);\n }\n\n let me = this;\n select.onchange = function () {me._update(this.value, path);};\n\n let label = this._makeLabel(path[path.length-1], path);\n this._makeItem(path, label, select);\n }\n\n\n /**\n * make a range object for numeric options\n * @param arr\n * @param value\n * @param path\n * @private\n */\n _makeRange(arr, value, path) {\n let defaultValue = arr[0];\n let min = arr[1];\n let max = arr[2];\n let step = arr[3];\n let range = document.createElement('input');\n range.className = 'vis-configuration vis-config-range';\n try {\n range.type = 'range'; // not supported on IE9\n range.min = min;\n range.max = max;\n }\n catch (err) {}\n range.step = step;\n\n // set up the popup settings in case they are needed.\n let popupString = '';\n let popupValue = 0;\n\n if (value !== undefined) {\n let factor = 1.20;\n if (value < 0 && value * factor < min) {\n range.min = Math.ceil(value * factor);\n popupValue = range.min;\n popupString = 'range increased';\n }\n else if (value / factor < min) {\n range.min = Math.ceil(value / factor);\n popupValue = range.min;\n popupString = 'range increased';\n }\n if (value * factor > max && max !== 1) {\n range.max = Math.ceil(value * factor);\n popupValue = range.max;\n popupString = 'range increased';\n }\n range.value = value;\n }\n else {\n range.value = defaultValue;\n }\n\n let input = document.createElement('input');\n input.className = 'vis-configuration vis-config-rangeinput';\n input.value = range.value;\n\n var me = this;\n range.onchange = function () {input.value = this.value; me._update(Number(this.value), path);};\n range.oninput = function () {input.value = this.value; };\n\n let label = this._makeLabel(path[path.length-1], path);\n let itemIndex = this._makeItem(path, label, range, input);\n\n // if a popup is needed AND it has not been shown for this value, show it.\n if (popupString !== '' && this.popupHistory[itemIndex] !== popupValue) {\n this.popupHistory[itemIndex] = popupValue;\n this._setupPopup(popupString, itemIndex);\n }\n\n }\n\n\n /**\n * prepare the popup\n * @param string\n * @param index\n * @private\n */\n _setupPopup(string, index) {\n if (this.initialized === true && this.allowCreation === true && this.popupCounter < this.popupLimit) {\n let div = document.createElement(\"div\");\n div.id = \"vis-configuration-popup\";\n div.className = \"vis-configuration-popup\";\n div.innerHTML = string;\n div.onclick = () => {this._removePopup()};\n this.popupCounter += 1;\n this.popupDiv = {html:div, index:index};\n }\n }\n\n\n /**\n * remove the popup from the dom\n * @private\n */\n _removePopup() {\n if (this.popupDiv.html !== undefined) {\n this.popupDiv.html.parentNode.removeChild(this.popupDiv.html);\n clearTimeout(this.popupDiv.hideTimeout);\n clearTimeout(this.popupDiv.deleteTimeout);\n this.popupDiv = {};\n }\n }\n\n\n /**\n * Show the popup if it is needed.\n * @private\n */\n _showPopupIfNeeded() {\n if (this.popupDiv.html !== undefined) {\n let correspondingElement = this.domElements[this.popupDiv.index];\n let rect = correspondingElement.getBoundingClientRect();\n this.popupDiv.html.style.left = rect.left + \"px\";\n this.popupDiv.html.style.top = rect.top - 30 + \"px\"; // 30 is the height;\n document.body.appendChild(this.popupDiv.html)\n this.popupDiv.hideTimeout = setTimeout(() => {\n this.popupDiv.html.style.opacity = 0;\n },1500);\n this.popupDiv.deleteTimeout = setTimeout(() => {\n this._removePopup();\n },1800)\n }\n }\n\n /**\n * make a checkbox for boolean options.\n * @param defaultValue\n * @param value\n * @param path\n * @private\n */\n _makeCheckbox(defaultValue, value, path) {\n var checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.className = 'vis-configuration vis-config-checkbox';\n checkbox.checked = defaultValue;\n if (value !== undefined) {\n checkbox.checked = value;\n if (value !== defaultValue) {\n if (typeof defaultValue === 'object') {\n if (value !== defaultValue.enabled) {\n this.changedOptions.push({path:path, value:value});\n }\n }\n else {\n this.changedOptions.push({path:path, value:value});\n }\n }\n }\n\n let me = this;\n checkbox.onchange = function() {me._update(this.checked, path)};\n\n let label = this._makeLabel(path[path.length-1], path);\n this._makeItem(path, label, checkbox);\n }\n\n /**\n * make a text input field for string options.\n * @param defaultValue\n * @param value\n * @param path\n * @private\n */\n _makeTextInput(defaultValue, value, path) {\n var checkbox = document.createElement('input');\n checkbox.type = 'text';\n checkbox.className = 'vis-configuration vis-config-text';\n checkbox.value = value;\n if (value !== defaultValue) {\n this.changedOptions.push({path:path, value:value});\n }\n\n let me = this;\n checkbox.onchange = function() {me._update(this.value, path)};\n\n let label = this._makeLabel(path[path.length-1], path);\n this._makeItem(path, label, checkbox);\n }\n\n\n /**\n * make a color field with a color picker for color fields\n * @param arr\n * @param value\n * @param path\n * @private\n */\n _makeColorField(arr, value, path) {\n let defaultColor = arr[1];\n let div = document.createElement('div');\n value = value === undefined ? defaultColor : value;\n\n if (value !== 'none') {\n div.className = 'vis-configuration vis-config-colorBlock';\n div.style.backgroundColor = value;\n }\n else {\n div.className = 'vis-configuration vis-config-colorBlock none';\n }\n\n value = value === undefined ? defaultColor : value;\n div.onclick = () => {\n this._showColorPicker(value,div,path);\n };\n\n let label = this._makeLabel(path[path.length-1], path);\n this._makeItem(path,label, div);\n }\n\n\n /**\n * used by the color buttons to call the color picker.\n * @param event\n * @param value\n * @param div\n * @param path\n * @private\n */\n _showColorPicker(value, div, path) {\n // clear the callback from this div\n div.onclick = function() {};\n\n this.colorPicker.insertTo(div);\n this.colorPicker.show();\n\n this.colorPicker.setColor(value);\n this.colorPicker.setUpdateCallback((color) => {\n let colorString = 'rgba(' + color.r + ',' + color.g + ',' + color.b + ',' + color.a + ')';\n div.style.backgroundColor = colorString;\n this._update(colorString,path);\n });\n\n // on close of the colorpicker, restore the callback.\n this.colorPicker.setCloseCallback(() => {\n div.onclick = () => {\n this._showColorPicker(value,div,path);\n };\n });\n }\n\n\n /**\n * parse an object and draw the correct items\n * @param obj\n * @param path\n * @private\n */\n _handleObject(obj, path = [], checkOnly = false) {\n let show = false;\n let filter = this.options.filter;\n let visibleInSet = false;\n for (let subObj in obj) {\n if (obj.hasOwnProperty(subObj)) {\n show = true;\n let item = obj[subObj];\n let newPath = util.copyAndExtendArray(path, subObj);\n if (typeof filter === 'function') {\n show = filter(subObj,path);\n\n // if needed we must go deeper into the object.\n if (show === false) {\n if (!(item instanceof Array) && typeof item !== 'string' && typeof item !== 'boolean' && item instanceof Object) {\n this.allowCreation = false;\n show = this._handleObject(item, newPath, true);\n this.allowCreation = checkOnly === false;\n }\n }\n }\n\n if (show !== false) {\n visibleInSet = true;\n let value = this._getValue(newPath);\n\n if (item instanceof Array) {\n this._handleArray(item, value, newPath);\n }\n else if (typeof item === 'string') {\n this._makeTextInput(item, value, newPath);\n }\n else if (typeof item === 'boolean') {\n this._makeCheckbox(item, value, newPath);\n }\n else if (item instanceof Object) {\n // collapse the physics options that are not enabled\n let draw = true;\n if (path.indexOf('physics') !== -1) {\n if (this.moduleOptions.physics.solver !== subObj) {\n draw = false;\n }\n }\n\n if (draw === true) {\n // initially collapse options with an disabled enabled option.\n if (item.enabled !== undefined) {\n let enabledPath = util.copyAndExtendArray(newPath, 'enabled');\n let enabledValue = this._getValue(enabledPath);\n if (enabledValue === true) {\n let label = this._makeLabel(subObj, newPath, true);\n this._makeItem(newPath, label);\n visibleInSet = this._handleObject(item, newPath) || visibleInSet;\n }\n else {\n this._makeCheckbox(item, enabledValue, newPath);\n }\n }\n else {\n let label = this._makeLabel(subObj, newPath, true);\n this._makeItem(newPath, label);\n visibleInSet = this._handleObject(item, newPath) || visibleInSet;\n }\n }\n }\n else {\n console.error('dont know how to handle', item, subObj, newPath);\n }\n }\n }\n }\n return visibleInSet;\n }\n\n\n /**\n * handle the array type of option\n * @param optionName\n * @param arr\n * @param value\n * @param path\n * @private\n */\n _handleArray(arr, value, path) {\n if (typeof arr[0] === 'string' && arr[0] === 'color') {\n this._makeColorField(arr, value, path);\n if (arr[1] !== value) {this.changedOptions.push({path:path, value:value});}\n }\n else if (typeof arr[0] === 'string') {\n this._makeDropdown(arr, value, path);\n if (arr[0] !== value) {this.changedOptions.push({path:path, value:value});}\n }\n else if (typeof arr[0] === 'number') {\n this._makeRange(arr, value, path);\n if (arr[0] !== value) {this.changedOptions.push({path:path, value:Number(value)});}\n }\n }\n\n\n\n /**\n * called to update the network with the new settings.\n * @param value\n * @param path\n * @private\n */\n _update(value, path) {\n let options = this._constructOptions(value,path);\n\n if (this.parent.body && this.parent.body.emitter && this.parent.body.emitter.emit) {\n this.parent.body.emitter.emit(\"configChange\", options);\n }\n this.initialized = true;\n this.parent.setOptions(options);\n }\n\n _constructOptions(value, path, optionsObj = {}) {\n let pointer = optionsObj;\n\n // when dropdown boxes can be string or boolean, we typecast it into correct types\n value = value === 'true' ? true : value;\n value = value === 'false' ? false : value;\n\n for (let i = 0; i < path.length; i++) {\n if (path[i] !== 'global') {\n if (pointer[path[i]] === undefined) {\n pointer[path[i]] = {};\n }\n if (i !== path.length - 1) {\n pointer = pointer[path[i]];\n }\n else {\n pointer[path[i]] = value;\n }\n }\n }\n return optionsObj;\n }\n\n _printOptions() {\n let options = this.getOptions();\n this.optionsContainer.innerHTML = '
var options = ' + JSON.stringify(options, null, 2) + '
';\n }\n\n getOptions() {\n let options = {};\n for (var i = 0; i < this.changedOptions.length; i++) {\n this._constructOptions(this.changedOptions[i].value, this.changedOptions[i].path, options)\n }\n return options;\n }\n}\n\n\nexport default Configurator;\n\n\n// WEBPACK FOOTER //\n// ./lib/shared/Configurator.js","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/classCallCheck.js\n// module id = 115\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/createClass.js\n// module id = 116\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/define-property.js\n// module id = 117\n// module chunks = 0","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc){\n return $Object.defineProperty(it, key, desc);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/object/define-property.js\n// module id = 118\n// module chunks = 0","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.object.define-property.js\n// module id = 119\n// module chunks = 0","let Hammer = require('../module/hammer');\nlet hammerUtil = require('../hammerUtil');\nlet util = require('../util');\n\nclass ColorPicker {\n constructor(pixelRatio = 1) {\n this.pixelRatio = pixelRatio;\n this.generated = false;\n this.centerCoordinates = {x:289/2, y:289/2};\n this.r = 289 * 0.49;\n this.color = {r:255,g:255,b:255,a:1.0};\n this.hueCircle = undefined;\n this.initialColor = {r:255,g:255,b:255,a:1.0};\n this.previousColor= undefined;\n this.applied = false;\n\n // bound by\n this.updateCallback = () => {};\n this.closeCallback = () => {};\n\n // create all DOM elements\n this._create();\n }\n\n\n /**\n * this inserts the colorPicker into a div from the DOM\n * @param container\n */\n insertTo(container) {\n if (this.hammer !== undefined) {\n this.hammer.destroy();\n this.hammer = undefined;\n }\n this.container = container;\n this.container.appendChild(this.frame);\n this._bindHammer();\n\n this._setSize();\n }\n\n /**\n * the callback is executed on apply and save. Bind it to the application\n * @param callback\n */\n setUpdateCallback(callback) {\n if (typeof callback === 'function') {\n this.updateCallback = callback;\n }\n else {\n throw new Error(\"Function attempted to set as colorPicker update callback is not a function.\");\n }\n }\n\n /**\n * the callback is executed on apply and save. Bind it to the application\n * @param callback\n */\n setCloseCallback(callback) {\n if (typeof callback === 'function') {\n this.closeCallback = callback;\n }\n else {\n throw new Error(\"Function attempted to set as colorPicker closing callback is not a function.\");\n }\n }\n\n _isColorString(color) {\n var htmlColors = {black: '#000000',navy: '#000080',darkblue: '#00008B',mediumblue: '#0000CD',blue: '#0000FF',darkgreen: '#006400',green: '#008000',teal: '#008080',darkcyan: '#008B8B',deepskyblue: '#00BFFF',darkturquoise: '#00CED1',mediumspringgreen: '#00FA9A',lime: '#00FF00',springgreen: '#00FF7F',aqua: '#00FFFF',cyan: '#00FFFF',midnightblue: '#191970',dodgerblue: '#1E90FF',lightseagreen: '#20B2AA',forestgreen: '#228B22',seagreen: '#2E8B57',darkslategray: '#2F4F4F',limegreen: '#32CD32',mediumseagreen: '#3CB371',turquoise: '#40E0D0',royalblue: '#4169E1',steelblue: '#4682B4',darkslateblue: '#483D8B',mediumturquoise: '#48D1CC',indigo: '#4B0082',darkolivegreen: '#556B2F',cadetblue: '#5F9EA0',cornflowerblue: '#6495ED',mediumaquamarine: '#66CDAA',dimgray: '#696969',slateblue: '#6A5ACD',olivedrab: '#6B8E23',slategray: '#708090',lightslategray: '#778899',mediumslateblue: '#7B68EE',lawngreen: '#7CFC00',chartreuse: '#7FFF00',aquamarine: '#7FFFD4',maroon: '#800000',purple: '#800080',olive: '#808000',gray: '#808080',skyblue: '#87CEEB',lightskyblue: '#87CEFA',blueviolet: '#8A2BE2',darkred: '#8B0000',darkmagenta: '#8B008B',saddlebrown: '#8B4513',darkseagreen: '#8FBC8F',lightgreen: '#90EE90',mediumpurple: '#9370D8',darkviolet: '#9400D3',palegreen: '#98FB98',darkorchid: '#9932CC',yellowgreen: '#9ACD32',sienna: '#A0522D',brown: '#A52A2A',darkgray: '#A9A9A9',lightblue: '#ADD8E6',greenyellow: '#ADFF2F',paleturquoise: '#AFEEEE',lightsteelblue: '#B0C4DE',powderblue: '#B0E0E6',firebrick: '#B22222',darkgoldenrod: '#B8860B',mediumorchid: '#BA55D3',rosybrown: '#BC8F8F',darkkhaki: '#BDB76B',silver: '#C0C0C0',mediumvioletred: '#C71585',indianred: '#CD5C5C',peru: '#CD853F',chocolate: '#D2691E',tan: '#D2B48C',lightgrey: '#D3D3D3',palevioletred: '#D87093',thistle: '#D8BFD8',orchid: '#DA70D6',goldenrod: '#DAA520',crimson: '#DC143C',gainsboro: '#DCDCDC',plum: '#DDA0DD',burlywood: '#DEB887',lightcyan: '#E0FFFF',lavender: '#E6E6FA',darksalmon: '#E9967A',violet: '#EE82EE',palegoldenrod: '#EEE8AA',lightcoral: '#F08080',khaki: '#F0E68C',aliceblue: '#F0F8FF',honeydew: '#F0FFF0',azure: '#F0FFFF',sandybrown: '#F4A460',wheat: '#F5DEB3',beige: '#F5F5DC',whitesmoke: '#F5F5F5',mintcream: '#F5FFFA',ghostwhite: '#F8F8FF',salmon: '#FA8072',antiquewhite: '#FAEBD7',linen: '#FAF0E6',lightgoldenrodyellow: '#FAFAD2',oldlace: '#FDF5E6',red: '#FF0000',fuchsia: '#FF00FF',magenta: '#FF00FF',deeppink: '#FF1493',orangered: '#FF4500',tomato: '#FF6347',hotpink: '#FF69B4',coral: '#FF7F50',darkorange: '#FF8C00',lightsalmon: '#FFA07A',orange: '#FFA500',lightpink: '#FFB6C1',pink: '#FFC0CB',gold: '#FFD700',peachpuff: '#FFDAB9',navajowhite: '#FFDEAD',moccasin: '#FFE4B5',bisque: '#FFE4C4',mistyrose: '#FFE4E1',blanchedalmond: '#FFEBCD',papayawhip: '#FFEFD5',lavenderblush: '#FFF0F5',seashell: '#FFF5EE',cornsilk: '#FFF8DC',lemonchiffon: '#FFFACD',floralwhite: '#FFFAF0',snow: '#FFFAFA',yellow: '#FFFF00',lightyellow: '#FFFFE0',ivory: '#FFFFF0',white: '#FFFFFF'};\n if (typeof color === 'string') {\n return htmlColors[color];\n }\n }\n\n\n /**\n * Set the color of the colorPicker\n * Supported formats:\n * 'red' --> HTML color string\n * '#ffffff' --> hex string\n * 'rbg(255,255,255)' --> rgb string\n * 'rgba(255,255,255,1.0)' --> rgba string\n * {r:255,g:255,b:255} --> rgb object\n * {r:255,g:255,b:255,a:1.0} --> rgba object\n * @param color\n * @param setInitial\n */\n setColor(color, setInitial = true) {\n if (color === 'none') {\n return;\n }\n\n let rgba;\n\n // if a html color shorthand is used, convert to hex\n var htmlColor = this._isColorString(color);\n if (htmlColor !== undefined) {\n color = htmlColor;\n }\n\n // check format\n if (util.isString(color) === true) {\n if (util.isValidRGB(color) === true) {\n let rgbaArray = color.substr(4).substr(0, color.length - 5).split(',');\n rgba = {r:rgbaArray[0], g:rgbaArray[1], b:rgbaArray[2], a:1.0};\n }\n else if (util.isValidRGBA(color) === true) {\n let rgbaArray = color.substr(5).substr(0, color.length - 6).split(',');\n rgba = {r:rgbaArray[0], g:rgbaArray[1], b:rgbaArray[2], a:rgbaArray[3]};\n }\n else if (util.isValidHex(color) === true) {\n let rgbObj = util.hexToRGB(color);\n rgba = {r:rgbObj.r, g:rgbObj.g, b:rgbObj.b, a:1.0};\n }\n }\n else {\n if (color instanceof Object) {\n if (color.r !== undefined && color.g !== undefined && color.b !== undefined) {\n let alpha = color.a !== undefined ? color.a : '1.0';\n rgba = {r:color.r, g:color.g, b:color.b, a:alpha};\n }\n }\n }\n\n // set color\n if (rgba === undefined) {\n throw new Error(\"Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: \" + JSON.stringify(color));\n }\n else {\n this._setColor(rgba, setInitial);\n }\n }\n\n\n /**\n * this shows the color picker.\n * The hue circle is constructed once and stored.\n */\n show() {\n if (this.closeCallback !== undefined) {\n this.closeCallback();\n this.closeCallback = undefined;\n }\n\n this.applied = false;\n this.frame.style.display = 'block';\n this._generateHueCircle();\n }\n\n // ------------------------------------------ PRIVATE ----------------------------- //\n\n /**\n * Hide the picker. Is called by the cancel button.\n * Optional boolean to store the previous color for easy access later on.\n * @param storePrevious\n * @private\n */\n _hide(storePrevious = true) {\n // store the previous color for next time;\n if (storePrevious === true) {\n this.previousColor = util.extend({}, this.color);\n }\n\n if (this.applied === true) {\n this.updateCallback(this.initialColor);\n }\n\n this.frame.style.display = 'none';\n\n // call the closing callback, restoring the onclick method.\n // this is in a setTimeout because it will trigger the show again before the click is done.\n setTimeout(() => {\n if (this.closeCallback !== undefined) {\n this.closeCallback();\n this.closeCallback = undefined;\n }\n },0);\n }\n\n\n /**\n * bound to the save button. Saves and hides.\n * @private\n */\n _save() {\n this.updateCallback(this.color);\n this.applied = false;\n this._hide();\n }\n\n\n /**\n * Bound to apply button. Saves but does not close. Is undone by the cancel button.\n * @private\n */\n _apply() {\n this.applied = true;\n this.updateCallback(this.color);\n this._updatePicker(this.color);\n }\n\n\n /**\n * load the color from the previous session.\n * @private\n */\n _loadLast() {\n if (this.previousColor !== undefined) {\n this.setColor(this.previousColor, false);\n }\n else {\n alert(\"There is no last color to load...\");\n }\n }\n\n\n /**\n * set the color, place the picker\n * @param rgba\n * @param setInitial\n * @private\n */\n _setColor(rgba, setInitial = true) {\n // store the initial color\n if (setInitial === true) {\n this.initialColor = util.extend({}, rgba);\n }\n\n this.color = rgba;\n let hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b);\n\n let angleConvert = 2 * Math.PI;\n let radius = this.r * hsv.s;\n let x = this.centerCoordinates.x + radius * Math.sin(angleConvert * hsv.h);\n let y = this.centerCoordinates.y + radius * Math.cos(angleConvert * hsv.h);\n\n this.colorPickerSelector.style.left = x - 0.5 * this.colorPickerSelector.clientWidth + 'px';\n this.colorPickerSelector.style.top = y - 0.5 * this.colorPickerSelector.clientHeight + 'px';\n\n this._updatePicker(rgba);\n }\n\n\n /**\n * bound to opacity control\n * @param value\n * @private\n */\n _setOpacity(value) {\n this.color.a = value / 100;\n this._updatePicker(this.color);\n }\n\n\n /**\n * bound to brightness control\n * @param value\n * @private\n */\n _setBrightness(value) {\n let hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b);\n hsv.v = value / 100;\n let rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v);\n rgba['a'] = this.color.a;\n this.color = rgba;\n this._updatePicker();\n }\n\n\n /**\n * update the color picker. A black circle overlays the hue circle to mimic the brightness decreasing.\n * @param rgba\n * @private\n */\n _updatePicker(rgba = this.color) {\n let hsv = util.RGBToHSV(rgba.r, rgba.g, rgba.b);\n let ctx = this.colorPickerCanvas.getContext('2d');\n if (this.pixelRation === undefined) {\n this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1);\n }\n ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n\n // clear the canvas\n let w = this.colorPickerCanvas.clientWidth;\n let h = this.colorPickerCanvas.clientHeight;\n ctx.clearRect(0, 0, w, h);\n\n ctx.putImageData(this.hueCircle, 0,0);\n ctx.fillStyle = 'rgba(0,0,0,' + (1- hsv.v) + ')';\n ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r);\n ctx.fill();\n\n this.brightnessRange.value = 100 * hsv.v;\n this.opacityRange.value = 100 * rgba.a;\n\n this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')';\n this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')';\n }\n\n\n /**\n * used by create to set the size of the canvas.\n * @private\n */\n _setSize() {\n this.colorPickerCanvas.style.width = '100%';\n this.colorPickerCanvas.style.height = '100%';\n\n this.colorPickerCanvas.width = 289 * this.pixelRatio;\n this.colorPickerCanvas.height = 289 * this.pixelRatio;\n }\n\n\n /**\n * create all dom elements\n * TODO: cleanup, lots of similar dom elements\n * @private\n */\n _create() {\n this.frame = document.createElement('div');\n this.frame.className = 'vis-color-picker';\n\n this.colorPickerDiv = document.createElement('div');\n this.colorPickerSelector = document.createElement('div');\n this.colorPickerSelector.className = 'vis-selector';\n this.colorPickerDiv.appendChild(this.colorPickerSelector);\n\n this.colorPickerCanvas = document.createElement('canvas');\n this.colorPickerDiv.appendChild(this.colorPickerCanvas);\n\n if (!this.colorPickerCanvas.getContext) {\n let noCanvas = document.createElement( 'DIV' );\n noCanvas.style.color = 'red';\n noCanvas.style.fontWeight = 'bold' ;\n noCanvas.style.padding = '10px';\n noCanvas.innerHTML = 'Error: your browser does not support HTML canvas';\n this.colorPickerCanvas.appendChild(noCanvas);\n }\n else {\n let ctx = this.colorPickerCanvas.getContext(\"2d\");\n this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1);\n\n this.colorPickerCanvas.getContext(\"2d\").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n }\n\n this.colorPickerDiv.className = 'vis-color';\n\n this.opacityDiv = document.createElement('div');\n this.opacityDiv.className = 'vis-opacity';\n\n this.brightnessDiv = document.createElement('div');\n this.brightnessDiv.className = 'vis-brightness';\n\n this.arrowDiv = document.createElement('div');\n this.arrowDiv.className = 'vis-arrow';\n\n this.opacityRange = document.createElement('input');\n try {\n this.opacityRange.type = 'range'; // Not supported on IE9\n this.opacityRange.min = '0';\n this.opacityRange.max = '100';\n }\n catch (err) {}\n this.opacityRange.value = '100';\n this.opacityRange.className = 'vis-range';\n\n this.brightnessRange = document.createElement('input');\n try {\n this.brightnessRange.type = 'range'; // Not supported on IE9\n this.brightnessRange.min = '0';\n this.brightnessRange.max = '100';\n }\n catch (err) {}\n this.brightnessRange.value = '100';\n this.brightnessRange.className = 'vis-range';\n\n this.opacityDiv.appendChild(this.opacityRange);\n this.brightnessDiv.appendChild(this.brightnessRange);\n\n var me = this;\n this.opacityRange.onchange = function () {me._setOpacity(this.value);};\n this.opacityRange.oninput = function () {me._setOpacity(this.value);};\n this.brightnessRange.onchange = function () {me._setBrightness(this.value);};\n this.brightnessRange.oninput = function () {me._setBrightness(this.value);};\n\n this.brightnessLabel = document.createElement(\"div\");\n this.brightnessLabel.className = \"vis-label vis-brightness\";\n this.brightnessLabel.innerHTML = 'brightness:';\n\n this.opacityLabel = document.createElement(\"div\");\n this.opacityLabel.className = \"vis-label vis-opacity\";\n this.opacityLabel.innerHTML = 'opacity:';\n\n this.newColorDiv = document.createElement(\"div\");\n this.newColorDiv.className = \"vis-new-color\";\n this.newColorDiv.innerHTML = 'new';\n\n this.initialColorDiv = document.createElement(\"div\");\n this.initialColorDiv.className = \"vis-initial-color\";\n this.initialColorDiv.innerHTML = 'initial';\n\n this.cancelButton = document.createElement(\"div\");\n this.cancelButton.className = \"vis-button vis-cancel\";\n this.cancelButton.innerHTML = 'cancel';\n this.cancelButton.onclick = this._hide.bind(this, false);\n\n this.applyButton = document.createElement(\"div\");\n this.applyButton.className = \"vis-button vis-apply\";\n this.applyButton.innerHTML = 'apply';\n this.applyButton.onclick = this._apply.bind(this);\n\n this.saveButton = document.createElement(\"div\");\n this.saveButton.className = \"vis-button vis-save\";\n this.saveButton.innerHTML = 'save';\n this.saveButton.onclick = this._save.bind(this);\n\n this.loadButton = document.createElement(\"div\");\n this.loadButton.className = \"vis-button vis-load\";\n this.loadButton.innerHTML = 'load last';\n this.loadButton.onclick = this._loadLast.bind(this);\n\n this.frame.appendChild(this.colorPickerDiv);\n this.frame.appendChild(this.arrowDiv);\n this.frame.appendChild(this.brightnessLabel);\n this.frame.appendChild(this.brightnessDiv);\n this.frame.appendChild(this.opacityLabel);\n this.frame.appendChild(this.opacityDiv);\n this.frame.appendChild(this.newColorDiv);\n this.frame.appendChild(this.initialColorDiv);\n\n this.frame.appendChild(this.cancelButton);\n this.frame.appendChild(this.applyButton);\n this.frame.appendChild(this.saveButton);\n this.frame.appendChild(this.loadButton);\n }\n\n\n /**\n * bind hammer to the color picker\n * @private\n */\n _bindHammer() {\n this.drag = {};\n this.pinch = {};\n this.hammer = new Hammer(this.colorPickerCanvas);\n this.hammer.get('pinch').set({enable: true});\n\n hammerUtil.onTouch(this.hammer, (event) => {this._moveSelector(event)});\n this.hammer.on('tap', (event) => {this._moveSelector(event)});\n this.hammer.on('panstart', (event) => {this._moveSelector(event)});\n this.hammer.on('panmove', (event) => {this._moveSelector(event)});\n this.hammer.on('panend', (event) => {this._moveSelector(event)});\n }\n\n\n /**\n * generate the hue circle. This is relatively heavy (200ms) and is done only once on the first time it is shown.\n * @private\n */\n _generateHueCircle() {\n if (this.generated === false) {\n let ctx = this.colorPickerCanvas.getContext('2d');\n if (this.pixelRation === undefined) {\n this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1);\n }\n ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n\n // clear the canvas\n let w = this.colorPickerCanvas.clientWidth;\n let h = this.colorPickerCanvas.clientHeight;\n ctx.clearRect(0, 0, w, h);\n\n\n // draw hue circle\n let x, y, hue, sat;\n this.centerCoordinates = {x: w * 0.5, y: h * 0.5};\n this.r = 0.49 * w;\n let angleConvert = (2 * Math.PI) / 360;\n let hfac = 1 / 360;\n let sfac = 1 / this.r;\n let rgb;\n for (hue = 0; hue < 360; hue++) {\n for (sat = 0; sat < this.r; sat++) {\n x = this.centerCoordinates.x + sat * Math.sin(angleConvert * hue);\n y = this.centerCoordinates.y + sat * Math.cos(angleConvert * hue);\n rgb = util.HSVToRGB(hue * hfac, sat * sfac, 1);\n ctx.fillStyle = 'rgb(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ')';\n ctx.fillRect(x - 0.5, y - 0.5, 2, 2);\n }\n }\n ctx.strokeStyle = 'rgba(0,0,0,1)';\n ctx.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r);\n ctx.stroke();\n\n this.hueCircle = ctx.getImageData(0,0,w,h);\n }\n this.generated = true;\n }\n\n\n /**\n * move the selector. This is called by hammer functions.\n *\n * @param event\n * @private\n */\n _moveSelector(event) {\n let rect = this.colorPickerDiv.getBoundingClientRect();\n let left = event.center.x - rect.left;\n let top = event.center.y - rect.top;\n\n let centerY = 0.5 * this.colorPickerDiv.clientHeight;\n let centerX = 0.5 * this.colorPickerDiv.clientWidth;\n\n let x = left - centerX;\n let y = top - centerY;\n\n let angle = Math.atan2(x,y);\n let radius = 0.98 * Math.min(Math.sqrt(x * x + y * y), centerX);\n\n let newTop = Math.cos(angle) * radius + centerY;\n let newLeft = Math.sin(angle) * radius + centerX;\n\n this.colorPickerSelector.style.top = newTop - 0.5 * this.colorPickerSelector.clientHeight + 'px';\n this.colorPickerSelector.style.left = newLeft - 0.5 * this.colorPickerSelector.clientWidth + 'px';\n\n // set color\n let h = angle / (2 * Math.PI);\n h = h < 0 ? h + 1 : h;\n let s = radius / this.r;\n let hsv = util.RGBToHSV(this.color.r, this.color.g, this.color.b);\n hsv.h = h;\n hsv.s = s;\n let rgba = util.HSVToRGB(hsv.h, hsv.s, hsv.v);\n rgba['a'] = this.color.a;\n this.color = rgba;\n\n // update previews\n this.initialColorDiv.style.backgroundColor = 'rgba(' + this.initialColor.r + ',' + this.initialColor.g + ',' + this.initialColor.b + ',' + this.initialColor.a + ')';\n this.newColorDiv.style.backgroundColor = 'rgba(' + this.color.r + ',' + this.color.g + ',' + this.color.b + ',' + this.color.a + ')';\n }\n}\n\nexport default ColorPicker;\n\n\n// WEBPACK FOOTER //\n// ./lib/shared/ColorPicker.js","var Hammer = require('./module/hammer');\n\n/**\n * Register a touch event, taking place before a gesture\n * @param {Hammer} hammer A hammer instance\n * @param {function} callback Callback, called as callback(event)\n */\nexports.onTouch = function (hammer, callback) {\n callback.inputHandler = function (event) {\n if (event.isFirst) {\n callback(event);\n }\n };\n\n hammer.on('hammer.input', callback.inputHandler);\n};\n\n/**\n * Register a release event, taking place after a gesture\n * @param {Hammer} hammer A hammer instance\n * @param {function} callback Callback, called as callback(event)\n */\nexports.onRelease = function (hammer, callback) {\n callback.inputHandler = function (event) {\n if (event.isFinal) {\n callback(event);\n }\n };\n\n return hammer.on('hammer.input', callback.inputHandler);\n};\n\n\n/**\n * Unregister a touch event, taking place before a gesture\n * @param {Hammer} hammer A hammer instance\n * @param {function} callback Callback, called as callback(event)\n */\nexports.offTouch = function (hammer, callback) {\n hammer.off('hammer.input', callback.inputHandler);\n};\n\n/**\n * Unregister a release event, taking place before a gesture\n * @param {Hammer} hammer A hammer instance\n * @param {function} callback Callback, called as callback(event)\n */\nexports.offRelease = exports.offTouch;\n\n/**\n * Hack the PinchRecognizer such that it doesn't prevent default behavior\n * for vertical panning.\n *\n * Yeah ... this is quite a hack ... see https://github.com/hammerjs/hammer.js/issues/932\n *\n * @param {Hammer.Pinch} pinchRecognizer\n * @return {Hammer.Pinch} returns the pinchRecognizer\n */\nexports.disablePreventDefaultVertically = function (pinchRecognizer) {\n var TOUCH_ACTION_PAN_Y = 'pan-y';\n\n pinchRecognizer.getTouchAction = function() {\n // default method returns [TOUCH_ACTION_NONE]\n return [TOUCH_ACTION_PAN_Y];\n };\n\n return pinchRecognizer;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/hammerUtil.js","var util = require('../util');\n\nlet errorFound = false;\nlet allOptions;\nlet printStyle = 'background: #FFeeee; color: #dd0000';\n/**\n * Used to validate options.\n */\nclass Validator {\n constructor() {\n }\n\n /**\n * Main function to be called\n * @param options\n * @param subObject\n * @returns {boolean}\n */\n static validate(options, referenceOptions, subObject) {\n errorFound = false;\n allOptions = referenceOptions;\n let usedOptions = referenceOptions;\n if (subObject !== undefined) {\n usedOptions = referenceOptions[subObject];\n }\n Validator.parse(options, usedOptions, []);\n return errorFound;\n }\n\n\n /**\n * Will traverse an object recursively and check every value\n * @param options\n * @param referenceOptions\n * @param path\n */\n static parse(options, referenceOptions, path) {\n for (let option in options) {\n if (options.hasOwnProperty(option)) {\n Validator.check(option, options, referenceOptions, path);\n }\n }\n }\n\n\n /**\n * Check every value. If the value is an object, call the parse function on that object.\n * @param option\n * @param options\n * @param referenceOptions\n * @param path\n */\n static check(option, options, referenceOptions, path) {\n if (referenceOptions[option] === undefined && referenceOptions.__any__ === undefined) {\n Validator.getSuggestion(option, referenceOptions, path);\n }\n else if (referenceOptions[option] === undefined && referenceOptions.__any__ !== undefined) {\n // __any__ is a wildcard. Any value is accepted and will be further analysed by reference.\n if (Validator.getType(options[option]) === 'object' && referenceOptions['__any__'].__type__ !== undefined) {\n // if the any subgroup is not a predefined object int he configurator we do not look deeper into the object.\n Validator.checkFields(option, options, referenceOptions, '__any__', referenceOptions['__any__'].__type__, path);\n }\n else {\n Validator.checkFields(option, options, referenceOptions, '__any__', referenceOptions['__any__'], path);\n }\n }\n else {\n // Since all options in the reference are objects, we can check whether they are supposed to be object to look for the __type__ field.\n if (referenceOptions[option].__type__ !== undefined) {\n // if this should be an object, we check if the correct type has been supplied to account for shorthand options.\n Validator.checkFields(option, options, referenceOptions, option, referenceOptions[option].__type__, path);\n }\n else {\n Validator.checkFields(option, options, referenceOptions, option, referenceOptions[option], path);\n }\n }\n }\n\n /**\n *\n * @param {String} option | the option property\n * @param {Object} options | The supplied options object\n * @param {Object} referenceOptions | The reference options containing all options and their allowed formats\n * @param {String} referenceOption | Usually this is the same as option, except when handling an __any__ tag.\n * @param {String} refOptionType | This is the type object from the reference options\n * @param {Array} path | where in the object is the option\n */\n static checkFields(option, options, referenceOptions, referenceOption, refOptionObj, path) {\n let optionType = Validator.getType(options[option]);\n let refOptionType = refOptionObj[optionType];\n if (refOptionType !== undefined) {\n // if the type is correct, we check if it is supposed to be one of a few select values\n if (Validator.getType(refOptionType) === 'array') {\n if (refOptionType.indexOf(options[option]) === -1) {\n console.log('%cInvalid option detected in \"' + option + '\".' +\n ' Allowed values are:' + Validator.print(refOptionType) + ' not \"' + options[option] + '\". ' + Validator.printLocation(path, option), printStyle);\n errorFound = true;\n }\n else if (optionType === 'object' && referenceOption !== \"__any__\") {\n path = util.copyAndExtendArray(path, option);\n Validator.parse(options[option], referenceOptions[referenceOption], path);\n }\n }\n else if (optionType === 'object' && referenceOption !== \"__any__\") {\n path = util.copyAndExtendArray(path, option);\n Validator.parse(options[option], referenceOptions[referenceOption], path);\n }\n }\n else if (refOptionObj['any'] === undefined) {\n // type of the field is incorrect and the field cannot be any\n console.log('%cInvalid type received for \"' + option + '\". Expected: ' + Validator.print(Object.keys(refOptionObj)) + '. Received [' + optionType + '] \"' + options[option] + '\"' + Validator.printLocation(path, option), printStyle);\n errorFound = true;\n }\n }\n\n\n static getType(object) {\n var type = typeof object;\n\n if (type === 'object') {\n if (object === null) {\n return 'null';\n }\n if (object instanceof Boolean) {\n return 'boolean';\n }\n if (object instanceof Number) {\n return 'number';\n }\n if (object instanceof String) {\n return 'string';\n }\n if (Array.isArray(object)) {\n return 'array';\n }\n if (object instanceof Date) {\n return 'date';\n }\n if (object.nodeType !== undefined) {\n return 'dom';\n }\n if (object._isAMomentObject === true) {\n return 'moment';\n }\n return 'object';\n }\n else if (type === 'number') {\n return 'number';\n }\n else if (type === 'boolean') {\n return 'boolean';\n }\n else if (type === 'string') {\n return 'string';\n }\n else if (type === undefined) {\n return 'undefined';\n }\n return type;\n }\n\n static getSuggestion(option, options, path) {\n let localSearch = Validator.findInOptions(option,options,path,false);\n let globalSearch = Validator.findInOptions(option,allOptions,[],true);\n\n let localSearchThreshold = 8;\n let globalSearchThreshold = 4;\n\n if (localSearch.indexMatch !== undefined) {\n console.log('%cUnknown option detected: \"' + option + '\" in ' + Validator.printLocation(localSearch.path, option,'') + 'Perhaps it was incomplete? Did you mean: \"' + localSearch.indexMatch + '\"?\\n\\n', printStyle);\n }\n else if (globalSearch.distance <= globalSearchThreshold && localSearch.distance > globalSearch.distance) {\n console.log('%cUnknown option detected: \"' + option + '\" in ' + Validator.printLocation(localSearch.path, option,'') + 'Perhaps it was misplaced? Matching option found at: ' + Validator.printLocation(globalSearch.path, globalSearch.closestMatch,''), printStyle);\n }\n else if (localSearch.distance <= localSearchThreshold) {\n console.log('%cUnknown option detected: \"' + option + '\". Did you mean \"' + localSearch.closestMatch + '\"?' + Validator.printLocation(localSearch.path, option), printStyle);\n }\n else {\n console.log('%cUnknown option detected: \"' + option + '\". Did you mean one of these: ' + Validator.print(Object.keys(options)) + Validator.printLocation(path, option), printStyle);\n }\n\n errorFound = true;\n }\n\n /**\n * traverse the options in search for a match.\n * @param option\n * @param options\n * @param path\n * @param recursive\n * @returns {{closestMatch: string, path: Array, distance: number}}\n */\n static findInOptions(option, options, path, recursive = false) {\n let min = 1e9;\n let closestMatch = '';\n let closestMatchPath = [];\n let lowerCaseOption = option.toLowerCase();\n let indexMatch = undefined;\n for (let op in options) {\n let distance;\n if (options[op].__type__ !== undefined && recursive === true) {\n let result = Validator.findInOptions(option, options[op], util.copyAndExtendArray(path,op));\n if (min > result.distance) {\n closestMatch = result.closestMatch;\n closestMatchPath = result.path;\n min = result.distance;\n indexMatch = result.indexMatch;\n }\n }\n else {\n if (op.toLowerCase().indexOf(lowerCaseOption) !== -1) {\n indexMatch = op;\n }\n distance = Validator.levenshteinDistance(option, op);\n if (min > distance) {\n closestMatch = op;\n closestMatchPath = util.copyArray(path);\n min = distance;\n }\n }\n }\n return {closestMatch:closestMatch, path:closestMatchPath, distance:min, indexMatch: indexMatch};\n }\n\n static printLocation(path, option, prefix = 'Problem value found at: \\n') {\n let str = '\\n\\n' + prefix + 'options = {\\n';\n for (let i = 0; i < path.length; i++) {\n for (let j = 0; j < i + 1; j++) {\n str += ' ';\n }\n str += path[i] + ': {\\n'\n }\n for (let j = 0; j < path.length + 1; j++) {\n str += ' ';\n }\n str += option + '\\n';\n for (let i = 0; i < path.length + 1; i++) {\n for (let j = 0; j < path.length - i; j++) {\n str += ' ';\n }\n str += '}\\n'\n }\n return str + '\\n\\n';\n }\n\n static print(options) {\n return JSON.stringify(options).replace(/(\\\")|(\\[)|(\\])|(,\"__type__\")/g, \"\").replace(/(\\,)/g, ', ')\n }\n\n\n // Compute the edit distance between the two given strings\n // http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#JavaScript\n /*\n Copyright (c) 2011 Andrei Mackenzie\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n static levenshteinDistance(a, b) {\n if (a.length === 0) return b.length;\n if (b.length === 0) return a.length;\n\n var matrix = [];\n\n // increment along the first column of each row\n var i;\n for (i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n\n // increment each column in the first row\n var j;\n for (j = 0; j <= a.length; j++) {\n matrix[0][j] = j;\n }\n\n // Fill in the rest of the matrix\n for (i = 1; i <= b.length; i++) {\n for (j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) == a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution\n Math.min(matrix[i][j - 1] + 1, // insertion\n matrix[i - 1][j] + 1)); // deletion\n }\n }\n }\n\n return matrix[b.length][a.length];\n }\n\n;\n}\n\n\nexport default Validator;\nexport {printStyle}\n\n\n// WEBPACK FOOTER //\n// ./lib/shared/Validator.js","var util = require('../util');\nvar hammerUtil = require('../hammerUtil');\nvar moment = require('../module/moment');\nvar Component = require('./component/Component');\nvar DateUtil = require('./DateUtil');\n\n/**\n * @constructor Range\n * A Range controls a numeric range with a start and end value.\n * The Range adjusts the range based on mouse events or programmatic changes,\n * and triggers events when the range is changing or has been changed.\n * @param {{dom: Object, domProps: Object, emitter: Emitter}} body\n * @param {Object} [options] See description at Range.setOptions\n */\nfunction Range(body, options) {\n var now = moment().hours(0).minutes(0).seconds(0).milliseconds(0);\n var start = now.clone().add(-3, 'days').valueOf();\n var end = now.clone().add(-3, 'days').valueOf(); \n\n if(options === undefined) {\n this.start = start;\n this.end = end;\n } else {\n this.start = options.start || start\n this.end = options.end || end\n }\n\n this.rolling = false;\n\n this.body = body;\n this.deltaDifference = 0;\n this.scaleOffset = 0;\n this.startToFront = false;\n this.endToFront = true;\n\n // default options\n this.defaultOptions = {\n rtl: false,\n start: null,\n end: null,\n moment: moment,\n direction: 'horizontal', // 'horizontal' or 'vertical'\n moveable: true,\n zoomable: true,\n min: null,\n max: null,\n zoomMin: 10, // milliseconds\n zoomMax: 1000 * 60 * 60 * 24 * 365 * 10000 // milliseconds\n };\n this.options = util.extend({}, this.defaultOptions);\n this.props = {\n touch: {}\n };\n this.animationTimer = null;\n\n // drag listeners for dragging\n this.body.emitter.on('panstart', this._onDragStart.bind(this));\n this.body.emitter.on('panmove', this._onDrag.bind(this));\n this.body.emitter.on('panend', this._onDragEnd.bind(this));\n\n // mouse wheel for zooming\n this.body.emitter.on('mousewheel', this._onMouseWheel.bind(this));\n\n // pinch to zoom\n this.body.emitter.on('touch', this._onTouch.bind(this));\n this.body.emitter.on('pinch', this._onPinch.bind(this));\n\n // on click of rolling mode button\n this.body.dom.rollingModeBtn.addEventListener('click', this.startRolling.bind(this));\n\n this.setOptions(options);\n}\n\nRange.prototype = new Component();\n\n/**\n * Set options for the range controller\n * @param {Object} options Available options:\n * {Number | Date | String} start Start date for the range\n * {Number | Date | String} end End date for the range\n * {Number} min Minimum value for start\n * {Number} max Maximum value for end\n * {Number} zoomMin Set a minimum value for\n * (end - start).\n * {Number} zoomMax Set a maximum value for\n * (end - start).\n * {Boolean} moveable Enable moving of the range\n * by dragging. True by default\n * {Boolean} zoomable Enable zooming of the range\n * by pinching/scrolling. True by default\n */\nRange.prototype.setOptions = function (options) {\n if (options) {\n // copy the options that we know\n var fields = [\n 'animation', 'direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable',\n 'moment', 'activate', 'hiddenDates', 'zoomKey', 'rtl', 'showCurrentTime', 'rollMode', 'horizontalScroll'\n ];\n util.selectiveExtend(fields, this.options, options);\n\n if (options.rollingMode) {\n this.startRolling();\n }\n if ('start' in options || 'end' in options) {\n // apply a new range. both start and end are optional\n this.setRange(options.start, options.end);\n }\n }\n};\n\n/**\n * Test whether direction has a valid value\n * @param {String} direction 'horizontal' or 'vertical'\n */\nfunction validateDirection (direction) {\n if (direction != 'horizontal' && direction != 'vertical') {\n throw new TypeError('Unknown direction \"' + direction + '\". ' +\n 'Choose \"horizontal\" or \"vertical\".');\n }\n}\n\n/**\n * Start auto refreshing the current time bar\n */\nRange.prototype.startRolling = function() {\n var me = this;\n\n\n function update () {\n me.stopRolling();\n me.rolling = true;\n\n\n var interval = me.end - me.start;\n var t = util.convert(new Date(), 'Date').valueOf();\n\n var start = t - interval / 2;\n var end = t + interval / 2;\n var animation = (me.options && me.options.animation !== undefined) ? me.options.animation : true;\n\n me.setRange(start, end, false);\n\n // determine interval to refresh\n var scale = me.conversion(me.body.domProps.center.width).scale;\n var interval = 1 / scale / 10;\n if (interval < 30) interval = 30;\n if (interval > 1000) interval = 1000;\n\n me.body.dom.rollingModeBtn.style.visibility = \"hidden\";\n // start a renderTimer to adjust for the new time\n me.currentTimeTimer = setTimeout(update, interval);\n }\n\n update();\n};\n\n/**\n * Stop auto refreshing the current time bar\n */\nRange.prototype.stopRolling = function() {\n if (this.currentTimeTimer !== undefined) {\n clearTimeout(this.currentTimeTimer);\n this.rolling = false;\n this.body.dom.rollingModeBtn.style.visibility = \"visible\";\n }\n};\n\n/**\n * Set a new start and end range\n * @param {Date | Number | String} [start]\n * @param {Date | Number | String} [end]\n * @param {boolean | {duration: number, easingFunction: string}} [animation=false]\n * If true (default), the range is animated\n * smoothly to the new window. An object can be\n * provided to specify duration and easing function.\n * Default duration is 500 ms, and default easing\n * function is 'easeInOutQuad'.\n * @param {Boolean} [byUser=false]\n *\n */\nRange.prototype.setRange = function(start, end, animation, byUser, event) {\n if (byUser !== true) {\n byUser = false;\n }\n var finalStart = start != undefined ? util.convert(start, 'Date').valueOf() : null;\n var finalEnd = end != undefined ? util.convert(end, 'Date').valueOf() : null;\n this._cancelAnimation();\n\n if (animation) { // true or an Object\n var me = this;\n var initStart = this.start;\n var initEnd = this.end;\n var duration = (typeof animation === 'object' && 'duration' in animation) ? animation.duration : 500;\n var easingName = (typeof animation === 'object' && 'easingFunction' in animation) ? animation.easingFunction : 'easeInOutQuad';\n var easingFunction = util.easingFunctions[easingName];\n if (!easingFunction) {\n throw new Error('Unknown easing function ' + JSON.stringify(easingName) + '. ' +\n 'Choose from: ' + Object.keys(util.easingFunctions).join(', '));\n }\n\n var initTime = new Date().valueOf();\n var anyChanged = false;\n\n var next = function () {\n if (!me.props.touch.dragging) {\n var now = new Date().valueOf();\n var time = now - initTime;\n var ease = easingFunction(time / duration);\n var done = time > duration;\n var s = (done || finalStart === null) ? finalStart : initStart + (finalStart - initStart) * ease;\n var e = (done || finalEnd === null) ? finalEnd : initEnd + (finalEnd - initEnd) * ease;\n\n changed = me._applyRange(s, e);\n DateUtil.updateHiddenDates(me.options.moment, me.body, me.options.hiddenDates);\n anyChanged = anyChanged || changed;\n\n var params = {\n start: new Date(me.start), \n end: new Date(me.end), \n byUser:byUser,\n event: util.elementsCensor(event)\n }\n\n if (changed) {\n me.body.emitter.emit('rangechange', params);\n }\n\n if (done) {\n if (anyChanged) {\n me.body.emitter.emit('rangechanged', params);\n }\n }\n else {\n // animate with as high as possible frame rate, leave 20 ms in between\n // each to prevent the browser from blocking\n me.animationTimer = setTimeout(next, 20);\n }\n }\n };\n\n return next();\n }\n else {\n var changed = this._applyRange(finalStart, finalEnd);\n DateUtil.updateHiddenDates(this.options.moment, this.body, this.options.hiddenDates);\n if (changed) {\n var params = {\n start: new Date(this.start), \n end: new Date(this.end), \n byUser:byUser, \n event: util.elementsCensor(event)\n };\n this.body.emitter.emit('rangechange', params);\n this.body.emitter.emit('rangechanged', params);\n }\n }\n};\n\n/**\n * Stop an animation\n * @private\n */\nRange.prototype._cancelAnimation = function () {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = null;\n }\n};\n\n/**\n * Set a new start and end range. This method is the same as setRange, but\n * does not trigger a range change and range changed event, and it returns\n * true when the range is changed\n * @param {Number} [start]\n * @param {Number} [end]\n * @return {Boolean} changed\n * @private\n */\nRange.prototype._applyRange = function(start, end) {\n var newStart = (start != null) ? util.convert(start, 'Date').valueOf() : this.start,\n newEnd = (end != null) ? util.convert(end, 'Date').valueOf() : this.end,\n max = (this.options.max != null) ? util.convert(this.options.max, 'Date').valueOf() : null,\n min = (this.options.min != null) ? util.convert(this.options.min, 'Date').valueOf() : null,\n diff;\n\n // check for valid number\n if (isNaN(newStart) || newStart === null) {\n throw new Error('Invalid start \"' + start + '\"');\n }\n if (isNaN(newEnd) || newEnd === null) {\n throw new Error('Invalid end \"' + end + '\"');\n }\n\n // prevent start < end\n if (newEnd < newStart) {\n newEnd = newStart;\n }\n\n // prevent start < min\n if (min !== null) {\n if (newStart < min) {\n diff = (min - newStart);\n newStart += diff;\n newEnd += diff;\n\n // prevent end > max\n if (max != null) {\n if (newEnd > max) {\n newEnd = max;\n }\n }\n }\n }\n\n // prevent end > max\n if (max !== null) {\n if (newEnd > max) {\n diff = (newEnd - max);\n newStart -= diff;\n newEnd -= diff;\n\n // prevent start < min\n if (min != null) {\n if (newStart < min) {\n newStart = min;\n }\n }\n }\n }\n\n // prevent (end-start) < zoomMin\n if (this.options.zoomMin !== null) {\n var zoomMin = parseFloat(this.options.zoomMin);\n if (zoomMin < 0) {\n zoomMin = 0;\n }\n if ((newEnd - newStart) < zoomMin) {\n if ((this.end - this.start) === zoomMin && newStart > this.start && newEnd < this.end) {\n // ignore this action, we are already zoomed to the minimum\n newStart = this.start;\n newEnd = this.end;\n }\n else {\n // zoom to the minimum\n diff = (zoomMin - (newEnd - newStart));\n newStart -= diff / 2;\n newEnd += diff / 2;\n }\n }\n }\n\n // prevent (end-start) > zoomMax\n if (this.options.zoomMax !== null) {\n var zoomMax = parseFloat(this.options.zoomMax);\n if (zoomMax < 0) {\n zoomMax = 0;\n }\n\n if ((newEnd - newStart) > zoomMax) {\n if ((this.end - this.start) === zoomMax && newStart < this.start && newEnd > this.end) {\n // ignore this action, we are already zoomed to the maximum\n newStart = this.start;\n newEnd = this.end;\n }\n else {\n // zoom to the maximum\n diff = ((newEnd - newStart) - zoomMax);\n newStart += diff / 2;\n newEnd -= diff / 2;\n }\n }\n }\n\n var changed = (this.start != newStart || this.end != newEnd);\n\n // if the new range does NOT overlap with the old range, emit checkRangedItems to avoid not showing ranged items (ranged meaning has end time, not necessarily of type Range)\n if (!((newStart >= this.start && newStart <= this.end) || (newEnd >= this.start && newEnd <= this.end)) &&\n !((this.start >= newStart && this.start <= newEnd) || (this.end >= newStart && this.end <= newEnd) )) {\n this.body.emitter.emit('checkRangedItems');\n }\n\n this.start = newStart;\n this.end = newEnd;\n return changed;\n};\n\n/**\n * Retrieve the current range.\n * @return {Object} An object with start and end properties\n */\nRange.prototype.getRange = function() {\n return {\n start: this.start,\n end: this.end\n };\n};\n\n/**\n * Calculate the conversion offset and scale for current range, based on\n * the provided width\n * @param {Number} width\n * @returns {{offset: number, scale: number}} conversion\n */\nRange.prototype.conversion = function (width, totalHidden) {\n return Range.conversion(this.start, this.end, width, totalHidden);\n};\n\n/**\n * Static method to calculate the conversion offset and scale for a range,\n * based on the provided start, end, and width\n * @param {Number} start\n * @param {Number} end\n * @param {Number} width\n * @returns {{offset: number, scale: number}} conversion\n */\nRange.conversion = function (start, end, width, totalHidden) {\n if (totalHidden === undefined) {\n totalHidden = 0;\n }\n if (width != 0 && (end - start != 0)) {\n return {\n offset: start,\n scale: width / (end - start - totalHidden)\n }\n }\n else {\n return {\n offset: 0,\n scale: 1\n };\n }\n};\n\n/**\n * Start dragging horizontally or vertically\n * @param {Event} event\n * @private\n */\nRange.prototype._onDragStart = function(event) {\n this.deltaDifference = 0;\n this.previousDelta = 0;\n\n // only allow dragging when configured as movable\n if (!this.options.moveable) return;\n\n // only start dragging when the mouse is inside the current range\n if (!this._isInsideRange(event)) return;\n\n // refuse to drag when we where pinching to prevent the timeline make a jump\n // when releasing the fingers in opposite order from the touch screen\n if (!this.props.touch.allowDragging) return;\n\n this.stopRolling();\n\n this.props.touch.start = this.start;\n this.props.touch.end = this.end;\n this.props.touch.dragging = true;\n\n if (this.body.dom.root) {\n this.body.dom.root.style.cursor = 'move';\n }\n};\n\n/**\n * Perform dragging operation\n * @param {Event} event\n * @private\n */\nRange.prototype._onDrag = function (event) {\n if (!event) return\n\n if (!this.props.touch.dragging) return;\n\n // only allow dragging when configured as movable\n if (!this.options.moveable) return;\n\n // TODO: this may be redundant in hammerjs2\n // refuse to drag when we where pinching to prevent the timeline make a jump\n // when releasing the fingers in opposite order from the touch screen\n if (!this.props.touch.allowDragging) return;\n\n var direction = this.options.direction;\n validateDirection(direction);\n var delta = (direction == 'horizontal') ? event.deltaX : event.deltaY;\n delta -= this.deltaDifference;\n var interval = (this.props.touch.end - this.props.touch.start);\n\n // normalize dragging speed if cutout is in between.\n var duration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end);\n interval -= duration;\n\n var width = (direction == 'horizontal') ? this.body.domProps.center.width : this.body.domProps.center.height;\n\n if (this.options.rtl) {\n var diffRange = delta / width * interval;\n } else {\n var diffRange = -delta / width * interval;\n }\n\n var newStart = this.props.touch.start + diffRange;\n var newEnd = this.props.touch.end + diffRange;\n\n // snapping times away from hidden zones\n var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, this.previousDelta-delta, true);\n var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, this.previousDelta-delta, true);\n if (safeStart != newStart || safeEnd != newEnd) {\n this.deltaDifference += delta;\n this.props.touch.start = safeStart;\n this.props.touch.end = safeEnd;\n this._onDrag(event);\n return;\n }\n\n this.previousDelta = delta;\n this._applyRange(newStart, newEnd);\n\n\n var startDate = new Date(this.start);\n var endDate = new Date(this.end);\n\n // fire a rangechange event\n this.body.emitter.emit('rangechange', {\n start: startDate,\n end: endDate,\n byUser: true,\n event: util.elementsCensor(event)\n });\n\n // fire a panmove event\n this.body.emitter.emit('panmove');\n};\n\n/**\n * Stop dragging operation\n * @param {event} event\n * @private\n */\nRange.prototype._onDragEnd = function (event) {\n if (!this.props.touch.dragging) return;\n\n // only allow dragging when configured as movable\n if (!this.options.moveable) return;\n\n // TODO: this may be redundant in hammerjs2\n // refuse to drag when we where pinching to prevent the timeline make a jump\n // when releasing the fingers in opposite order from the touch screen\n if (!this.props.touch.allowDragging) return;\n\n this.props.touch.dragging = false;\n if (this.body.dom.root) {\n this.body.dom.root.style.cursor = 'auto';\n }\n\n // fire a rangechanged event\n this.body.emitter.emit('rangechanged', {\n start: new Date(this.start),\n end: new Date(this.end),\n byUser: true,\n event: util.elementsCensor(event)\n });\n};\n\n/**\n * Event handler for mouse wheel event, used to zoom\n * Code from http://adomas.org/javascript-mouse-wheel/\n * @param {Event} event\n * @private\n */\nRange.prototype._onMouseWheel = function(event) {\n // retrieve delta\n var delta = 0;\n if (event.wheelDelta) { /* IE/Opera. */\n delta = event.wheelDelta / 120;\n } else if (event.detail) { /* Mozilla case. */\n // In Mozilla, sign of delta is different than in IE.\n // Also, delta is multiple of 3.\n delta = -event.detail / 3;\n }\n\n // don't allow zoom when the according key is pressed and the zoomKey option or not zoomable but movable\n if ((this.options.zoomKey && !event[this.options.zoomKey] && this.options.zoomable) \n || (!this.options.zoomable && this.options.moveable)) {\n if (this.options.horizontalScroll) {\n // Prevent default actions caused by mouse wheel\n // (else the page and timeline both scroll)\n event.preventDefault();\n \n // calculate a single scroll jump relative to the range scale\n var diff = delta * (this.end - this.start) / 20;\n // calculate new start and end\n var newStart = this.start - diff;\n var newEnd = this.end - diff;\n\n this.setRange(newStart, newEnd, false, true, event);\n }\n return;\n }\n\n // only allow zooming when configured as zoomable and moveable\n if (!(this.options.zoomable && this.options.moveable)) return;\n \n // only zoom when the mouse is inside the current range\n if (!this._isInsideRange(event)) return;\n\n // If delta is nonzero, handle it.\n // Basically, delta is now positive if wheel was scrolled up,\n // and negative, if wheel was scrolled down.\n if (delta) {\n // perform the zoom action. Delta is normally 1 or -1\n\n // adjust a negative delta such that zooming in with delta 0.1\n // equals zooming out with a delta -0.1\n var scale;\n if (delta < 0) {\n scale = 1 - (delta / 5);\n }\n else {\n scale = 1 / (1 + (delta / 5)) ;\n }\n\n // calculate center, the date to zoom around\n var pointerDate\n if (this.rolling) {\n pointerDate = (this.start + this.end) / 2;\n } else {\n var pointer = this.getPointer({x: event.clientX, y: event.clientY}, this.body.dom.center);\n pointerDate = this._pointerToDate(pointer);\n }\n this.zoom(scale, pointerDate, delta, event);\n\n // Prevent default actions caused by mouse wheel\n // (else the page and timeline both scroll)\n event.preventDefault();\n }\n};\n\n/**\n * Start of a touch gesture\n * @private\n */\nRange.prototype._onTouch = function (event) {\n this.props.touch.start = this.start;\n this.props.touch.end = this.end;\n this.props.touch.allowDragging = true;\n this.props.touch.center = null;\n this.scaleOffset = 0;\n this.deltaDifference = 0;\n};\n\n/**\n * Handle pinch event\n * @param {Event} event\n * @private\n */\nRange.prototype._onPinch = function (event) {\n // only allow zooming when configured as zoomable and moveable\n if (!(this.options.zoomable && this.options.moveable)) return;\n\n this.props.touch.allowDragging = false;\n\n if (!this.props.touch.center) {\n this.props.touch.center = this.getPointer(event.center, this.body.dom.center);\n }\n\n this.stopRolling();\n\n var scale = 1 / (event.scale + this.scaleOffset);\n var centerDate = this._pointerToDate(this.props.touch.center);\n\n var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end);\n var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.options.moment, this.body.hiddenDates, this, centerDate);\n var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore;\n\n // calculate new start and end\n var newStart = (centerDate - hiddenDurationBefore) + (this.props.touch.start - (centerDate - hiddenDurationBefore)) * scale;\n var newEnd = (centerDate + hiddenDurationAfter) + (this.props.touch.end - (centerDate + hiddenDurationAfter)) * scale;\n\n // snapping times away from hidden zones\n this.startToFront = 1 - scale <= 0; // used to do the right auto correction with periodic hidden times\n this.endToFront = scale - 1 <= 0; // used to do the right auto correction with periodic hidden times\n\n var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, 1 - scale, true);\n var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, scale - 1, true);\n if (safeStart != newStart || safeEnd != newEnd) {\n this.props.touch.start = safeStart;\n this.props.touch.end = safeEnd;\n this.scaleOffset = 1 - event.scale;\n newStart = safeStart;\n newEnd = safeEnd;\n }\n\n this.setRange(newStart, newEnd, false, true, event);\n\n this.startToFront = false; // revert to default\n this.endToFront = true; // revert to default\n};\n\n/**\n * Test whether the mouse from a mouse event is inside the visible window,\n * between the current start and end date\n * @param {Object} event\n * @return {boolean} Returns true when inside the visible window\n * @private\n */\nRange.prototype._isInsideRange = function(event) {\n // calculate the time where the mouse is, check whether inside\n // and no scroll action should happen.\n var clientX = event.center ? event.center.x : event.clientX;\n if (this.options.rtl) {\n var x = clientX - util.getAbsoluteLeft(this.body.dom.centerContainer);\n } else {\n var x = util.getAbsoluteRight(this.body.dom.centerContainer) - clientX;\n }\n var time = this.body.util.toTime(x);\n\n return time >= this.start && time <= this.end;\n};\n\n/**\n * Helper function to calculate the center date for zooming\n * @param {{x: Number, y: Number}} pointer\n * @return {number} date\n * @private\n */\nRange.prototype._pointerToDate = function (pointer) {\n var conversion;\n var direction = this.options.direction;\n\n validateDirection(direction);\n\n if (direction == 'horizontal') {\n return this.body.util.toTime(pointer.x).valueOf();\n }\n else {\n var height = this.body.domProps.center.height;\n conversion = this.conversion(height);\n return pointer.y / conversion.scale + conversion.offset;\n }\n};\n\n/**\n * Get the pointer location relative to the location of the dom element\n * @param {{x: Number, y: Number}} touch\n * @param {Element} element HTML DOM element\n * @return {{x: Number, y: Number}} pointer\n * @private\n */\nRange.prototype.getPointer = function (touch, element) {\n if (this.options.rtl) {\n return {\n x: util.getAbsoluteRight(element) - touch.x,\n y: touch.y - util.getAbsoluteTop(element)\n };\n } else {\n return {\n x: touch.x - util.getAbsoluteLeft(element),\n y: touch.y - util.getAbsoluteTop(element)\n };\n }\n}\n\n/**\n * Zoom the range the given scale in or out. Start and end date will\n * be adjusted, and the timeline will be redrawn. You can optionally give a\n * date around which to zoom.\n * For example, try scale = 0.9 or 1.1\n * @param {Number} scale Scaling factor. Values above 1 will zoom out,\n * values below 1 will zoom in.\n * @param {Number} [center] Value representing a date around which will\n * be zoomed.\n */\nRange.prototype.zoom = function(scale, center, delta, event) {\n // if centerDate is not provided, take it half between start Date and end Date\n if (center == null) {\n center = (this.start + this.end) / 2;\n }\n\n var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end);\n var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.options.moment, this.body.hiddenDates, this, center);\n var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore;\n\n // calculate new start and end\n var newStart = (center-hiddenDurationBefore) + (this.start - (center-hiddenDurationBefore)) * scale;\n var newEnd = (center+hiddenDurationAfter) + (this.end - (center+hiddenDurationAfter)) * scale;\n\n // snapping times away from hidden zones\n this.startToFront = delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times\n this.endToFront = -delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times\n var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, delta, true);\n var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, -delta, true);\n if (safeStart != newStart || safeEnd != newEnd) {\n newStart = safeStart;\n newEnd = safeEnd;\n }\n\n this.setRange(newStart, newEnd, false, true, event);\n\n this.startToFront = false; // revert to default\n this.endToFront = true; // revert to default\n};\n\n\n\n/**\n * Move the range with a given delta to the left or right. Start and end\n * value will be adjusted. For example, try delta = 0.1 or -0.1\n * @param {Number} delta Moving amount. Positive value will move right,\n * negative value will move left\n */\nRange.prototype.move = function(delta) {\n // zoom start Date and end Date relative to the centerDate\n var diff = (this.end - this.start);\n\n // apply new values\n var newStart = this.start + diff * delta;\n var newEnd = this.end + diff * delta;\n\n // TODO: reckon with min and max range\n\n this.start = newStart;\n this.end = newEnd;\n};\n\n/**\n * Move the range to a new center point\n * @param {Number} moveTo New center point of the range\n */\nRange.prototype.moveTo = function(moveTo) {\n var center = (this.start + this.end) / 2;\n\n var diff = center - moveTo;\n\n // calculate new start and end\n var newStart = this.start - diff;\n var newEnd = this.end - diff;\n\n this.setRange(newStart, newEnd, false, true, event);\n};\n\nmodule.exports = Range;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/Range.js","var util = require('../../util');\n\n/**\n * Prototype for visual components\n * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body]\n * @param {Object} [options]\n */\nfunction Component (body, options) {\n this.options = null;\n this.props = null;\n}\n\n/**\n * Set options for the component. The new options will be merged into the\n * current options.\n * @param {Object} options\n */\nComponent.prototype.setOptions = function(options) {\n if (options) {\n util.extend(this.options, options);\n }\n};\n\n/**\n * Repaint the component\n * @return {boolean} Returns true if the component is resized\n */\nComponent.prototype.redraw = function() {\n // should be implemented by the component\n return false;\n};\n\n/**\n * Destroy the component. Cleanup DOM and event listeners\n */\nComponent.prototype.destroy = function() {\n // should be implemented by the component\n};\n\n/**\n * Test whether the component is resized since the last time _isResized() was\n * called.\n * @return {Boolean} Returns true if the component is resized\n * @protected\n */\nComponent.prototype._isResized = function() {\n var resized = (this.props._previousWidth !== this.props.width ||\n this.props._previousHeight !== this.props.height);\n\n this.props._previousWidth = this.props.width;\n this.props._previousHeight = this.props.height;\n\n return resized;\n};\n\nmodule.exports = Component;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/Component.js","\n/**\n * used in Core to convert the options into a volatile variable\n * \n * @param {function} moment\n * @param {Object} body\n * @param {Array | Object} hiddenDates\n */\nexports.convertHiddenOptions = function(moment, body, hiddenDates) {\n if (hiddenDates && !Array.isArray(hiddenDates)) {\n return exports.convertHiddenOptions(moment, body, [hiddenDates])\n }\n\n body.hiddenDates = [];\n if (hiddenDates) {\n if (Array.isArray(hiddenDates) == true) {\n for (var i = 0; i < hiddenDates.length; i++) {\n if (hiddenDates[i].repeat === undefined) {\n var dateItem = {};\n dateItem.start = moment(hiddenDates[i].start).toDate().valueOf();\n dateItem.end = moment(hiddenDates[i].end).toDate().valueOf();\n body.hiddenDates.push(dateItem);\n }\n }\n body.hiddenDates.sort(function (a, b) {\n return a.start - b.start;\n }); // sort by start time\n }\n }\n};\n\n\n/**\n * create new entrees for the repeating hidden dates\n * @param {function} moment\n * @param {Object} body\n * @param {Array | Object} hiddenDates\n */\nexports.updateHiddenDates = function (moment, body, hiddenDates) {\n if (hiddenDates && !Array.isArray(hiddenDates)) {\n return exports.updateHiddenDates(moment, body, [hiddenDates])\n }\n\n if (hiddenDates && body.domProps.centerContainer.width !== undefined) {\n exports.convertHiddenOptions(moment, body, hiddenDates);\n\n var start = moment(body.range.start);\n var end = moment(body.range.end);\n\n var totalRange = (body.range.end - body.range.start);\n var pixelTime = totalRange / body.domProps.centerContainer.width;\n\n for (var i = 0; i < hiddenDates.length; i++) {\n if (hiddenDates[i].repeat !== undefined) {\n var startDate = moment(hiddenDates[i].start);\n var endDate = moment(hiddenDates[i].end);\n\n if (startDate._d == \"Invalid Date\") {\n throw new Error(\"Supplied start date is not valid: \" + hiddenDates[i].start);\n }\n if (endDate._d == \"Invalid Date\") {\n throw new Error(\"Supplied end date is not valid: \" + hiddenDates[i].end);\n }\n\n var duration = endDate - startDate;\n if (duration >= 4 * pixelTime) {\n\n var offset = 0;\n var runUntil = end.clone();\n switch (hiddenDates[i].repeat) {\n case \"daily\": // case of time\n if (startDate.day() != endDate.day()) {\n offset = 1;\n }\n startDate.dayOfYear(start.dayOfYear());\n startDate.year(start.year());\n startDate.subtract(7,'days');\n\n endDate.dayOfYear(start.dayOfYear());\n endDate.year(start.year());\n endDate.subtract(7 - offset,'days');\n\n runUntil.add(1, 'weeks');\n break;\n case \"weekly\":\n var dayOffset = endDate.diff(startDate,'days')\n var day = startDate.day();\n\n // set the start date to the range.start\n startDate.date(start.date());\n startDate.month(start.month());\n startDate.year(start.year());\n endDate = startDate.clone();\n\n // force\n startDate.day(day);\n endDate.day(day);\n endDate.add(dayOffset,'days');\n\n startDate.subtract(1,'weeks');\n endDate.subtract(1,'weeks');\n\n runUntil.add(1, 'weeks');\n break\n case \"monthly\":\n if (startDate.month() != endDate.month()) {\n offset = 1;\n }\n startDate.month(start.month());\n startDate.year(start.year());\n startDate.subtract(1,'months');\n\n endDate.month(start.month());\n endDate.year(start.year());\n endDate.subtract(1,'months');\n endDate.add(offset,'months');\n\n runUntil.add(1, 'months');\n break;\n case \"yearly\":\n if (startDate.year() != endDate.year()) {\n offset = 1;\n }\n startDate.year(start.year());\n startDate.subtract(1,'years');\n endDate.year(start.year());\n endDate.subtract(1,'years');\n endDate.add(offset,'years');\n\n runUntil.add(1, 'years');\n break;\n default:\n console.log(\"Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:\", hiddenDates[i].repeat);\n return;\n }\n while (startDate < runUntil) {\n body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()});\n switch (hiddenDates[i].repeat) {\n case \"daily\":\n startDate.add(1, 'days');\n endDate.add(1, 'days');\n break;\n case \"weekly\":\n startDate.add(1, 'weeks');\n endDate.add(1, 'weeks');\n break;\n case \"monthly\":\n startDate.add(1, 'months');\n endDate.add(1, 'months');\n break;\n case \"yearly\":\n startDate.add(1, 'y');\n endDate.add(1, 'y');\n break;\n default:\n console.log(\"Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:\", hiddenDates[i].repeat);\n return;\n }\n }\n body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()});\n }\n }\n }\n // remove duplicates, merge where possible\n exports.removeDuplicates(body);\n // ensure the new positions are not on hidden dates\n var startHidden = exports.isHidden(body.range.start, body.hiddenDates);\n var endHidden = exports.isHidden(body.range.end,body.hiddenDates);\n var rangeStart = body.range.start;\n var rangeEnd = body.range.end;\n if (startHidden.hidden == true) {rangeStart = body.range.startToFront == true ? startHidden.startDate - 1 : startHidden.endDate + 1;}\n if (endHidden.hidden == true) {rangeEnd = body.range.endToFront == true ? endHidden.startDate - 1 : endHidden.endDate + 1;}\n if (startHidden.hidden == true || endHidden.hidden == true) {\n body.range._applyRange(rangeStart, rangeEnd);\n }\n }\n\n}\n\n\n/**\n * remove duplicates from the hidden dates list. Duplicates are evil. They mess everything up.\n * Scales with N^2\n * @param body\n */\nexports.removeDuplicates = function(body) {\n var hiddenDates = body.hiddenDates;\n var safeDates = [];\n for (var i = 0; i < hiddenDates.length; i++) {\n for (var j = 0; j < hiddenDates.length; j++) {\n if (i != j && hiddenDates[j].remove != true && hiddenDates[i].remove != true) {\n // j inside i\n if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) {\n hiddenDates[j].remove = true;\n }\n // j start inside i\n else if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].start <= hiddenDates[i].end) {\n hiddenDates[i].end = hiddenDates[j].end;\n hiddenDates[j].remove = true;\n }\n // j end inside i\n else if (hiddenDates[j].end >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) {\n hiddenDates[i].start = hiddenDates[j].start;\n hiddenDates[j].remove = true;\n }\n }\n }\n }\n\n for (var i = 0; i < hiddenDates.length; i++) {\n if (hiddenDates[i].remove !== true) {\n safeDates.push(hiddenDates[i]);\n }\n }\n\n body.hiddenDates = safeDates;\n body.hiddenDates.sort(function (a, b) {\n return a.start - b.start;\n }); // sort by start time\n};\n\nexports.printDates = function(dates) {\n for (var i =0; i < dates.length; i++) {\n console.log(i, new Date(dates[i].start),new Date(dates[i].end), dates[i].start, dates[i].end, dates[i].remove);\n }\n};\n\n/**\n * Used in TimeStep to avoid the hidden times.\n * @param {function} moment\n * @param {TimeStep} timeStep\n * @param previousTime\n */\nexports.stepOverHiddenDates = function(moment, timeStep, previousTime) {\n var stepInHidden = false;\n var currentValue = timeStep.current.valueOf();\n for (var i = 0; i < timeStep.hiddenDates.length; i++) {\n var startDate = timeStep.hiddenDates[i].start;\n var endDate = timeStep.hiddenDates[i].end;\n if (currentValue >= startDate && currentValue < endDate) {\n stepInHidden = true;\n break;\n }\n }\n\n if (stepInHidden == true && currentValue < timeStep._end.valueOf() && currentValue != previousTime) {\n var prevValue = moment(previousTime);\n var newValue = moment(endDate);\n //check if the next step should be major\n if (prevValue.year() != newValue.year()) {timeStep.switchedYear = true;}\n else if (prevValue.month() != newValue.month()) {timeStep.switchedMonth = true;}\n else if (prevValue.dayOfYear() != newValue.dayOfYear()) {timeStep.switchedDay = true;}\n\n timeStep.current = newValue;\n }\n};\n\n\n///**\n// * Used in TimeStep to avoid the hidden times.\n// * @param timeStep\n// * @param previousTime\n// */\n//exports.checkFirstStep = function(timeStep) {\n// var stepInHidden = false;\n// var currentValue = timeStep.current.valueOf();\n// for (var i = 0; i < timeStep.hiddenDates.length; i++) {\n// var startDate = timeStep.hiddenDates[i].start;\n// var endDate = timeStep.hiddenDates[i].end;\n// if (currentValue >= startDate && currentValue < endDate) {\n// stepInHidden = true;\n// break;\n// }\n// }\n//\n// if (stepInHidden == true && currentValue <= timeStep._end.valueOf()) {\n// var newValue = moment(endDate);\n// timeStep.current = newValue.toDate();\n// }\n//};\n\n/**\n * replaces the Core toScreen methods\n * @param Core\n * @param time\n * @param width\n * @returns {number}\n */\nexports.toScreen = function (Core, time, width) {\n if (Core.body.hiddenDates.length == 0) {\n var conversion = Core.range.conversion(width);\n return (time.valueOf() - conversion.offset) * conversion.scale;\n } else {\n var hidden = exports.isHidden(time, Core.body.hiddenDates);\n if (hidden.hidden == true) {\n time = hidden.startDate;\n }\n\n var duration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end);\n if (time < Core.range.start) {\n var conversion = Core.range.conversion(width, duration);\n var hiddenBeforeStart = exports.getHiddenDurationBeforeStart(Core.body.hiddenDates, time, conversion.offset);\n time = Core.options.moment(time).toDate().valueOf();\n time = time + hiddenBeforeStart;\n return -(conversion.offset - time.valueOf()) * conversion.scale;\n \n } else if (time > Core.range.end) {\n var rangeAfterEnd = {start: Core.range.start, end: time};\n time = exports.correctTimeForHidden(Core.options.moment, Core.body.hiddenDates, rangeAfterEnd, time);\n var conversion = Core.range.conversion(width, duration);\n return (time.valueOf() - conversion.offset) * conversion.scale;\n\n } else {\n time = exports.correctTimeForHidden(Core.options.moment, Core.body.hiddenDates, Core.range, time);\n var conversion = Core.range.conversion(width, duration);\n return (time.valueOf() - conversion.offset) * conversion.scale;\n }\n }\n };\n\n\n/**\n * Replaces the core toTime methods\n * @param body\n * @param range\n * @param x\n * @param width\n * @returns {Date}\n */\nexports.toTime = function(Core, x, width) {\n if (Core.body.hiddenDates.length == 0) {\n var conversion = Core.range.conversion(width);\n return new Date(x / conversion.scale + conversion.offset);\n }\n else {\n var hiddenDuration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end);\n var totalDuration = Core.range.end - Core.range.start - hiddenDuration;\n var partialDuration = totalDuration * x / width;\n var accumulatedHiddenDuration = exports.getAccumulatedHiddenDuration(Core.body.hiddenDates, Core.range, partialDuration);\n\n var newTime = new Date(accumulatedHiddenDuration + partialDuration + Core.range.start);\n return newTime;\n }\n};\n\n\n/**\n * Support function\n *\n * @param hiddenDates\n * @param range\n * @returns {number}\n */\nexports.getHiddenDurationBetween = function(hiddenDates, start, end) {\n var duration = 0;\n for (var i = 0; i < hiddenDates.length; i++) {\n var startDate = hiddenDates[i].start;\n var endDate = hiddenDates[i].end;\n // if time after the cutout, and the\n if (startDate >= start && endDate < end) {\n duration += endDate - startDate;\n }\n }\n return duration;\n};\n\n/**\n * Support function\n *\n * @param hiddenDates\n * @param start\n * @param end\n * @returns {number}\n */\nexports.getHiddenDurationBeforeStart = function (hiddenDates, start, end) {\n var duration = 0;\n for (var i = 0; i < hiddenDates.length; i++) {\n var startDate = hiddenDates[i].start;\n var endDate = hiddenDates[i].end;\n\n if (startDate >= start && endDate <= end) {\n duration += endDate - startDate;\n }\n }\n return duration;\n};\n\n\n/**\n * Support function\n * @param moment\n * @param hiddenDates\n * @param range\n * @param time\n * @returns {{duration: number, time: *, offset: number}}\n */\nexports.correctTimeForHidden = function(moment, hiddenDates, range, time) {\n time = moment(time).toDate().valueOf();\n time -= exports.getHiddenDurationBefore(moment, hiddenDates,range,time);\n return time;\n};\n\nexports.getHiddenDurationBefore = function(moment, hiddenDates, range, time) {\n var timeOffset = 0;\n time = moment(time).toDate().valueOf();\n\n for (var i = 0; i < hiddenDates.length; i++) {\n var startDate = hiddenDates[i].start;\n var endDate = hiddenDates[i].end;\n // if time after the cutout, and the\n if (startDate >= range.start && endDate < range.end) {\n if (time >= endDate) {\n timeOffset += (endDate - startDate);\n }\n }\n }\n return timeOffset;\n}\n\n/**\n * sum the duration from start to finish, including the hidden duration,\n * until the required amount has been reached, return the accumulated hidden duration\n * @param hiddenDates\n * @param range\n * @param time\n * @returns {{duration: number, time: *, offset: number}}\n */\nexports.getAccumulatedHiddenDuration = function(hiddenDates, range, requiredDuration) {\n var hiddenDuration = 0;\n var duration = 0;\n var previousPoint = range.start;\n //exports.printDates(hiddenDates)\n for (var i = 0; i < hiddenDates.length; i++) {\n var startDate = hiddenDates[i].start;\n var endDate = hiddenDates[i].end;\n // if time after the cutout, and the\n if (startDate >= range.start && endDate < range.end) {\n duration += startDate - previousPoint;\n previousPoint = endDate;\n if (duration >= requiredDuration) {\n break;\n }\n else {\n hiddenDuration += endDate - startDate;\n }\n }\n }\n\n return hiddenDuration;\n};\n\n\n\n/**\n * used to step over to either side of a hidden block. Correction is disabled on tablets, might be set to true\n * @param hiddenDates\n * @param time\n * @param direction\n * @param correctionEnabled\n * @returns {*}\n */\nexports.snapAwayFromHidden = function(hiddenDates, time, direction, correctionEnabled) {\n var isHidden = exports.isHidden(time, hiddenDates);\n if (isHidden.hidden == true) {\n if (direction < 0) {\n if (correctionEnabled == true) {\n return isHidden.startDate - (isHidden.endDate - time) - 1;\n }\n else {\n return isHidden.startDate - 1;\n }\n }\n else {\n if (correctionEnabled == true) {\n return isHidden.endDate + (time - isHidden.startDate) + 1;\n }\n else {\n return isHidden.endDate + 1;\n }\n }\n }\n else {\n return time;\n }\n\n}\n\n\n/**\n * Check if a time is hidden\n *\n * @param time\n * @param hiddenDates\n * @returns {{hidden: boolean, startDate: Window.start, endDate: *}}\n */\nexports.isHidden = function(time, hiddenDates) {\n for (var i = 0; i < hiddenDates.length; i++) {\n var startDate = hiddenDates[i].start;\n var endDate = hiddenDates[i].end;\n\n if (time >= startDate && time < endDate) { // if the start is entering a hidden zone\n return {hidden: true, startDate: startDate, endDate: endDate};\n break;\n }\n }\n return {hidden: false, startDate: startDate, endDate: endDate};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/DateUtil.js","var Emitter = require('emitter-component');\nvar Hammer = require('../module/hammer');\nvar hammerUtil = require('../hammerUtil');\nvar util = require('../util');\nvar DataSet = require('../DataSet');\nvar DataView = require('../DataView');\nvar Range = require('./Range');\nvar ItemSet = require('./component/ItemSet');\nvar TimeAxis = require('./component/TimeAxis');\nvar Activator = require('../shared/Activator');\nvar DateUtil = require('./DateUtil');\nvar CustomTime = require('./component/CustomTime');\n\n/**\n * Create a timeline visualization\n * @constructor\n */\nfunction Core () {}\n\n// turn Core into an event emitter\nEmitter(Core.prototype);\n\n/**\n * Create the main DOM for the Core: a root panel containing left, right,\n * top, bottom, content, and background panel.\n * @param {Element} container The container element where the Core will\n * be attached.\n * @protected\n */\nCore.prototype._create = function (container) {\n this.dom = {};\n\n this.dom.container = container;\n\n this.dom.root = document.createElement('div');\n this.dom.background = document.createElement('div');\n this.dom.backgroundVertical = document.createElement('div');\n this.dom.backgroundHorizontal = document.createElement('div');\n this.dom.centerContainer = document.createElement('div');\n this.dom.leftContainer = document.createElement('div');\n this.dom.rightContainer = document.createElement('div');\n this.dom.center = document.createElement('div');\n this.dom.left = document.createElement('div');\n this.dom.right = document.createElement('div');\n this.dom.top = document.createElement('div');\n this.dom.bottom = document.createElement('div');\n this.dom.shadowTop = document.createElement('div');\n this.dom.shadowBottom = document.createElement('div');\n this.dom.shadowTopLeft = document.createElement('div');\n this.dom.shadowBottomLeft = document.createElement('div');\n this.dom.shadowTopRight = document.createElement('div');\n this.dom.shadowBottomRight = document.createElement('div');\n this.dom.rollingModeBtn = document.createElement('div');\n\n this.dom.root.className = 'vis-timeline';\n this.dom.background.className = 'vis-panel vis-background';\n this.dom.backgroundVertical.className = 'vis-panel vis-background vis-vertical';\n this.dom.backgroundHorizontal.className = 'vis-panel vis-background vis-horizontal';\n this.dom.centerContainer.className = 'vis-panel vis-center';\n this.dom.leftContainer.className = 'vis-panel vis-left';\n this.dom.rightContainer.className = 'vis-panel vis-right';\n this.dom.top.className = 'vis-panel vis-top';\n this.dom.bottom.className = 'vis-panel vis-bottom';\n this.dom.left.className = 'vis-content';\n this.dom.center.className = 'vis-content';\n this.dom.right.className = 'vis-content';\n this.dom.shadowTop.className = 'vis-shadow vis-top';\n this.dom.shadowBottom.className = 'vis-shadow vis-bottom';\n this.dom.shadowTopLeft.className = 'vis-shadow vis-top';\n this.dom.shadowBottomLeft.className = 'vis-shadow vis-bottom';\n this.dom.shadowTopRight.className = 'vis-shadow vis-top';\n this.dom.shadowBottomRight.className = 'vis-shadow vis-bottom';\n this.dom.rollingModeBtn.className = 'vis-rolling-mode-btn';\n\n this.dom.root.appendChild(this.dom.background);\n this.dom.root.appendChild(this.dom.backgroundVertical);\n this.dom.root.appendChild(this.dom.backgroundHorizontal);\n this.dom.root.appendChild(this.dom.centerContainer);\n this.dom.root.appendChild(this.dom.leftContainer);\n this.dom.root.appendChild(this.dom.rightContainer);\n this.dom.root.appendChild(this.dom.top);\n this.dom.root.appendChild(this.dom.bottom);\n this.dom.root.appendChild(this.dom.bottom);\n this.dom.root.appendChild(this.dom.rollingModeBtn);\n\n this.dom.centerContainer.appendChild(this.dom.center);\n this.dom.leftContainer.appendChild(this.dom.left);\n this.dom.rightContainer.appendChild(this.dom.right);\n this.dom.centerContainer.appendChild(this.dom.shadowTop);\n this.dom.centerContainer.appendChild(this.dom.shadowBottom);\n this.dom.leftContainer.appendChild(this.dom.shadowTopLeft);\n this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft);\n this.dom.rightContainer.appendChild(this.dom.shadowTopRight);\n this.dom.rightContainer.appendChild(this.dom.shadowBottomRight);\n\n // size properties of each of the panels\n this.props = {\n root: {},\n background: {},\n centerContainer: {},\n leftContainer: {},\n rightContainer: {},\n center: {},\n left: {},\n right: {},\n top: {},\n bottom: {},\n border: {},\n scrollTop: 0,\n scrollTopMin: 0\n };\n\n this.on('rangechange', function () {\n if (this.initialDrawDone === true) {\n this._redraw();\n }\n }.bind(this));\n this.on('touch', this._onTouch.bind(this));\n this.on('panmove', this._onDrag.bind(this));\n\n var me = this;\n this._origRedraw = this._redraw.bind(this);\n this._redraw = util.throttle(this._origRedraw);\n\n this.on('_change', function (properties) {\n if (me.itemSet && me.itemSet.initialItemSetDrawn && properties && properties.queue == true) {\n me._redraw()\n } else {\n me._origRedraw();\n }\n });\n\n // create event listeners for all interesting events, these events will be\n // emitted via emitter\n this.hammer = new Hammer(this.dom.root);\n var pinchRecognizer = this.hammer.get('pinch').set({enable: true});\n hammerUtil.disablePreventDefaultVertically(pinchRecognizer);\n this.hammer.get('pan').set({threshold:5, direction: Hammer.DIRECTION_HORIZONTAL});\n this.listeners = {};\n\n var events = [\n 'tap', 'doubletap', 'press',\n 'pinch',\n 'pan', 'panstart', 'panmove', 'panend'\n // TODO: cleanup\n //'touch', 'pinch',\n //'tap', 'doubletap', 'hold',\n //'dragstart', 'drag', 'dragend',\n //'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox\n ];\n events.forEach(function (type) {\n var listener = function (event) {\n if (me.isActive()) {\n me.emit(type, event);\n }\n };\n me.hammer.on(type, listener);\n me.listeners[type] = listener;\n });\n\n // emulate a touch event (emitted before the start of a pan, pinch, tap, or press)\n hammerUtil.onTouch(this.hammer, function (event) {\n me.emit('touch', event);\n }.bind(this));\n\n // emulate a release event (emitted after a pan, pinch, tap, or press)\n hammerUtil.onRelease(this.hammer, function (event) {\n me.emit('release', event);\n }.bind(this));\n\n function onMouseWheel(event) {\n if (this.isActive()) {\n this.emit('mousewheel', event);\n }\n\n // prevent scrolling if not specified explicitly or when horizontalScroll is true\n if (!this.options.verticalScroll || this.options.horizontalScroll) return;\n\n // prevent scrolling when zoomKey defined or activated\n if (!this.options.zoomKey || event[this.options.zoomKey]) return;\n\n // Prevent default actions caused by mouse wheel\n // (else the page and timeline both scroll)\n event.preventDefault();\n\n var delta = 0;\n if (event.wheelDelta) { /* IE/Opera. */\n delta = event.wheelDelta / 120;\n } else if (event.detail) { /* Mozilla case. */\n // In Mozilla, sign of delta is different than in IE.\n // Also, delta is multiple of 3.\n delta = -event.detail / 3;\n }\n\n var current = this.props.scrollTop;\n var adjusted = current + delta * 120;\n\n if (this.isActive()) {\n this._setScrollTop(adjusted);\n this._redraw();\n this.emit('scroll', event);\n }\n }\n\n if (this.dom.centerContainer.addEventListener) {\n // IE9, Chrome, Safari, Opera\n this.dom.centerContainer.addEventListener(\"mousewheel\", onMouseWheel.bind(this), false);\n // Firefox\n this.dom.centerContainer.addEventListener(\"DOMMouseScroll\", onMouseWheel.bind(this), false);\n } else {\n // IE 6/7/8\n this.dom.centerContainer.attachEvent(\"onmousewheel\", onMouseWheel.bind(this));\n }\n\n function onMouseScrollSide(event) {\n if (!me.options.verticalScroll) return;\n event.preventDefault();\n if (me.isActive()) {\n var adjusted = -event.target.scrollTop;\n me._setScrollTop(adjusted);\n me._redraw();\n me.emit('scrollSide', event);\n }\n }\n\n this.dom.left.parentNode.addEventListener('scroll', onMouseScrollSide.bind(this));\n this.dom.right.parentNode.addEventListener('scroll', onMouseScrollSide.bind(this));\n\n var itemAddedToTimeline = false;\n\n function handleDragOver(event) {\n if (event.preventDefault) {\n event.preventDefault(); // Necessary. Allows us to drop.\n }\n\n // make sure your target is a vis element\n if (!event.target.className.indexOf(\"vis\") > -1) return;\n\n // make sure only one item is added every time you're over the timeline\n if (itemAddedToTimeline) return;\n\n event.dataTransfer.dropEffect = 'move'; \n itemAddedToTimeline = true;\n return false;\n }\n\n function handleDrop(event) {\n // return when dropping non-vis items \n try {\n var itemData = JSON.parse(event.dataTransfer.getData(\"text\"))\n if (!itemData.content) return\n } catch (err) {\n return false;\n }\n\n itemAddedToTimeline = false;\n event.center = {\n x: event.clientX,\n y: event.clientY\n }\n me.itemSet._onAddItem(event);\n\n return false;\n }\n\n this.dom.center.addEventListener('dragover', handleDragOver.bind(this), false);\n this.dom.center.addEventListener('drop', handleDrop.bind(this), false);\n\n this.customTimes = [];\n\n // store state information needed for touch events\n this.touch = {};\n\n this.redrawCount = 0;\n this.initialDrawDone = false;\n\n // attach the root panel to the provided container\n if (!container) throw new Error('No container provided');\n container.appendChild(this.dom.root);\n};\n\n/**\n * Set options. Options will be passed to all components loaded in the Timeline.\n * @param {Object} [options]\n * {String} orientation\n * Vertical orientation for the Timeline,\n * can be 'bottom' (default) or 'top'.\n * {String | Number} width\n * Width for the timeline, a number in pixels or\n * a css string like '1000px' or '75%'. '100%' by default.\n * {String | Number} height\n * Fixed height for the Timeline, a number in pixels or\n * a css string like '400px' or '75%'. If undefined,\n * The Timeline will automatically size such that\n * its contents fit.\n * {String | Number} minHeight\n * Minimum height for the Timeline, a number in pixels or\n * a css string like '400px' or '75%'.\n * {String | Number} maxHeight\n * Maximum height for the Timeline, a number in pixels or\n * a css string like '400px' or '75%'.\n * {Number | Date | String} start\n * Start date for the visible window\n * {Number | Date | String} end\n * End date for the visible window\n */\nCore.prototype.setOptions = function (options) {\n if (options) {\n // copy the known options\n var fields = [\n 'width', 'height', 'minHeight', 'maxHeight', 'autoResize',\n 'start', 'end', 'clickToUse', 'dataAttributes', 'hiddenDates',\n 'locale', 'locales', 'moment', 'rtl', 'zoomKey', 'horizontalScroll', 'verticalScroll'\n ];\n util.selectiveExtend(fields, this.options, options); \n\n this.dom.rollingModeBtn.style.visibility = 'hidden';\n\n if (this.options.rtl) {\n this.dom.container.style.direction = \"rtl\";\n this.dom.backgroundVertical.className = 'vis-panel vis-background vis-vertical-rtl'; \n }\n\n if (this.options.verticalScroll) {\n if (this.options.rtl) {\n this.dom.rightContainer.className = 'vis-panel vis-right vis-vertical-scroll';\n } else {\n this.dom.leftContainer.className = 'vis-panel vis-left vis-vertical-scroll';\n }\n }\n\n this.options.orientation = {item:undefined,axis:undefined};\n if ('orientation' in options) {\n if (typeof options.orientation === 'string') {\n this.options.orientation = {\n item: options.orientation,\n axis: options.orientation\n };\n }\n else if (typeof options.orientation === 'object') {\n if ('item' in options.orientation) {\n this.options.orientation.item = options.orientation.item;\n }\n if ('axis' in options.orientation) {\n this.options.orientation.axis = options.orientation.axis;\n }\n }\n }\n\n if (this.options.orientation.axis === 'both') {\n if (!this.timeAxis2) {\n var timeAxis2 = this.timeAxis2 = new TimeAxis(this.body);\n timeAxis2.setOptions = function (options) {\n var _options = options ? util.extend({}, options) : {};\n _options.orientation = 'top'; // override the orientation option, always top\n TimeAxis.prototype.setOptions.call(timeAxis2, _options);\n };\n this.components.push(timeAxis2);\n }\n }\n else {\n if (this.timeAxis2) {\n var index = this.components.indexOf(this.timeAxis2);\n if (index !== -1) {\n this.components.splice(index, 1);\n }\n this.timeAxis2.destroy();\n this.timeAxis2 = null;\n }\n }\n\n // if the graph2d's drawPoints is a function delegate the callback to the onRender property\n if (typeof options.drawPoints == 'function') {\n options.drawPoints = {\n onRender: options.drawPoints\n };\n }\n\n if ('hiddenDates' in this.options) {\n DateUtil.convertHiddenOptions(this.options.moment, this.body, this.options.hiddenDates);\n }\n\n if ('clickToUse' in options) {\n if (options.clickToUse) {\n if (!this.activator) {\n this.activator = new Activator(this.dom.root);\n }\n }\n else {\n if (this.activator) {\n this.activator.destroy();\n delete this.activator;\n }\n }\n }\n\n if ('showCustomTime' in options) {\n throw new Error('Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])');\n }\n\n // enable/disable autoResize\n this._initAutoResize();\n }\n\n // propagate options to all components\n this.components.forEach(component => component.setOptions(options));\n\n // enable/disable configure\n if ('configure' in options) {\n if (!this.configurator) {\n this.configurator = this._createConfigurator();\n }\n\n this.configurator.setOptions(options.configure);\n\n // collect the settings of all components, and pass them to the configuration system\n var appliedOptions = util.deepExtend({}, this.options);\n this.components.forEach(function (component) {\n util.deepExtend(appliedOptions, component.options);\n });\n this.configurator.setModuleOptions({global: appliedOptions});\n }\n\n this._redraw();\n};\n\n/**\n * Returns true when the Timeline is active.\n * @returns {boolean}\n */\nCore.prototype.isActive = function () {\n return !this.activator || this.activator.active;\n};\n\n/**\n * Destroy the Core, clean up all DOM elements and event listeners.\n */\nCore.prototype.destroy = function () {\n // unbind datasets\n this.setItems(null);\n this.setGroups(null);\n\n // remove all event listeners\n this.off();\n\n // stop checking for changed size\n this._stopAutoResize();\n\n // remove from DOM\n if (this.dom.root.parentNode) {\n this.dom.root.parentNode.removeChild(this.dom.root);\n }\n this.dom = null;\n\n // remove Activator\n if (this.activator) {\n this.activator.destroy();\n delete this.activator;\n }\n\n // cleanup hammer touch events\n for (var event in this.listeners) {\n if (this.listeners.hasOwnProperty(event)) {\n delete this.listeners[event];\n }\n }\n this.listeners = null;\n this.hammer = null;\n\n // give all components the opportunity to cleanup\n this.components.forEach(component => component.destroy());\n\n this.body = null;\n};\n\n\n/**\n * Set a custom time bar\n * @param {Date} time\n * @param {number} [id=undefined] Optional id of the custom time bar to be adjusted.\n */\nCore.prototype.setCustomTime = function (time, id) {\n var customTimes = this.customTimes.filter(function (component) {\n return id === component.options.id;\n });\n\n if (customTimes.length === 0) {\n throw new Error('No custom time bar found with id ' + JSON.stringify(id))\n }\n\n if (customTimes.length > 0) {\n customTimes[0].setCustomTime(time);\n }\n};\n\n/**\n * Retrieve the current custom time.\n * @param {number} [id=undefined] Id of the custom time bar.\n * @return {Date | undefined} customTime\n */\nCore.prototype.getCustomTime = function(id) {\n var customTimes = this.customTimes.filter(function (component) {\n return component.options.id === id;\n });\n\n if (customTimes.length === 0) {\n throw new Error('No custom time bar found with id ' + JSON.stringify(id))\n }\n return customTimes[0].getCustomTime();\n};\n\n/**\n * Set a custom title for the custom time bar.\n * @param {String} [title] Custom title\n * @param {number} [id=undefined] Id of the custom time bar.\n */\nCore.prototype.setCustomTimeTitle = function(title, id) {\n var customTimes = this.customTimes.filter(function (component) {\n return component.options.id === id;\n });\n\n if (customTimes.length === 0) {\n throw new Error('No custom time bar found with id ' + JSON.stringify(id))\n }\n if (customTimes.length > 0) {\n return customTimes[0].setCustomTitle(title);\n }\n};\n\n/**\n * Retrieve meta information from an event.\n * Should be overridden by classes extending Core\n * @param {Event} event\n * @return {Object} An object with related information.\n */\nCore.prototype.getEventProperties = function (event) {\n return { event: event };\n};\n\n/**\n * Add custom vertical bar\n * @param {Date | String | Number} [time] A Date, unix timestamp, or\n * ISO date string. Time point where\n * the new bar should be placed.\n * If not provided, `new Date()` will\n * be used.\n * @param {Number | String} [id=undefined] Id of the new bar. Optional\n * @return {Number | String} Returns the id of the new bar\n */\nCore.prototype.addCustomTime = function (time, id) {\n var timestamp = time !== undefined\n ? util.convert(time, 'Date').valueOf()\n : new Date();\n\n var exists = this.customTimes.some(function (customTime) {\n return customTime.options.id === id;\n });\n if (exists) {\n throw new Error('A custom time with id ' + JSON.stringify(id) + ' already exists');\n }\n\n var customTime = new CustomTime(this.body, util.extend({}, this.options, {\n time : timestamp,\n id : id\n }));\n\n this.customTimes.push(customTime);\n this.components.push(customTime);\n this._redraw();\n\n return id;\n};\n\n/**\n * Remove previously added custom bar\n * @param {int} id ID of the custom bar to be removed\n * @return {boolean} True if the bar exists and is removed, false otherwise\n */\nCore.prototype.removeCustomTime = function (id) {\n var customTimes = this.customTimes.filter(function (bar) {\n return (bar.options.id === id);\n });\n\n if (customTimes.length === 0) {\n throw new Error('No custom time bar found with id ' + JSON.stringify(id))\n }\n\n customTimes.forEach(function (customTime) {\n this.customTimes.splice(this.customTimes.indexOf(customTime), 1);\n this.components.splice(this.components.indexOf(customTime), 1);\n customTime.destroy();\n }.bind(this))\n};\n\n\n/**\n * Get the id's of the currently visible items.\n * @returns {Array} The ids of the visible items\n */\nCore.prototype.getVisibleItems = function() {\n return this.itemSet && this.itemSet.getVisibleItems() || [];\n};\n\n/**\n * Set Core window such that it fits all items\n * @param {Object} [options] Available options:\n * `animation: boolean | {duration: number, easingFunction: string}`\n * If true (default), the range is animated\n * smoothly to the new window. An object can be\n * provided to specify duration and easing function.\n * Default duration is 500 ms, and default easing\n * function is 'easeInOutQuad'.\n */\nCore.prototype.fit = function(options) {\n var range = this.getDataRange();\n\n // skip range set if there is no min and max date\n if (range.min === null && range.max === null) {\n return;\n }\n\n // apply a margin of 1% left and right of the data\n var interval = range.max - range.min;\n var min = new Date(range.min.valueOf() - interval * 0.01);\n var max = new Date(range.max.valueOf() + interval * 0.01);\n var animation = (options && options.animation !== undefined) ? options.animation : true;\n this.range.setRange(min, max, animation);\n};\n\n/**\n * Calculate the data range of the items start and end dates\n * @returns {{min: Date | null, max: Date | null}}\n * @protected\n */\nCore.prototype.getDataRange = function() {\n // must be implemented by Timeline and Graph2d\n throw new Error('Cannot invoke abstract method getDataRange');\n};\n\n/**\n * Set the visible window. Both parameters are optional, you can change only\n * start or only end. Syntax:\n *\n * TimeLine.setWindow(start, end)\n * TimeLine.setWindow(start, end, options)\n * TimeLine.setWindow(range)\n *\n * Where start and end can be a Date, number, or string, and range is an\n * object with properties start and end.\n *\n * @param {Date | Number | String | Object} [start] Start date of visible window\n * @param {Date | Number | String} [end] End date of visible window\n * @param {Object} [options] Available options:\n * `animation: boolean | {duration: number, easingFunction: string}`\n * If true (default), the range is animated\n * smoothly to the new window. An object can be\n * provided to specify duration and easing function.\n * Default duration is 500 ms, and default easing\n * function is 'easeInOutQuad'.\n */\nCore.prototype.setWindow = function(start, end, options) {\n var animation;\n if (arguments.length == 1) {\n var range = arguments[0];\n animation = (range.animation !== undefined) ? range.animation : true;\n this.range.setRange(range.start, range.end, animation);\n }\n else {\n animation = (options && options.animation !== undefined) ? options.animation : true;\n this.range.setRange(start, end, animation);\n }\n};\n\n/**\n * Move the window such that given time is centered on screen.\n * @param {Date | Number | String} time\n * @param {Object} [options] Available options:\n * `animation: boolean | {duration: number, easingFunction: string}`\n * If true (default), the range is animated\n * smoothly to the new window. An object can be\n * provided to specify duration and easing function.\n * Default duration is 500 ms, and default easing\n * function is 'easeInOutQuad'.\n */\nCore.prototype.moveTo = function(time, options) {\n var interval = this.range.end - this.range.start;\n var t = util.convert(time, 'Date').valueOf();\n\n var start = t - interval / 2;\n var end = t + interval / 2;\n var animation = (options && options.animation !== undefined) ? options.animation : true;\n\n this.range.setRange(start, end, animation);\n};\n\n/**\n * Get the visible window\n * @return {{start: Date, end: Date}} Visible range\n */\nCore.prototype.getWindow = function() {\n var range = this.range.getRange();\n return {\n start: new Date(range.start),\n end: new Date(range.end)\n };\n};\n\n/**\n * Zoom in the window such that given time is centered on screen.\n * @param {Number} percentage - must be between [0..1]\n */\nCore.prototype.zoomIn = function(percentage) {\n if (!percentage || percentage < 0 || percentage > 1) return\n var range = this.getWindow();\n var start = range.start.valueOf();\n var end = range.end.valueOf();\n var interval = end - start;\n var newInterval = interval / (1 + percentage);\n var distance = (interval - newInterval) / 2;\n var newStart = start + distance;\n var newEnd = end - distance;\n\n this.setWindow({\n start : newStart,\n end : newEnd\n });\n};\n\n/**\n * Zoom out the window such that given time is centered on screen.\n * @param {Number} percentage - must be between [0..1]\n */\nCore.prototype.zoomOut = function(percentage) {\n if (!percentage || percentage < 0 || percentage > 1) return\n var range = this.getWindow();\n var start = range.start.valueOf();\n var end = range.end.valueOf();\n var interval = end - start;\n var newStart = start - interval * percentage / 2;\n var newEnd = end + interval * percentage / 2;\n\n this.setWindow({\n start : newStart,\n end : newEnd\n });\n};\n\n/**\n * Force a redraw. Can be overridden by implementations of Core\n *\n * Note: this function will be overridden on construction with a trottled version\n */\nCore.prototype.redraw = function() {\n this._redraw();\n};\n\n/**\n * Redraw for internal use. Redraws all components. See also the public\n * method redraw.\n * @protected\n */\nCore.prototype._redraw = function() {\n this.redrawCount++;\n var resized = false;\n var options = this.options;\n var props = this.props;\n var dom = this.dom;\n\n if (!dom || !dom.container || dom.root.offsetWidth == 0) return; // when destroyed, or invisible\n\n DateUtil.updateHiddenDates(this.options.moment, this.body, this.options.hiddenDates);\n\n // update class names\n if (options.orientation == 'top') {\n util.addClassName(dom.root, 'vis-top');\n util.removeClassName(dom.root, 'vis-bottom');\n }\n else {\n util.removeClassName(dom.root, 'vis-top');\n util.addClassName(dom.root, 'vis-bottom');\n }\n\n // update root width and height options\n dom.root.style.maxHeight = util.option.asSize(options.maxHeight, '');\n dom.root.style.minHeight = util.option.asSize(options.minHeight, '');\n dom.root.style.width = util.option.asSize(options.width, '');\n\n // calculate border widths\n props.border.left = (dom.centerContainer.offsetWidth - dom.centerContainer.clientWidth) / 2;\n props.border.right = props.border.left;\n props.border.top = (dom.centerContainer.offsetHeight - dom.centerContainer.clientHeight) / 2;\n props.border.bottom = props.border.top;\n props.borderRootHeight= dom.root.offsetHeight - dom.root.clientHeight;\n props.borderRootWidth = dom.root.offsetWidth - dom.root.clientWidth;\n\n // workaround for a bug in IE: the clientWidth of an element with\n // a height:0px and overflow:hidden is not calculated and always has value 0\n if (dom.centerContainer.clientHeight === 0) {\n props.border.left = props.border.top;\n props.border.right = props.border.left;\n }\n if (dom.root.clientHeight === 0) {\n props.borderRootWidth = props.borderRootHeight;\n }\n\n // calculate the heights. If any of the side panels is empty, we set the height to\n // minus the border width, such that the border will be invisible\n props.center.height = dom.center.offsetHeight;\n props.left.height = dom.left.offsetHeight;\n props.right.height = dom.right.offsetHeight;\n props.top.height = dom.top.clientHeight || -props.border.top;\n props.bottom.height = dom.bottom.clientHeight || -props.border.bottom;\n\n // TODO: compensate borders when any of the panels is empty.\n\n // apply auto height\n // TODO: only calculate autoHeight when needed (else we cause an extra reflow/repaint of the DOM)\n var contentHeight = Math.max(props.left.height, props.center.height, props.right.height);\n var autoHeight = props.top.height + contentHeight + props.bottom.height +\n props.borderRootHeight + props.border.top + props.border.bottom;\n dom.root.style.height = util.option.asSize(options.height, autoHeight + 'px');\n\n // calculate heights of the content panels\n props.root.height = dom.root.offsetHeight;\n props.background.height = props.root.height - props.borderRootHeight;\n var containerHeight = props.root.height - props.top.height - props.bottom.height -\n props.borderRootHeight;\n props.centerContainer.height = containerHeight;\n props.leftContainer.height = containerHeight;\n props.rightContainer.height = props.leftContainer.height;\n\n // calculate the widths of the panels\n props.root.width = dom.root.offsetWidth;\n props.background.width = props.root.width - props.borderRootWidth;\n\n if (!this.initialDrawDone) {\n props.scrollbarWidth = util.getScrollBarWidth();\n }\n\n if (options.verticalScroll) {\n if (options.rtl) {\n props.left.width = dom.leftContainer.clientWidth || -props.border.left;\n props.right.width = dom.rightContainer.clientWidth + props.scrollbarWidth || -props.border.right;\n } else {\n props.left.width = dom.leftContainer.clientWidth + props.scrollbarWidth || -props.border.left;\n props.right.width = dom.rightContainer.clientWidth || -props.border.right;\n }\n } else {\n props.left.width = dom.leftContainer.clientWidth || -props.border.left;\n props.right.width = dom.rightContainer.clientWidth || -props.border.right;\n }\n\n this._setDOM();\n\n // update the scrollTop, feasible range for the offset can be changed\n // when the height of the Core or of the contents of the center changed\n var offset = this._updateScrollTop();\n\n // reposition the scrollable contents\n if (options.orientation.item != 'top') {\n offset += Math.max(props.centerContainer.height - props.center.height -\n props.border.top - props.border.bottom, 0);\n }\n dom.center.style.top = offset + 'px';\n \n // show shadows when vertical scrolling is available\n var visibilityTop = props.scrollTop == 0 ? 'hidden' : '';\n var visibilityBottom = props.scrollTop == props.scrollTopMin ? 'hidden' : '';\n dom.shadowTop.style.visibility = visibilityTop;\n dom.shadowBottom.style.visibility = visibilityBottom;\n dom.shadowTopLeft.style.visibility = visibilityTop;\n dom.shadowBottomLeft.style.visibility = visibilityBottom;\n dom.shadowTopRight.style.visibility = visibilityTop;\n dom.shadowBottomRight.style.visibility = visibilityBottom;\n\n if (options.verticalScroll) {\n dom.rightContainer.className = 'vis-panel vis-right vis-vertical-scroll';\n dom.leftContainer.className = 'vis-panel vis-left vis-vertical-scroll';\n\n dom.shadowTopRight.style.visibility = \"hidden\";\n dom.shadowBottomRight.style.visibility = \"hidden\";\n dom.shadowTopLeft.style.visibility = \"hidden\";\n dom.shadowBottomLeft.style.visibility = \"hidden\";\n\n dom.left.style.top = '0px';\n dom.right.style.top = '0px';\n }\n\n if (!options.verticalScroll || props.center.height < props.centerContainer.height) {\n dom.left.style.top = offset + 'px';\n dom.right.style.top = offset + 'px';\n dom.rightContainer.className = dom.rightContainer.className.replace(new RegExp('(?:^|\\\\s)'+ 'vis-vertical-scroll' + '(?:\\\\s|$)'), ' ');\n dom.leftContainer.className = dom.leftContainer.className.replace(new RegExp('(?:^|\\\\s)'+ 'vis-vertical-scroll' + '(?:\\\\s|$)'), ' ');\n props.left.width = dom.leftContainer.clientWidth || -props.border.left;\n props.right.width = dom.rightContainer.clientWidth || -props.border.right;\n this._setDOM();\n }\n\n // enable/disable vertical panning\n var contentsOverflow = props.center.height > props.centerContainer.height;\n this.hammer.get('pan').set({\n direction: contentsOverflow ? Hammer.DIRECTION_ALL : Hammer.DIRECTION_HORIZONTAL\n });\n\n // redraw all components\n this.components.forEach(function (component) {\n resized = component.redraw() || resized;\n });\n var MAX_REDRAW = 5;\n if (resized) {\n if (this.redrawCount < MAX_REDRAW) {\n this.body.emitter.emit('_change');\n return;\n }\n else {\n console.log('WARNING: infinite loop in redraw?');\n }\n } else {\n this.redrawCount = 0;\n }\n this.initialDrawDone = true;\n\n //Emit public 'changed' event for UI updates, see issue #1592\n this.body.emitter.emit(\"changed\");\n};\n\nCore.prototype._setDOM = function () {\n var props = this.props;\n var dom = this.dom;\n\n props.leftContainer.width = props.left.width;\n props.rightContainer.width = props.right.width;\n var centerWidth = props.root.width - props.left.width - props.right.width - props.borderRootWidth;\n props.center.width = centerWidth;\n props.centerContainer.width = centerWidth;\n props.top.width = centerWidth;\n props.bottom.width = centerWidth;\n\n // resize the panels\n dom.background.style.height = props.background.height + 'px';\n dom.backgroundVertical.style.height = props.background.height + 'px';\n dom.backgroundHorizontal.style.height = props.centerContainer.height + 'px';\n dom.centerContainer.style.height = props.centerContainer.height + 'px';\n dom.leftContainer.style.height = props.leftContainer.height + 'px';\n dom.rightContainer.style.height = props.rightContainer.height + 'px';\n\n dom.background.style.width = props.background.width + 'px';\n dom.backgroundVertical.style.width = props.centerContainer.width + 'px';\n dom.backgroundHorizontal.style.width = props.background.width + 'px';\n dom.centerContainer.style.width = props.center.width + 'px';\n dom.top.style.width = props.top.width + 'px';\n dom.bottom.style.width = props.bottom.width + 'px';\n\n // reposition the panels\n dom.background.style.left = '0';\n dom.background.style.top = '0';\n dom.backgroundVertical.style.left = (props.left.width + props.border.left) + 'px';\n dom.backgroundVertical.style.top = '0';\n dom.backgroundHorizontal.style.left = '0';\n dom.backgroundHorizontal.style.top = props.top.height + 'px';\n dom.centerContainer.style.left = props.left.width + 'px';\n dom.centerContainer.style.top = props.top.height + 'px';\n dom.leftContainer.style.left = '0';\n dom.leftContainer.style.top = props.top.height + 'px';\n dom.rightContainer.style.left = (props.left.width + props.center.width) + 'px';\n dom.rightContainer.style.top = props.top.height + 'px';\n dom.top.style.left = props.left.width + 'px';\n dom.top.style.top = '0';\n dom.bottom.style.left = props.left.width + 'px';\n dom.bottom.style.top = (props.top.height + props.centerContainer.height) + 'px';\n dom.center.style.left = '0';\n dom.left.style.left = '0';\n dom.right.style.left = '0';\n}\n\n// TODO: deprecated since version 1.1.0, remove some day\nCore.prototype.repaint = function () {\n throw new Error('Function repaint is deprecated. Use redraw instead.');\n};\n\n/**\n * Set a current time. This can be used for example to ensure that a client's\n * time is synchronized with a shared server time.\n * Only applicable when option `showCurrentTime` is true.\n * @param {Date | String | Number} time A Date, unix timestamp, or\n * ISO date string.\n */\nCore.prototype.setCurrentTime = function(time) {\n if (!this.currentTime) {\n throw new Error('Option showCurrentTime must be true');\n }\n\n this.currentTime.setCurrentTime(time);\n};\n\n/**\n * Get the current time.\n * Only applicable when option `showCurrentTime` is true.\n * @return {Date} Returns the current time.\n */\nCore.prototype.getCurrentTime = function() {\n if (!this.currentTime) {\n throw new Error('Option showCurrentTime must be true');\n }\n\n return this.currentTime.getCurrentTime();\n};\n\n/**\n * Convert a position on screen (pixels) to a datetime\n * @param {int} x Position on the screen in pixels\n * @return {Date} time The datetime the corresponds with given position x\n * @protected\n */\n// TODO: move this function to Range\nCore.prototype._toTime = function(x) {\n return DateUtil.toTime(this, x, this.props.center.width);\n};\n\n/**\n * Convert a position on the global screen (pixels) to a datetime\n * @param {int} x Position on the screen in pixels\n * @return {Date} time The datetime the corresponds with given position x\n * @protected\n */\n// TODO: move this function to Range\nCore.prototype._toGlobalTime = function(x) {\n return DateUtil.toTime(this, x, this.props.root.width);\n //var conversion = this.range.conversion(this.props.root.width);\n //return new Date(x / conversion.scale + conversion.offset);\n};\n\n/**\n * Convert a datetime (Date object) into a position on the screen\n * @param {Date} time A date\n * @return {int} x The position on the screen in pixels which corresponds\n * with the given date.\n * @protected\n */\n// TODO: move this function to Range\nCore.prototype._toScreen = function(time) {\n return DateUtil.toScreen(this, time, this.props.center.width);\n};\n\n\n\n/**\n * Convert a datetime (Date object) into a position on the root\n * This is used to get the pixel density estimate for the screen, not the center panel\n * @param {Date} time A date\n * @return {int} x The position on root in pixels which corresponds\n * with the given date.\n * @protected\n */\n// TODO: move this function to Range\nCore.prototype._toGlobalScreen = function(time) {\n return DateUtil.toScreen(this, time, this.props.root.width);\n //var conversion = this.range.conversion(this.props.root.width);\n //return (time.valueOf() - conversion.offset) * conversion.scale;\n};\n\n\n/**\n * Initialize watching when option autoResize is true\n * @private\n */\nCore.prototype._initAutoResize = function () {\n if (this.options.autoResize == true) {\n this._startAutoResize();\n }\n else {\n this._stopAutoResize();\n }\n};\n\n/**\n * Watch for changes in the size of the container. On resize, the Panel will\n * automatically redraw itself.\n * @private\n */\nCore.prototype._startAutoResize = function () {\n var me = this;\n\n this._stopAutoResize();\n\n this._onResize = function() {\n if (me.options.autoResize != true) {\n // stop watching when the option autoResize is changed to false\n me._stopAutoResize();\n return;\n }\n\n if (me.dom.root) {\n // check whether the frame is resized\n // Note: we compare offsetWidth here, not clientWidth. For some reason,\n // IE does not restore the clientWidth from 0 to the actual width after\n // changing the timeline's container display style from none to visible\n if ((me.dom.root.offsetWidth != me.props.lastWidth) ||\n (me.dom.root.offsetHeight != me.props.lastHeight)) {\n me.props.lastWidth = me.dom.root.offsetWidth;\n me.props.lastHeight = me.dom.root.offsetHeight;\n me.props.scrollbarWidth = util.getScrollBarWidth();\n\n me.body.emitter.emit('_change');\n }\n }\n };\n\n // add event listener to window resize\n util.addEventListener(window, 'resize', this._onResize);\n\n //Prevent initial unnecessary redraw\n if (me.dom.root) {\n me.props.lastWidth = me.dom.root.offsetWidth;\n me.props.lastHeight = me.dom.root.offsetHeight;\n }\n\n this.watchTimer = setInterval(this._onResize, 1000);\n};\n\n/**\n * Stop watching for a resize of the frame.\n * @private\n */\nCore.prototype._stopAutoResize = function () {\n if (this.watchTimer) {\n clearInterval(this.watchTimer);\n this.watchTimer = undefined;\n }\n\n // remove event listener on window.resize\n if (this._onResize) {\n util.removeEventListener(window, 'resize', this._onResize);\n this._onResize = null;\n }\n};\n\n/**\n * Start moving the timeline vertically\n * @param {Event} event\n * @private\n */\nCore.prototype._onTouch = function (event) {\n this.touch.allowDragging = true;\n this.touch.initialScrollTop = this.props.scrollTop;\n};\n\n/**\n * Start moving the timeline vertically\n * @param {Event} event\n * @private\n */\nCore.prototype._onPinch = function (event) {\n this.touch.allowDragging = false;\n};\n\n/**\n * Move the timeline vertically\n * @param {Event} event\n * @private\n */\nCore.prototype._onDrag = function (event) {\n if (!event) return\n // refuse to drag when we where pinching to prevent the timeline make a jump\n // when releasing the fingers in opposite order from the touch screen\n if (!this.touch.allowDragging) return;\n\n var delta = event.deltaY;\n\n var oldScrollTop = this._getScrollTop();\n var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta);\n\n if (this.options.verticalScroll) {\n this.dom.left.parentNode.scrollTop = -this.props.scrollTop;\n this.dom.right.parentNode.scrollTop = -this.props.scrollTop;\n }\n\n if (newScrollTop != oldScrollTop) {\n this.emit(\"verticalDrag\");\n }\n};\n\n/**\n * Apply a scrollTop\n * @param {Number} scrollTop\n * @returns {Number} scrollTop Returns the applied scrollTop\n * @private\n */\nCore.prototype._setScrollTop = function (scrollTop) {\n this.props.scrollTop = scrollTop;\n this._updateScrollTop();\n return this.props.scrollTop;\n};\n\n/**\n * Update the current scrollTop when the height of the containers has been changed\n * @returns {Number} scrollTop Returns the applied scrollTop\n * @private\n */\nCore.prototype._updateScrollTop = function () {\n // recalculate the scrollTopMin\n var scrollTopMin = Math.min(this.props.centerContainer.height - this.props.center.height, 0); // is negative or zero\n if (scrollTopMin != this.props.scrollTopMin) {\n // in case of bottom orientation, change the scrollTop such that the contents\n // do not move relative to the time axis at the bottom\n if (this.options.orientation.item != 'top') {\n this.props.scrollTop += (scrollTopMin - this.props.scrollTopMin);\n }\n this.props.scrollTopMin = scrollTopMin;\n }\n\n // limit the scrollTop to the feasible scroll range\n if (this.props.scrollTop > 0) this.props.scrollTop = 0;\n if (this.props.scrollTop < scrollTopMin) this.props.scrollTop = scrollTopMin;\n\n if (this.options.verticalScroll) {\n this.dom.left.parentNode.scrollTop = -this.props.scrollTop;\n this.dom.right.parentNode.scrollTop = -this.props.scrollTop;\n }\n\n return this.props.scrollTop;\n};\n\n/**\n * Get the current scrollTop\n * @returns {number} scrollTop\n * @private\n */\nCore.prototype._getScrollTop = function () {\n return this.props.scrollTop;\n};\n\n/**\n * Load a configurator\n * @return {Object}\n * @private\n */\nCore.prototype._createConfigurator = function () {\n throw new Error('Cannot invoke abstract method _createConfigurator');\n};\n\nmodule.exports = Core;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/Core.js","var Hammer = require('../../module/hammer');\nvar util = require('../../util');\nvar DataSet = require('../../DataSet');\nvar DataView = require('../../DataView');\nvar TimeStep = require('../TimeStep');\nvar Component = require('./Component');\nvar Group = require('./Group');\nvar BackgroundGroup = require('./BackgroundGroup');\nvar BoxItem = require('./item/BoxItem');\nvar PointItem = require('./item/PointItem');\nvar RangeItem = require('./item/RangeItem');\nvar BackgroundItem = require('./item/BackgroundItem');\nimport Popup from '../../shared/Popup';\n\n\nvar UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items\nvar BACKGROUND = '__background__'; // reserved group id for background items without group\n\n/**\n * An ItemSet holds a set of items and ranges which can be displayed in a\n * range. The width is determined by the parent of the ItemSet, and the height\n * is determined by the size of the items.\n * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body\n * @param {Object} [options] See ItemSet.setOptions for the available options.\n * @constructor ItemSet\n * @extends Component\n */\nfunction ItemSet(body, options) {\n this.body = body;\n this.defaultOptions = {\n type: null, // 'box', 'point', 'range', 'background'\n orientation: {\n item: 'bottom' // item orientation: 'top' or 'bottom'\n },\n align: 'auto', // alignment of box items\n stack: true,\n stackSubgroups: true,\n groupOrderSwap: function(fromGroup, toGroup, groups) {\n \tvar targetOrder = toGroup.order;\n \ttoGroup.order = fromGroup.order;\n \tfromGroup.order = targetOrder;\n },\n groupOrder: 'order',\n\n selectable: true,\n multiselect: false,\n itemsAlwaysDraggable: false,\n\n editable: {\n updateTime: false,\n updateGroup: false,\n add: false,\n remove: false,\n overrideItems: false\n },\n\n groupEditable: {\n order: false,\n add: false,\n remove: false\n }, \n \n snap: TimeStep.snap,\n\n onAdd: function (item, callback) {\n callback(item);\n },\n onUpdate: function (item, callback) {\n callback(item);\n },\n onMove: function (item, callback) {\n callback(item);\n },\n onRemove: function (item, callback) {\n callback(item);\n },\n onMoving: function (item, callback) {\n callback(item);\n },\n onAddGroup: function (item, callback) {\n callback(item);\n },\n onMoveGroup: function (item, callback) {\n callback(item);\n },\n onRemoveGroup: function (item, callback) {\n callback(item);\n },\n\n margin: {\n item: {\n horizontal: 10,\n vertical: 10\n },\n axis: 20\n },\n\n tooltip: {\n followMouse: false,\n overflowMethod: 'flip'\n },\n\n tooltipOnItemUpdateTime: false\n };\n\n // options is shared by this ItemSet and all its items\n this.options = util.extend({}, this.defaultOptions);\n this.options.rtl = options.rtl;\n\n // options for getting items from the DataSet with the correct type\n this.itemOptions = {\n type: {start: 'Date', end: 'Date'}\n };\n\n this.conversion = {\n toScreen: body.util.toScreen,\n toTime: body.util.toTime\n };\n this.dom = {};\n this.props = {};\n this.hammer = null;\n\n var me = this;\n this.itemsData = null; // DataSet\n this.groupsData = null; // DataSet\n\n // listeners for the DataSet of the items\n this.itemListeners = {\n 'add': function (event, params, senderId) {\n me._onAdd(params.items);\n },\n 'update': function (event, params, senderId) {\n me._onUpdate(params.items);\n },\n 'remove': function (event, params, senderId) {\n me._onRemove(params.items);\n }\n };\n\n // listeners for the DataSet of the groups\n this.groupListeners = {\n 'add': function (event, params, senderId) {\n me._onAddGroups(params.items);\n },\n 'update': function (event, params, senderId) {\n me._onUpdateGroups(params.items);\n },\n 'remove': function (event, params, senderId) {\n me._onRemoveGroups(params.items);\n }\n };\n\n this.items = {}; // object with an Item for every data item\n this.groups = {}; // Group object for every group\n this.groupIds = [];\n\n this.selection = []; // list with the ids of all selected nodes\n this.stackDirty = true; // if true, all items will be restacked on next redraw\n\n this.touchParams = {}; // stores properties while dragging\n this.groupTouchParams = {};\n // create the HTML DOM\n\n this._create();\n\n this.setOptions(options);\n}\n\nItemSet.prototype = new Component();\n\n// available item types will be registered here\nItemSet.types = {\n background: BackgroundItem,\n box: BoxItem,\n range: RangeItem,\n point: PointItem\n};\n\n/**\n * Create the HTML DOM for the ItemSet\n */\nItemSet.prototype._create = function(){\n var frame = document.createElement('div');\n frame.className = 'vis-itemset';\n frame['timeline-itemset'] = this;\n this.dom.frame = frame;\n\n // create background panel\n var background = document.createElement('div');\n background.className = 'vis-background';\n frame.appendChild(background);\n this.dom.background = background;\n\n // create foreground panel\n var foreground = document.createElement('div');\n foreground.className = 'vis-foreground';\n frame.appendChild(foreground);\n this.dom.foreground = foreground;\n\n // create axis panel\n var axis = document.createElement('div');\n axis.className = 'vis-axis';\n this.dom.axis = axis;\n\n // create labelset\n var labelSet = document.createElement('div');\n labelSet.className = 'vis-labelset';\n this.dom.labelSet = labelSet;\n\n // create ungrouped Group\n this._updateUngrouped();\n\n // create background Group\n var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this);\n backgroundGroup.show();\n this.groups[BACKGROUND] = backgroundGroup;\n\n // attach event listeners\n // Note: we bind to the centerContainer for the case where the height\n // of the center container is larger than of the ItemSet, so we\n // can click in the empty area to create a new item or deselect an item.\n this.hammer = new Hammer(this.body.dom.centerContainer);\n\n // drag items when selected\n this.hammer.on('hammer.input', function (event) {\n if (event.isFirst) {\n this._onTouch(event);\n }\n }.bind(this));\n this.hammer.on('panstart', this._onDragStart.bind(this));\n this.hammer.on('panmove', this._onDrag.bind(this));\n this.hammer.on('panend', this._onDragEnd.bind(this));\n this.hammer.get('pan').set({threshold:5, direction: Hammer.DIRECTION_HORIZONTAL});\n\n // single select (or unselect) when tapping an item\n this.hammer.on('tap', this._onSelectItem.bind(this));\n\n // multi select when holding mouse/touch, or on ctrl+click\n this.hammer.on('press', this._onMultiSelectItem.bind(this));\n\n // add item on doubletap\n this.hammer.on('doubletap', this._onAddItem.bind(this));\n\n if (this.options.rtl) {\n this.groupHammer = new Hammer(this.body.dom.rightContainer);\n } else {\n this.groupHammer = new Hammer(this.body.dom.leftContainer);\n }\n \n this.groupHammer.on('tap', this._onGroupClick.bind(this));\n this.groupHammer.on('panstart', this._onGroupDragStart.bind(this));\n this.groupHammer.on('panmove', this._onGroupDrag.bind(this));\n this.groupHammer.on('panend', this._onGroupDragEnd.bind(this));\n this.groupHammer.get('pan').set({threshold:5, direction: Hammer.DIRECTION_VERTICAL});\n \n this.body.dom.centerContainer.addEventListener('mouseover', this._onMouseOver.bind(this));\n this.body.dom.centerContainer.addEventListener('mouseout', this._onMouseOut.bind(this));\n this.body.dom.centerContainer.addEventListener('mousemove', this._onMouseMove.bind(this));\n // right-click on timeline \n this.body.dom.centerContainer.addEventListener('contextmenu', this._onDragEnd.bind(this));\n\n // attach to the DOM\n this.show();\n};\n\n/**\n * Set options for the ItemSet. Existing options will be extended/overwritten.\n * @param {Object} [options] The following options are available:\n * {String} type\n * Default type for the items. Choose from 'box'\n * (default), 'point', 'range', or 'background'.\n * The default style can be overwritten by\n * individual items.\n * {String} align\n * Alignment for the items, only applicable for\n * BoxItem. Choose 'center' (default), 'left', or\n * 'right'.\n * {String} orientation.item\n * Orientation of the item set. Choose 'top' or\n * 'bottom' (default).\n * {Function} groupOrder\n * A sorting function for ordering groups\n * {Boolean} stack\n * If true (default), items will be stacked on\n * top of each other.\n * {Number} margin.axis\n * Margin between the axis and the items in pixels.\n * Default is 20.\n * {Number} margin.item.horizontal\n * Horizontal margin between items in pixels.\n * Default is 10.\n * {Number} margin.item.vertical\n * Vertical Margin between items in pixels.\n * Default is 10.\n * {Number} margin.item\n * Margin between items in pixels in both horizontal\n * and vertical direction. Default is 10.\n * {Number} margin\n * Set margin for both axis and items in pixels.\n * {Boolean} selectable\n * If true (default), items can be selected.\n * {Boolean} multiselect\n * If true, multiple items can be selected.\n * False by default.\n * {Boolean} editable\n * Set all editable options to true or false\n * {Boolean} editable.updateTime\n * Allow dragging an item to an other moment in time\n * {Boolean} editable.updateGroup\n * Allow dragging an item to an other group\n * {Boolean} editable.add\n * Allow creating new items on double tap\n * {Boolean} editable.remove\n * Allow removing items by clicking the delete button\n * top right of a selected item.\n * {Function(item: Item, callback: Function)} onAdd\n * Callback function triggered when an item is about to be added:\n * when the user double taps an empty space in the Timeline.\n * {Function(item: Item, callback: Function)} onUpdate\n * Callback function fired when an item is about to be updated.\n * This function typically has to show a dialog where the user\n * change the item. If not implemented, nothing happens.\n * {Function(item: Item, callback: Function)} onMove\n * Fired when an item has been moved. If not implemented,\n * the move action will be accepted.\n * {Function(item: Item, callback: Function)} onRemove\n * Fired when an item is about to be deleted.\n * If not implemented, the item will be always removed.\n */\nItemSet.prototype.setOptions = function(options) {\n if (options) {\n // copy all options that we know\n var fields = [\n 'type', 'rtl', 'align', 'order', 'stack', 'stackSubgroups', 'selectable', 'multiselect', 'itemsAlwaysDraggable', \n 'multiselectPerGroup', 'groupOrder', 'dataAttributes', 'template', 'groupTemplate', 'visibleFrameTemplate',\n 'hide', 'snap', 'groupOrderSwap', 'tooltip', 'tooltipOnItemUpdateTime'\n ];\n util.selectiveExtend(fields, this.options, options);\n\n if ('orientation' in options) {\n if (typeof options.orientation === 'string') {\n this.options.orientation.item = options.orientation === 'top' ? 'top' : 'bottom';\n }\n else if (typeof options.orientation === 'object' && 'item' in options.orientation) {\n this.options.orientation.item = options.orientation.item;\n }\n }\n\n if ('margin' in options) {\n if (typeof options.margin === 'number') {\n this.options.margin.axis = options.margin;\n this.options.margin.item.horizontal = options.margin;\n this.options.margin.item.vertical = options.margin;\n }\n else if (typeof options.margin === 'object') {\n util.selectiveExtend(['axis'], this.options.margin, options.margin);\n if ('item' in options.margin) {\n if (typeof options.margin.item === 'number') {\n this.options.margin.item.horizontal = options.margin.item;\n this.options.margin.item.vertical = options.margin.item;\n }\n else if (typeof options.margin.item === 'object') {\n util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item);\n }\n }\n }\n }\n\n if ('editable' in options) {\n if (typeof options.editable === 'boolean') {\n this.options.editable.updateTime = options.editable;\n this.options.editable.updateGroup = options.editable;\n this.options.editable.add = options.editable;\n this.options.editable.remove = options.editable;\n this.options.editable.overrideItems = false;\n }\n else if (typeof options.editable === 'object') {\n util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove', 'overrideItems'], this.options.editable, options.editable);\n }\n }\n\n if ('groupEditable' in options) {\n if (typeof options.groupEditable === 'boolean') {\n this.options.groupEditable.order = options.groupEditable;\n this.options.groupEditable.add = options.groupEditable;\n this.options.groupEditable.remove = options.groupEditable;\n }\n else if (typeof options.groupEditable === 'object') {\n util.selectiveExtend(['order', 'add', 'remove'], this.options.groupEditable, options.groupEditable);\n }\n }\n\n // callback functions\n var addCallback = (function (name) {\n var fn = options[name];\n if (fn) {\n if (!(fn instanceof Function)) {\n throw new Error('option ' + name + ' must be a function ' + name + '(item, callback)');\n }\n this.options[name] = fn;\n }\n }).bind(this);\n ['onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving', 'onAddGroup', 'onMoveGroup', 'onRemoveGroup'].forEach(addCallback);\n\n // force the itemSet to refresh: options like orientation and margins may be changed\n this.markDirty();\n }\n};\n\n/**\n * Mark the ItemSet dirty so it will refresh everything with next redraw.\n * Optionally, all items can be marked as dirty and be refreshed.\n * @param {{refreshItems: boolean}} [options]\n */\nItemSet.prototype.markDirty = function(options) {\n this.groupIds = [];\n this.stackDirty = true;\n\n if (options && options.refreshItems) {\n util.forEach(this.items, function (item) {\n item.dirty = true;\n if (item.displayed) item.redraw();\n });\n }\n};\n\n/**\n * Destroy the ItemSet\n */\nItemSet.prototype.destroy = function() {\n this.hide();\n this.setItems(null);\n this.setGroups(null);\n\n this.hammer = null;\n\n this.body = null;\n this.conversion = null;\n};\n\n/**\n * Hide the component from the DOM\n */\nItemSet.prototype.hide = function() {\n // remove the frame containing the items\n if (this.dom.frame.parentNode) {\n this.dom.frame.parentNode.removeChild(this.dom.frame);\n }\n\n // remove the axis with dots\n if (this.dom.axis.parentNode) {\n this.dom.axis.parentNode.removeChild(this.dom.axis);\n }\n\n // remove the labelset containing all group labels\n if (this.dom.labelSet.parentNode) {\n this.dom.labelSet.parentNode.removeChild(this.dom.labelSet);\n }\n};\n\n/**\n * Show the component in the DOM (when not already visible).\n * @return {Boolean} changed\n */\nItemSet.prototype.show = function() {\n // show frame containing the items\n if (!this.dom.frame.parentNode) {\n this.body.dom.center.appendChild(this.dom.frame);\n }\n\n // show axis with dots\n if (!this.dom.axis.parentNode) {\n this.body.dom.backgroundVertical.appendChild(this.dom.axis);\n }\n\n // show labelset containing labels\n if (!this.dom.labelSet.parentNode) {\n if (this.options.rtl) {\n this.body.dom.right.appendChild(this.dom.labelSet);\n } else {\n this.body.dom.left.appendChild(this.dom.labelSet);\n }\n }\n};\n\n/**\n * Set selected items by their id. Replaces the current selection\n * Unknown id's are silently ignored.\n * @param {string[] | string} [ids] An array with zero or more id's of the items to be\n * selected, or a single item id. If ids is undefined\n * or an empty array, all items will be unselected.\n */\nItemSet.prototype.setSelection = function(ids) {\n var i, ii, id, item;\n\n if (ids == undefined) ids = [];\n if (!Array.isArray(ids)) ids = [ids];\n\n // unselect currently selected items\n for (i = 0, ii = this.selection.length; i < ii; i++) {\n id = this.selection[i];\n item = this.items[id];\n if (item) item.unselect();\n }\n\n // select items\n this.selection = [];\n for (i = 0, ii = ids.length; i < ii; i++) {\n id = ids[i];\n item = this.items[id];\n if (item) {\n this.selection.push(id);\n item.select();\n }\n }\n};\n\n/**\n * Get the selected items by their id\n * @return {Array} ids The ids of the selected items\n */\nItemSet.prototype.getSelection = function() {\n return this.selection.concat([]);\n};\n\n/**\n * Get the id's of the currently visible items.\n * @returns {Array} The ids of the visible items\n */\nItemSet.prototype.getVisibleItems = function() {\n var range = this.body.range.getRange();\n\n if (this.options.rtl) { \n var right = this.body.util.toScreen(range.start);\n var left = this.body.util.toScreen(range.end);\n } else {\n var left = this.body.util.toScreen(range.start);\n var right = this.body.util.toScreen(range.end);\n }\n\n var ids = [];\n for (var groupId in this.groups) {\n if (this.groups.hasOwnProperty(groupId)) {\n var group = this.groups[groupId];\n var rawVisibleItems = group.visibleItems;\n\n // filter the \"raw\" set with visibleItems into a set which is really\n // visible by pixels\n for (var i = 0; i < rawVisibleItems.length; i++) {\n var item = rawVisibleItems[i];\n // TODO: also check whether visible vertically\n if (this.options.rtl) { \n if ((item.right < left) && (item.right + item.width > right)) {\n ids.push(item.id);\n }\n } else {\n if ((item.left < right) && (item.left + item.width > left)) {\n ids.push(item.id);\n }\n }\n }\n }\n }\n\n return ids;\n};\n\n/**\n * Deselect a selected item\n * @param {String | Number} id\n * @private\n */\nItemSet.prototype._deselect = function(id) {\n var selection = this.selection;\n for (var i = 0, ii = selection.length; i < ii; i++) {\n if (selection[i] == id) { // non-strict comparison!\n selection.splice(i, 1);\n break;\n }\n }\n};\n\n/**\n * Repaint the component\n * @return {boolean} Returns true if the component is resized\n */\nItemSet.prototype.redraw = function() {\n var margin = this.options.margin,\n range = this.body.range,\n asSize = util.option.asSize,\n options = this.options,\n orientation = options.orientation.item,\n resized = false,\n frame = this.dom.frame;\n\n // recalculate absolute position (before redrawing groups)\n this.props.top = this.body.domProps.top.height + this.body.domProps.border.top;\n\n if (this.options.rtl) {\n this.props.right = this.body.domProps.right.width + this.body.domProps.border.right;\n } else {\n this.props.left = this.body.domProps.left.width + this.body.domProps.border.left;\n }\n\n // update class name\n frame.className = 'vis-itemset';\n\n // reorder the groups (if needed)\n resized = this._orderGroups() || resized;\n\n // check whether zoomed (in that case we need to re-stack everything)\n // TODO: would be nicer to get this as a trigger from Range\n var visibleInterval = range.end - range.start;\n var zoomed = (visibleInterval != this.lastVisibleInterval) || (this.props.width != this.props.lastWidth);\n if (zoomed) this.stackDirty = true;\n this.lastVisibleInterval = visibleInterval;\n this.props.lastWidth = this.props.width;\n\n var restack = this.stackDirty;\n var firstGroup = this._firstGroup();\n var firstMargin = {\n item: margin.item,\n axis: margin.axis\n };\n var nonFirstMargin = {\n item: margin.item,\n axis: margin.item.vertical / 2\n };\n var height = 0;\n var minHeight = margin.axis + margin.item.vertical;\n\n // redraw the background group\n this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack);\n\n // redraw all regular groups\n util.forEach(this.groups, function (group) {\n var groupMargin = (group == firstGroup) ? firstMargin : nonFirstMargin;\n var groupResized = group.redraw(range, groupMargin, restack);\n resized = groupResized || resized;\n height += group.height;\n });\n height = Math.max(height, minHeight);\n this.stackDirty = false;\n\n // update frame height\n frame.style.height = asSize(height);\n\n // calculate actual size\n this.props.width = frame.offsetWidth;\n this.props.height = height;\n\n // reposition axis\n this.dom.axis.style.top = asSize((orientation == 'top') ?\n (this.body.domProps.top.height + this.body.domProps.border.top) :\n (this.body.domProps.top.height + this.body.domProps.centerContainer.height));\n if (this.options.rtl) {\n this.dom.axis.style.right = '0';\n } else {\n this.dom.axis.style.left = '0';\n }\n\n this.initialItemSetDrawn = true;\n // check if this component is resized\n resized = this._isResized() || resized;\n\n return resized;\n};\n\n/**\n * Get the first group, aligned with the axis\n * @return {Group | null} firstGroup\n * @private\n */\nItemSet.prototype._firstGroup = function() {\n var firstGroupIndex = (this.options.orientation.item == 'top') ? 0 : (this.groupIds.length - 1);\n var firstGroupId = this.groupIds[firstGroupIndex];\n var firstGroup = this.groups[firstGroupId] || this.groups[UNGROUPED];\n\n return firstGroup || null;\n};\n\n/**\n * Create or delete the group holding all ungrouped items. This group is used when\n * there are no groups specified.\n * @protected\n */\nItemSet.prototype._updateUngrouped = function() {\n var ungrouped = this.groups[UNGROUPED];\n var background = this.groups[BACKGROUND];\n var item, itemId;\n\n if (this.groupsData) {\n // remove the group holding all ungrouped items\n if (ungrouped) {\n ungrouped.hide();\n delete this.groups[UNGROUPED];\n\n for (itemId in this.items) {\n if (this.items.hasOwnProperty(itemId)) {\n item = this.items[itemId];\n item.parent && item.parent.remove(item);\n var groupId = this._getGroupId(item.data);\n var group = this.groups[groupId];\n group && group.add(item) || item.hide();\n }\n }\n }\n }\n else {\n // create a group holding all (unfiltered) items\n if (!ungrouped) {\n var id = null;\n var data = null;\n ungrouped = new Group(id, data, this);\n this.groups[UNGROUPED] = ungrouped;\n\n for (itemId in this.items) {\n if (this.items.hasOwnProperty(itemId)) {\n item = this.items[itemId];\n ungrouped.add(item);\n }\n }\n\n ungrouped.show();\n }\n }\n};\n\n/**\n * Get the element for the labelset\n * @return {HTMLElement} labelSet\n */\nItemSet.prototype.getLabelSet = function() {\n return this.dom.labelSet;\n};\n\n/**\n * Set items\n * @param {vis.DataSet | null} items\n */\nItemSet.prototype.setItems = function(items) {\n var me = this,\n ids,\n oldItemsData = this.itemsData;\n\n // replace the dataset\n if (!items) {\n this.itemsData = null;\n }\n else if (items instanceof DataSet || items instanceof DataView) {\n this.itemsData = items;\n }\n else {\n throw new TypeError('Data must be an instance of DataSet or DataView');\n }\n\n if (oldItemsData) {\n // unsubscribe from old dataset\n util.forEach(this.itemListeners, function (callback, event) {\n oldItemsData.off(event, callback);\n });\n\n // remove all drawn items\n ids = oldItemsData.getIds();\n this._onRemove(ids);\n }\n\n if (this.itemsData) {\n // subscribe to new dataset\n var id = this.id;\n util.forEach(this.itemListeners, function (callback, event) {\n me.itemsData.on(event, callback, id);\n });\n\n // add all new items\n ids = this.itemsData.getIds();\n this._onAdd(ids);\n\n // update the group holding all ungrouped items\n this._updateUngrouped();\n }\n\n this.body.emitter.emit('_change', {queue: true});\n};\n\n/**\n * Get the current items\n * @returns {vis.DataSet | null}\n */\nItemSet.prototype.getItems = function() {\n return this.itemsData;\n};\n\n/**\n * Set groups\n * @param {vis.DataSet} groups\n */\nItemSet.prototype.setGroups = function(groups) {\n var me = this,\n ids;\n\n // unsubscribe from current dataset\n if (this.groupsData) {\n util.forEach(this.groupListeners, function (callback, event) {\n me.groupsData.off(event, callback);\n });\n\n // remove all drawn groups\n ids = this.groupsData.getIds();\n this.groupsData = null;\n this._onRemoveGroups(ids); // note: this will cause a redraw\n }\n\n // replace the dataset\n if (!groups) {\n this.groupsData = null;\n }\n else if (groups instanceof DataSet || groups instanceof DataView) {\n this.groupsData = groups;\n }\n else {\n throw new TypeError('Data must be an instance of DataSet or DataView');\n }\n\n if (this.groupsData) {\n // go over all groups nesting\n var groupsData = this.groupsData;\n if (this.groupsData instanceof DataView) {\n groupsData = this.groupsData.getDataSet()\n }\n\n groupsData.get().forEach(function(group){\n if (group.nestedGroups) {\n group.nestedGroups.forEach(function(nestedGroupId) {\n var updatedNestedGroup = groupsData.get(nestedGroupId);\n updatedNestedGroup.nestedInGroup = group.id;\n if (group.showNested == false) {\n updatedNestedGroup.visible = false;\n }\n groupsData.update(updatedNestedGroup);\n })\n }\n })\n\n\n // subscribe to new dataset\n var id = this.id;\n util.forEach(this.groupListeners, function (callback, event) {\n me.groupsData.on(event, callback, id);\n });\n\n // draw all ms\n ids = this.groupsData.getIds();\n this._onAddGroups(ids);\n }\n\n // update the group holding all ungrouped items\n this._updateUngrouped();\n\n // update the order of all items in each group\n this._order();\n\n this.body.emitter.emit('_change', {queue: true});\n};\n\n/**\n * Get the current groups\n * @returns {vis.DataSet | null} groups\n */\nItemSet.prototype.getGroups = function() {\n return this.groupsData;\n};\n\n/**\n * Remove an item by its id\n * @param {String | Number} id\n */\nItemSet.prototype.removeItem = function(id) {\n var item = this.itemsData.get(id),\n dataset = this.itemsData.getDataSet(),\n itemObj = this.items[id];\n\n if (item) {\n // confirm deletion\n this.options.onRemove(item, function (item) {\n if (item) {\n // remove by id here, it is possible that an item has no id defined\n // itself, so better not delete by the item itself\n dataset.remove(id);\n\n // Remove it's popup\n if (itemObj.popup) {\n itemObj.popup.destroy();\n itemObj.popup = null;\n }\n }\n });\n }\n};\n\n/**\n * Get the time of an item based on it's data and options.type\n * @param {Object} itemData\n * @returns {string} Returns the type\n * @private\n */\nItemSet.prototype._getType = function (itemData) {\n return itemData.type || this.options.type || (itemData.end ? 'range' : 'box');\n};\n\n\n/**\n * Get the group id for an item\n * @param {Object} itemData\n * @returns {string} Returns the groupId\n * @private\n */\nItemSet.prototype._getGroupId = function (itemData) {\n var type = this._getType(itemData);\n if (type == 'background' && itemData.group == undefined) {\n return BACKGROUND;\n }\n else {\n return this.groupsData ? itemData.group : UNGROUPED;\n }\n};\n\n/**\n * Handle updated items\n * @param {Number[]} ids\n * @protected\n */\nItemSet.prototype._onUpdate = function(ids) {\n var me = this;\n\n ids.forEach(function (id) {\n var itemData = me.itemsData.get(id, me.itemOptions);\n var item = me.items[id];\n var type = itemData ? me._getType(itemData) : null;\n\n var constructor = ItemSet.types[type];\n var selected;\n\n if (item) {\n // update item \t\n if (!constructor || !(item instanceof constructor)) {\n // item type has changed, delete the item and recreate it\n selected = item.selected; // preserve selection of this item\n me._removeItem(item);\n item = null;\n }\n else {\n me._updateItem(item, itemData);\n }\n }\n\n if (!item && itemData) {\n // create item\n if (constructor) {\n item = new constructor(itemData, me.conversion, me.options);\n item.id = id; // TODO: not so nice setting id afterwards\n\n me._addItem(item);\n if (selected) {\n this.selection.push(id);\n item.select();\n }\n }\n else if (type == 'rangeoverflow') {\n // TODO: deprecated since version 2.1.0 (or 3.0.0?). cleanup some day\n throw new TypeError('Item type \"rangeoverflow\" is deprecated. Use css styling instead: ' +\n '.vis-item.vis-range .vis-item-content {overflow: visible;}');\n }\n else {\n throw new TypeError('Unknown item type \"' + type + '\"');\n }\n }\n }.bind(this));\n\n this._order();\n this.stackDirty = true; // force re-stacking of all items next redraw\n this.body.emitter.emit('_change', {queue: true});\n};\n\n/**\n * Handle added items\n * @param {Number[]} ids\n * @protected\n */\nItemSet.prototype._onAdd = ItemSet.prototype._onUpdate;\n\n/**\n * Handle removed items\n * @param {Number[]} ids\n * @protected\n */\nItemSet.prototype._onRemove = function(ids) {\n var count = 0;\n var me = this;\n ids.forEach(function (id) {\n var item = me.items[id];\n if (item) {\n count++;\n me._removeItem(item);\n }\n });\n\n if (count) {\n // update order\n this._order();\n this.stackDirty = true; // force re-stacking of all items next redraw\n this.body.emitter.emit('_change', {queue: true});\n }\n};\n\n/**\n * Update the order of item in all groups\n * @private\n */\nItemSet.prototype._order = function() {\n // reorder the items in all groups\n // TODO: optimization: only reorder groups affected by the changed items\n util.forEach(this.groups, function (group) {\n group.order();\n });\n};\n\n/**\n * Handle updated groups\n * @param {Number[]} ids\n * @private\n */\nItemSet.prototype._onUpdateGroups = function(ids) {\n this._onAddGroups(ids);\n};\n\n/**\n * Handle changed groups (added or updated)\n * @param {Number[]} ids\n * @private\n */\nItemSet.prototype._onAddGroups = function(ids) {\n var me = this;\n\n ids.forEach(function (id) {\n var groupData = me.groupsData.get(id);\n var group = me.groups[id];\n\n if (!group) {\n // check for reserved ids\n if (id == UNGROUPED || id == BACKGROUND) {\n throw new Error('Illegal group id. ' + id + ' is a reserved id.');\n }\n\n var groupOptions = Object.create(me.options);\n util.extend(groupOptions, {\n height: null\n });\n\n group = new Group(id, groupData, me);\n me.groups[id] = group;\n\n // add items with this groupId to the new group\n for (var itemId in me.items) {\n if (me.items.hasOwnProperty(itemId)) {\n var item = me.items[itemId];\n if (item.data.group == id) {\n group.add(item);\n }\n }\n }\n\n group.order();\n group.show();\n }\n else {\n // update group\n group.setData(groupData);\n }\n });\n\n this.body.emitter.emit('_change', {queue: true});\n};\n\n/**\n * Handle removed groups\n * @param {Number[]} ids\n * @private\n */\nItemSet.prototype._onRemoveGroups = function(ids) {\n var groups = this.groups;\n ids.forEach(function (id) {\n var group = groups[id];\n\n if (group) {\n group.hide();\n delete groups[id];\n }\n });\n\n this.markDirty();\n\n this.body.emitter.emit('_change', {queue: true});\n};\n\n/**\n * Reorder the groups if needed\n * @return {boolean} changed\n * @private\n */\nItemSet.prototype._orderGroups = function () {\n if (this.groupsData) {\n // reorder the groups\n var groupIds = this.groupsData.getIds({\n order: this.options.groupOrder\n });\n\n groupIds = this._orderNestedGroups(groupIds);\n\n var changed = !util.equalArray(groupIds, this.groupIds);\n if (changed) {\n // hide all groups, removes them from the DOM\n var groups = this.groups;\n groupIds.forEach(function (groupId) {\n groups[groupId].hide();\n });\n\n // show the groups again, attach them to the DOM in correct order\n groupIds.forEach(function (groupId) {\n groups[groupId].show();\n });\n\n this.groupIds = groupIds;\n }\n\n return changed;\n }\n else {\n return false;\n }\n};\n\n/**\n * Reorder the nested groups\n * @return {boolean} changed\n * @private\n */\nItemSet.prototype._orderNestedGroups = function(groupIds) {\n var newGroupIdsOrder = [];\n\n groupIds.forEach(function(groupId){\n var groupData = this.groupsData.get(groupId);\n if (!groupData.nestedInGroup) {\n newGroupIdsOrder.push(groupId)\n }\n if (groupData.nestedGroups) {\n var nestedGroups = this.groupsData.get({\n filter: function(nestedGroup) {\n return nestedGroup.nestedInGroup == groupId;\n }\n });\n var nestedGroupIds = nestedGroups.map(function(nestedGroup) { return nestedGroup.id })\n newGroupIdsOrder = newGroupIdsOrder.concat(nestedGroupIds);\n }\n }, this)\n return newGroupIdsOrder;\n}\n\n\n/**\n * Add a new item\n * @param {Item} item\n * @private\n */\nItemSet.prototype._addItem = function(item) {\n this.items[item.id] = item;\n\n // add to group\n var groupId = this._getGroupId(item.data);\n var group = this.groups[groupId];\n\n if (!group) {\n \titem.groupShowing = false;\n } else if (group && group.data && group.data.showNested) {\n \titem.groupShowing = true;\n }\n\n if (group) group.add(item);\n};\n\n/**\n * Update an existing item\n * @param {Item} item\n * @param {Object} itemData\n * @private\n */\nItemSet.prototype._updateItem = function(item, itemData) {\n var oldGroupId = item.data.group;\n var oldSubGroupId = item.data.subgroup;\n\n // update the items data (will redraw the item when displayed)\n item.setData(itemData);\n\n var groupId = this._getGroupId(item.data);\n\tvar group = this.groups[groupId];\n if (!group) {\n \titem.groupShowing = false;\n } else if (group && group.data && group.data.showNested) {\n \titem.groupShowing = true;\n }\n // update group\n if (oldGroupId != item.data.group || oldSubGroupId != item.data.subgroup) {\n var oldGroup = this.groups[oldGroupId];\n if (oldGroup) oldGroup.remove(item);\n if (group) group.add(item);\n }\n};\n\n/**\n * Delete an item from the ItemSet: remove it from the DOM, from the map\n * with items, and from the map with visible items, and from the selection\n * @param {Item} item\n * @private\n */\nItemSet.prototype._removeItem = function(item) {\n // remove from DOM\n item.hide();\n\n // remove from items\n delete this.items[item.id];\n\n // remove from selection\n var index = this.selection.indexOf(item.id);\n if (index != -1) this.selection.splice(index, 1);\n\n // remove from group\n item.parent && item.parent.remove(item);\n};\n\n/**\n * Create an array containing all items being a range (having an end date)\n * @param array\n * @returns {Array}\n * @private\n */\nItemSet.prototype._constructByEndArray = function(array) {\n var endArray = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i] instanceof RangeItem) {\n endArray.push(array[i]);\n }\n }\n return endArray;\n};\n\n/**\n * Register the clicked item on touch, before dragStart is initiated.\n *\n * dragStart is initiated from a mousemove event, AFTER the mouse/touch is\n * already moving. Therefore, the mouse/touch can sometimes be above an other\n * DOM element than the item itself.\n *\n * @param {Event} event\n * @private\n */\nItemSet.prototype._onTouch = function (event) {\n // store the touched item, used in _onDragStart\n this.touchParams.item = this.itemFromTarget(event);\n this.touchParams.dragLeftItem = event.target.dragLeftItem || false;\n this.touchParams.dragRightItem = event.target.dragRightItem || false;\n this.touchParams.itemProps = null;\n};\n\n\n/**\n * Given an group id, returns the index it has.\n *\n * @param {Number} groupID\n * @private\n */\nItemSet.prototype._getGroupIndex = function(groupId) {\n for (var i = 0; i < this.groupIds.length; i++) {\n if (groupId == this.groupIds[i])\n return i;\n }\n};\n\n/**\n * Start dragging the selected events\n * @param {Event} event\n * @private\n */\nItemSet.prototype._onDragStart = function (event) {\n if (this.touchParams.itemIsDragging) { return; }\n var item = this.touchParams.item || null;\n var me = this;\n var props;\n\n if (item && (item.selected || this.options.itemsAlwaysDraggable)) {\n\n if (this.options.editable.overrideItems &&\n !this.options.editable.updateTime &&\n !this.options.editable.updateGroup) {\n return;\n }\n\n // override options.editable\n if ((item.editable != null && !item.editable.updateTime && !item.editable.updateGroup)\n && !this.options.editable.overrideItems) {\n return;\n }\n\n var dragLeftItem = this.touchParams.dragLeftItem;\n var dragRightItem = this.touchParams.dragRightItem;\n this.touchParams.itemIsDragging = true;\n this.touchParams.selectedItem = item;\n\n if (dragLeftItem) {\n props = {\n item: dragLeftItem,\n initialX: event.center.x,\n dragLeft: true,\n data: this._cloneItemData(item.data)\n };\n\n this.touchParams.itemProps = [props];\n }\n else if (dragRightItem) {\n props = {\n item: dragRightItem,\n initialX: event.center.x,\n dragRight: true,\n data: this._cloneItemData(item.data)\n };\n\n this.touchParams.itemProps = [props];\n }\n else {\n var baseGroupIndex = this._getGroupIndex(item.data.group);\n\n var itemsToDrag = (this.options.itemsAlwaysDraggable && !item.selected) ? [item.id] : this.getSelection();\n\n this.touchParams.itemProps = itemsToDrag.map(function (id) {\n var item = me.items[id];\n var groupIndex = me._getGroupIndex(item.data.group);\n return {\n item: item,\n initialX: event.center.x,\n groupOffset: baseGroupIndex-groupIndex,\n data: this._cloneItemData(item.data)\n };\n }.bind(this));\n }\n\n event.stopPropagation();\n }\n else if (this.options.editable.add && (event.srcEvent.ctrlKey || event.srcEvent.metaKey)) {\n // create a new range item when dragging with ctrl key down\n this._onDragStartAddItem(event);\n }\n};\n\n/**\n * Start creating a new range item by dragging.\n * @param {Event} event\n * @private\n */\nItemSet.prototype._onDragStartAddItem = function (event) {\n var snap = this.options.snap || null;\n\n if (this.options.rtl) {\n var xAbs = util.getAbsoluteRight(this.dom.frame);\n var x = xAbs - event.center.x + 10; // plus 10 to compensate for the drag starting as soon as you've moved 10px\n } else {\n var xAbs = util.getAbsoluteLeft(this.dom.frame);\n var x = event.center.x - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px\n }\n\n var time = this.body.util.toTime(x);\n var scale = this.body.util.getScale();\n var step = this.body.util.getStep();\n var start = snap ? snap(time, scale, step) : time;\n var end = start;\n\n var itemData = {\n type: 'range',\n start: start,\n end: end,\n content: 'new item'\n };\n\n var id = util.randomUUID();\n itemData[this.itemsData._fieldId] = id;\n\n var group = this.groupFromTarget(event);\n if (group) {\n itemData.group = group.groupId;\n }\n var newItem = new RangeItem(itemData, this.conversion, this.options);\n newItem.id = id; // TODO: not so nice setting id afterwards\n newItem.data = this._cloneItemData(itemData);\n this._addItem(newItem);\n this.touchParams.selectedItem = newItem;\n \n var props = {\n item: newItem,\n initialX: event.center.x,\n data: newItem.data\n };\n\n if (this.options.rtl) {\n props.dragLeft = true;\n } else {\n props.dragRight = true;\n }\n this.touchParams.itemProps = [props];\n\n event.stopPropagation();\n};\n\n/**\n * Drag selected items\n * @param {Event} event\n * @private\n */\nItemSet.prototype._onDrag = function (event) {\n if (this.touchParams.itemProps) {\n event.stopPropagation();\n\n var me = this;\n var snap = this.options.snap || null;\n\n if (this.options.rtl) {\n var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.right.width;\n } else {\n var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width;\n }\n\n var scale = this.body.util.getScale();\n var step = this.body.util.getStep();\n\n //only calculate the new group for the item that's actually dragged\n var selectedItem = this.touchParams.selectedItem;\n var updateGroupAllowed = ((this.options.editable.overrideItems || selectedItem.editable == null) && this.options.editable.updateGroup) ||\n (!this.options.editable.overrideItems && selectedItem.editable != null && selectedItem.editable.updateGroup);\n var newGroupBase = null;\n if (updateGroupAllowed && selectedItem) {\n if (selectedItem.data.group != undefined) {\n // drag from one group to another\n var group = me.groupFromTarget(event);\n if (group) {\n //we know the offset for all items, so the new group for all items\n //will be relative to this one.\n newGroupBase = this._getGroupIndex(group.groupId);\n }\n }\n }\n\n // move\n this.touchParams.itemProps.forEach(function (props) {\n var current = me.body.util.toTime(event.center.x - xOffset);\n var initial = me.body.util.toTime(props.initialX - xOffset);\n\n if (this.options.rtl) {\n var offset = -(current - initial); // ms\n } else {\n var offset = (current - initial); // ms\n }\n\n var itemData = this._cloneItemData(props.item.data); // clone the data\n if (props.item.editable != null\n && !props.item.editable.updateTime\n && !props.item.editable.updateGroup\n && !me.options.editable.overrideItems) {\n return;\n }\n\n var updateTimeAllowed = ((this.options.editable.overrideItems || selectedItem.editable == null) && this.options.editable.updateTime) ||\n (!this.options.editable.overrideItems && selectedItem.editable != null && selectedItem.editable.updateTime);\n if (updateTimeAllowed) {\n if (props.dragLeft) {\n // drag left side of a range item\n if (this.options.rtl) {\n if (itemData.end != undefined) {\n var initialEnd = util.convert(props.data.end, 'Date');\n var end = new Date(initialEnd.valueOf() + offset);\n // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n itemData.end = snap ? snap(end, scale, step) : end;\n }\n } else {\n if (itemData.start != undefined) {\n var initialStart = util.convert(props.data.start, 'Date');\n var start = new Date(initialStart.valueOf() + offset);\n // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n itemData.start = snap ? snap(start, scale, step) : start;\n }\n }\n }\n else if (props.dragRight) {\n // drag right side of a range item\n if (this.options.rtl) {\n if (itemData.start != undefined) {\n var initialStart = util.convert(props.data.start, 'Date');\n var start = new Date(initialStart.valueOf() + offset);\n // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n itemData.start = snap ? snap(start, scale, step) : start;\n }\n } else {\n if (itemData.end != undefined) {\n var initialEnd = util.convert(props.data.end, 'Date');\n var end = new Date(initialEnd.valueOf() + offset);\n // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n itemData.end = snap ? snap(end, scale, step) : end;\n }\n }\n }\n else {\n // drag both start and end\n if (itemData.start != undefined) {\n\n var initialStart = util.convert(props.data.start, 'Date').valueOf();\n var start = new Date(initialStart + offset);\n\n if (itemData.end != undefined) {\n var initialEnd = util.convert(props.data.end, 'Date');\n var duration = initialEnd.valueOf() - initialStart.valueOf();\n\n // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n itemData.start = snap ? snap(start, scale, step) : start;\n itemData.end = new Date(itemData.start.valueOf() + duration);\n }\n else {\n // TODO: pass a Moment instead of a Date to snap(). (Breaking change)\n itemData.start = snap ? snap(start, scale, step) : start;\n }\n\n\n }\n }\n }\n\n\n if (updateGroupAllowed && (!props.dragLeft && !props.dragRight) && newGroupBase!=null) {\n if (itemData.group != undefined) {\n var newOffset = newGroupBase - props.groupOffset;\n\n //make sure we stay in bounds\n newOffset = Math.max(0, newOffset);\n newOffset = Math.min(me.groupIds.length-1, newOffset);\n\n itemData.group = me.groupIds[newOffset];\n }\n }\n\n // confirm moving the item\n itemData = this._cloneItemData(itemData); // convert start and end to the correct type\n me.options.onMoving(itemData, function (itemData) {\n if (itemData) {\n props.item.setData(this._cloneItemData(itemData, 'Date'));\n }\n }.bind(this));\n }.bind(this));\n\n this.stackDirty = true; // force re-stacking of all items next redraw\n this.body.emitter.emit('_change');\n }\n};\n\n/**\n * Move an item to another group\n * @param {Item} item\n * @param {String | Number} groupId\n * @private\n */\nItemSet.prototype._moveToGroup = function(item, groupId) {\n var group = this.groups[groupId];\n if (group && group.groupId != item.data.group) {\n var oldGroup = item.parent;\n oldGroup.remove(item);\n oldGroup.order();\n group.add(item);\n group.order();\n\n item.data.group = group.groupId;\n }\n};\n\n/**\n * End of dragging selected items\n * @param {Event} event\n * @private\n */\nItemSet.prototype._onDragEnd = function (event) {\n this.touchParams.itemIsDragging = false;\n if (this.touchParams.itemProps) {\n event.stopPropagation();\n\n var me = this;\n var dataset = this.itemsData.getDataSet();\n var itemProps = this.touchParams.itemProps ;\n this.touchParams.itemProps = null;\n\n itemProps.forEach(function (props) {\n var id = props.item.id;\n var exists = me.itemsData.get(id, me.itemOptions) != null;\n\n if (!exists) {\n // add a new item\n me.options.onAdd(props.item.data, function (itemData) {\n me._removeItem(props.item); // remove temporary item\n if (itemData) {\n me.itemsData.getDataSet().add(itemData);\n }\n\n // force re-stacking of all items next redraw\n me.stackDirty = true;\n me.body.emitter.emit('_change');\n });\n }\n else {\n // update existing item\n var itemData = this._cloneItemData(props.item.data); // convert start and end to the correct type\n me.options.onMove(itemData, function (itemData) {\n if (itemData) {\n // apply changes\n itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined)\n dataset.update(itemData);\n }\n else {\n // restore original values\n props.item.setData(props.data);\n\n me.stackDirty = true; // force re-stacking of all items next redraw\n me.body.emitter.emit('_change');\n }\n });\n }\n }.bind(this));\n }\n};\n\nItemSet.prototype._onGroupClick = function (event) {\n var group = this.groupFromTarget(event);\n\n if (!group.nestedGroups) return;\n\n var groupsData = this.groupsData;\n if (this.groupsData instanceof DataView) {\n groupsData = this.groupsData.getDataSet()\n }\n\n group.showNested = !group.showNested;\n\n var nestedGroups = groupsData.get(group.nestedGroups).map(function(nestedGroup) {\n if (nestedGroup.visible == undefined) { nestedGroup.visible = true; }\n nestedGroup.visible = !!group.showNested;\n return nestedGroup;\n });\n groupsData.update(nestedGroups);\n\n if (group.showNested) {\n util.removeClassName(group.dom.label, 'collapsed');\n util.addClassName(group.dom.label, 'expanded');\n } else {\n util.removeClassName(group.dom.label, 'expanded');\n var collapsedDirClassName = this.options.rtl ? 'collapsed-rtl' : 'collapsed'\n util.addClassName(group.dom.label, collapsedDirClassName);\n }\n}\n\nItemSet.prototype._onGroupDragStart = function (event) {\n\tif (this.options.groupEditable.order) {\n\t\tthis.groupTouchParams.group = this.groupFromTarget(event);\n\t\t\n\t\tif (this.groupTouchParams.group) {\n\t\t\tevent.stopPropagation();\n\t\t\t\n\t\t\tthis.groupTouchParams.originalOrder = this.groupsData.getIds({\n\t\t\t order: this.options.groupOrder\n\t\t });\n\t\t}\n\t}\n}\n\nItemSet.prototype._onGroupDrag = function (event) {\n\tif (this.options.groupEditable.order && this.groupTouchParams.group) {\n\t\tevent.stopPropagation();\n\t\t\n var groupsData = this.groupsData;\n if (this.groupsData instanceof DataView) {\n groupsData = this.groupsData.getDataSet()\n }\n\t\t// drag from one group to another\n\t\tvar group = this.groupFromTarget(event);\n\t\t\n\t\t// try to avoid toggling when groups differ in height\n\t\tif (group && group.height != this.groupTouchParams.group.height) {\n\t\t\tvar movingUp = (group.top < this.groupTouchParams.group.top);\n\t\t\tvar clientY = event.center ? event.center.y : event.clientY;\n\t\t\tvar targetGroupTop = util.getAbsoluteTop(group.dom.foreground);\n\t\t\tvar draggedGroupHeight = this.groupTouchParams.group.height;\n\t\t\tif (movingUp) {\n\t\t\t\t// skip swapping the groups when the dragged group is not below clientY afterwards\n\t\t\t\tif (targetGroupTop + draggedGroupHeight < clientY) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar targetGroupHeight = group.height;\n\t\t\t\t// skip swapping the groups when the dragged group is not below clientY afterwards\n\t\t\t\tif (targetGroupTop + targetGroupHeight - draggedGroupHeight > clientY) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (group && group != this.groupTouchParams.group) {\n\t\t\tvar targetGroup = groupsData.get(group.groupId);\n\t\t\tvar draggedGroup = groupsData.get(this.groupTouchParams.group.groupId);\n\t\t\t\n\t\t\t// switch groups\n\t\t\tif (draggedGroup && targetGroup) {\n\t\t\t\tthis.options.groupOrderSwap(draggedGroup, targetGroup, groupsData);\n\t\t\t\tgroupsData.update(draggedGroup);\n\t\t\t\tgroupsData.update(targetGroup);\n\t\t\t}\n\t\t\t\n\t\t\t// fetch current order of groups\n\t\t\tvar newOrder = groupsData.getIds({\n\t\t\t order: this.options.groupOrder\n\t\t });\n\n\t\t\t\n\t\t\t// in case of changes since _onGroupDragStart\n\t\t\tif (!util.equalArray(newOrder, this.groupTouchParams.originalOrder)) {\n\t\t\t\tvar origOrder = this.groupTouchParams.originalOrder;\n\t\t\t\tvar draggedId = this.groupTouchParams.group.groupId;\n\t\t\t\tvar numGroups = Math.min(origOrder.length, newOrder.length);\n\t\t\t\tvar curPos = 0;\n\t\t\t\tvar newOffset = 0;\n\t\t\t\tvar orgOffset = 0;\n\t\t\t\twhile (curPos < numGroups) {\n\t\t\t\t\t// as long as the groups are where they should be step down along the groups order\n\t\t\t\t\twhile ((curPos+newOffset) < numGroups \n\t\t\t\t\t\t&& (curPos+orgOffset) < numGroups \n\t\t\t\t\t\t&& newOrder[curPos+newOffset] == origOrder[curPos+orgOffset]) {\n\t\t\t\t\t\tcurPos++;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// all ok\n\t\t\t\t\tif (curPos+newOffset >= numGroups) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// not all ok\n\t\t\t\t\t// if dragged group was move upwards everything below should have an offset\n\t\t\t\t\tif (newOrder[curPos+newOffset] == draggedId) {\n\t\t\t\t\t\tnewOffset = 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t// if dragged group was move downwards everything above should have an offset\n\t\t\t\t\telse if (origOrder[curPos+orgOffset] == draggedId) {\n\t\t\t\t\t\torgOffset = 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} \n\t\t\t\t\t// found a group (apart from dragged group) that has the wrong position -> switch with the \n\t\t\t\t\t// group at the position where other one should be, fix index arrays and continue\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar slippedPosition = newOrder.indexOf(origOrder[curPos+orgOffset])\n\t\t\t\t\t\tvar switchGroup = groupsData.get(newOrder[curPos+newOffset]);\n\t\t\t\t\t\tvar shouldBeGroup = groupsData.get(origOrder[curPos+orgOffset]);\n\t\t\t\t\t\tthis.options.groupOrderSwap(switchGroup, shouldBeGroup, groupsData);\n\t\t\t\t\t\tgroupsData.update(switchGroup);\n\t\t\t\t\t\tgroupsData.update(shouldBeGroup);\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar switchGroupId = newOrder[curPos+newOffset];\n\t\t\t\t\t\tnewOrder[curPos+newOffset] = origOrder[curPos+orgOffset];\n\t\t\t\t\t\tnewOrder[slippedPosition] = switchGroupId;\n\t\t\t\t\t\t\n\t\t\t\t\t\tcurPos++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n}\n\nItemSet.prototype._onGroupDragEnd = function (event) {\n\tif (this.options.groupEditable.order && this.groupTouchParams.group) {\n\t\tevent.stopPropagation();\n\t\t\n\t\t// update existing group\n\t\tvar me = this;\n\t\tvar id = me.groupTouchParams.group.groupId;\n\t\tvar dataset = me.groupsData.getDataSet();\n var groupData = util.extend({}, dataset.get(id)); // clone the data\n me.options.onMoveGroup(groupData, function (groupData) {\n if (groupData) {\n // apply changes\n \tgroupData[dataset._fieldId] = id; // ensure the group contains its id (can be undefined)\n dataset.update(groupData);\n }\n else {\n \t \n \t// fetch current order of groups\n \t\t\tvar newOrder = dataset.getIds({\n \t\t\t order: me.options.groupOrder\n \t\t });\n \t \n // restore original order\n \tif (!util.equalArray(newOrder, me.groupTouchParams.originalOrder)) {\n \t\tvar origOrder = me.groupTouchParams.originalOrder;\n \t\t\t\tvar numGroups = Math.min(origOrder.length, newOrder.length);\n \t\t\t\tvar curPos = 0;\n \t\t\t\twhile (curPos < numGroups) {\n \t\t\t\t\t// as long as the groups are where they should be step down along the groups order\n \t\t\t\t\twhile (curPos < numGroups && newOrder[curPos] == origOrder[curPos]) {\n \t\t\t\t\t curPos++;\n \t\t\t\t\t}\n \t\t\t\t\t\n \t\t\t\t\t// all ok\n \t\t\t\t\tif (curPos >= numGroups) {\n \t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n \t\t\t\t\t\n\t\t\t\t\t\t// found a group that has the wrong position -> switch with the \n\t\t\t\t\t\t// group at the position where other one should be, fix index arrays and continue\n\t\t\t\t\t\tvar slippedPosition = newOrder.indexOf(origOrder[curPos])\n\t\t\t\t\t\tvar switchGroup = dataset.get(newOrder[curPos]);\n\t\t\t\t\t\tvar shouldBeGroup = dataset.get(origOrder[curPos]);\n\t\t\t\t\t\tme.options.groupOrderSwap(switchGroup, shouldBeGroup, dataset);\n\t\t\t\t\t\tgroupsData.update(switchGroup);\n\t\t\t\t\t\tgroupsData.update(shouldBeGroup);\n \t\t\t\t\t\t\n \t\t\t\t\tvar switchGroupId = newOrder[curPos];\n \t\t\t\t\tnewOrder[curPos] = origOrder[curPos];\n \t\t\t\t\tnewOrder[slippedPosition] = switchGroupId;\n \t\t\t\t\t\t\n \t\t\t\t\tcurPos++;\n \t\t\t\t}\n \t\t\t}\n\n }\n });\n \n me.body.emitter.emit('groupDragged', { groupId: id });\n\t}\n}\n\n/**\n * Handle selecting/deselecting an item when tapping it\n * @param {Event} event\n * @private\n */\nItemSet.prototype._onSelectItem = function (event) {\n if (!this.options.selectable) return;\n\n var ctrlKey = event.srcEvent && (event.srcEvent.ctrlKey || event.srcEvent.metaKey);\n var shiftKey = event.srcEvent && event.srcEvent.shiftKey;\n if (ctrlKey || shiftKey) {\n this._onMultiSelectItem(event);\n return;\n }\n\n var oldSelection = this.getSelection();\n\n var item = this.itemFromTarget(event);\n var selection = item ? [item.id] : [];\n this.setSelection(selection);\n\n var newSelection = this.getSelection();\n\n // emit a select event,\n // except when old selection is empty and new selection is still empty\n if (newSelection.length > 0 || oldSelection.length > 0) {\n this.body.emitter.emit('select', {\n items: newSelection,\n event: util.elementsCensor(event)\n });\n }\n};\n\n/**\n * Handle hovering an item\n * @param {Event} event\n * @private\n */\nItemSet.prototype._onMouseOver = function (event) {\n var item = this.itemFromTarget(event);\n if (!item) return;\n\n // Item we just left\n var related = this.itemFromRelatedTarget(event);\n if (item === related) {\n // We haven't changed item, just element in the item\n return;\n }\n\n if (item.getTitle()) {\n if (item.popup == null) {\n item.setPopup(new Popup(this.body.dom.root, this.options.tooltip.overflowMethod || 'flip'));\n }\n\n var container = this.body.dom.centerContainer;\n item.popup.setPosition(\n event.clientX - util.getAbsoluteLeft(container) + container.offsetLeft,\n event.clientY - util.getAbsoluteTop(container) + container.offsetTop\n );\n item.popup.show();\n }\n\n this.body.emitter.emit('itemover', {\n item: item.id,\n event: util.elementsCensor(event)\n });\n};\nItemSet.prototype._onMouseOut = function (event) {\n var item = this.itemFromTarget(event);\n if (!item) return;\n\n // Item we are going to\n var related = this.itemFromRelatedTarget(event);\n if (item === related) {\n // We aren't changing item, just element in the item\n return;\n }\n\n if (item.popup != null) {\n item.popup.hide();\n }\n\n this.body.emitter.emit('itemout', {\n item: item.id,\n event: util.elementsCensor(event)\n });\n};\nItemSet.prototype._onMouseMove = function (event) {\n var item = this.itemFromTarget(event);\n if (!item) return;\n\n if (this.options.tooltip.followMouse) {\n if (item.popup) {\n if (!item.popup.hidden) {\n var container = this.body.dom.centerContainer;\n item.popup.setPosition(\n event.clientX - util.getAbsoluteLeft(container) + container.offsetLeft,\n event.clientY - util.getAbsoluteTop(container) + container.offsetTop\n );\n item.popup.show(); // Redraw\n }\n }\n }\n};\n\n\n/**\n * Handle updates of an item on double tap\n * @param event\n * @private\n */\nItemSet.prototype._onUpdateItem = function (item) {\n if (!this.options.selectable) return;\n if (!this.options.editable.add) return;\n\n var me = this;\n \n if (item) {\n // execute async handler to update the item (or cancel it)\n var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset\n this.options.onUpdate(itemData, function (itemData) {\n if (itemData) {\n me.itemsData.getDataSet().update(itemData);\n }\n });\n }\n}\n\n/**\n * Handle creation of an item on double tap\n * @param event\n * @private\n */\nItemSet.prototype._onAddItem = function (event) {\n if (!this.options.selectable) return;\n if (!this.options.editable.add) return;\n\n var me = this;\n var snap = this.options.snap || null;\n var item = this.itemFromTarget(event);\n\n if (!item) {\n // add item\n if (this.options.rtl) {\n var xAbs = util.getAbsoluteRight(this.dom.frame);\n var x = xAbs - event.center.x;\n } else {\n var xAbs = util.getAbsoluteLeft(this.dom.frame);\n var x = event.center.x - xAbs; \n }\n // var xAbs = util.getAbsoluteLeft(this.dom.frame);\n // var x = event.center.x - xAbs;\n var start = this.body.util.toTime(x);\n var scale = this.body.util.getScale();\n var step = this.body.util.getStep();\n\n var newItemData = {\n start: snap ? snap(start, scale, step) : start,\n content: 'new item'\n };\n\n if (event.type == 'drop') {\n var itemData = JSON.parse(event.dataTransfer.getData(\"text\"))\n newItemData.content = itemData.content; // content is required \n newItemData.type = itemData.type || 'box';\n newItemData[this.itemsData._fieldId] = itemData.id || util.randomUUID();\n\n if (itemData.type == 'range' || (itemData.end && itemData.start)) {\n if (!itemData.end) {\n var end = this.body.util.toTime(x + this.props.width / 5);\n newItemData.end = snap ? snap(end, scale, step) : end;\n } else {\n newItemData.end = itemData.end;\n newItemData.start = itemData.start;\n }\n }\n } else {\n newItemData[this.itemsData._fieldId] = util.randomUUID();\n\n // when default type is a range, add a default end date to the new item\n if (this.options.type === 'range') {\n var end = this.body.util.toTime(x + this.props.width / 5);\n newItemData.end = snap ? snap(end, scale, step) : end;\n }\n }\n\n var group = this.groupFromTarget(event);\n if (group) {\n newItemData.group = group.groupId;\n }\n\n // execute async handler to customize (or cancel) adding an item\n newItemData = this._cloneItemData(newItemData); // convert start and end to the correct type\n this.options.onAdd(newItemData, function (item) {\n if (item) {\n me.itemsData.getDataSet().add(item);\n if (event.type == 'drop') {\n me.setSelection([item.id]);\n }\n // TODO: need to trigger a redraw?\n }\n });\n }\n};\n\n/**\n * Handle selecting/deselecting multiple items when holding an item\n * @param {Event} event\n * @private\n */\nItemSet.prototype._onMultiSelectItem = function (event) {\n if (!this.options.selectable) return;\n\n var item = this.itemFromTarget(event);\n\n if (item) {\n // multi select items (if allowed)\n\n var selection = this.options.multiselect\n ? this.getSelection() // take current selection\n : []; // deselect current selection\n\n var shiftKey = event.srcEvent && event.srcEvent.shiftKey || false;\n\n if (shiftKey && this.options.multiselect) {\n // select all items between the old selection and the tapped item\n var itemGroup = this.itemsData.get(item.id).group;\n \t\n // when filtering get the group of the last selected item\n var lastSelectedGroup = undefined;\n if (this.options.multiselectPerGroup) {\n if (selection.length > 0) {\n lastSelectedGroup = this.itemsData.get(selection[0]).group;\n }\n }\n \t\n // determine the selection range\n if (!this.options.multiselectPerGroup || lastSelectedGroup == undefined || lastSelectedGroup == itemGroup) {\n selection.push(item.id);\n }\n var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions));\n \n if (!this.options.multiselectPerGroup || lastSelectedGroup == itemGroup) {\n // select all items within the selection range\n selection = [];\n for (var id in this.items) {\n if (this.items.hasOwnProperty(id)) {\n var _item = this.items[id];\n var start = _item.data.start;\n var end = (_item.data.end !== undefined) ? _item.data.end : start;\n\n if (start >= range.min &&\n end <= range.max &&\n (!this.options.multiselectPerGroup || lastSelectedGroup == this.itemsData.get(_item.id).group) &&\n !(_item instanceof BackgroundItem)) {\n selection.push(_item.id); // do not use id but item.id, id itself is stringified\n }\n }\n }\n }\n }\n else {\n // add/remove this item from the current selection\n var index = selection.indexOf(item.id);\n if (index == -1) {\n // item is not yet selected -> select it\n selection.push(item.id);\n }\n else {\n // item is already selected -> deselect it\n selection.splice(index, 1);\n }\n }\n\n this.setSelection(selection);\n\n this.body.emitter.emit('select', {\n items: this.getSelection(),\n event: util.elementsCensor(event)\n });\n }\n};\n\n/**\n * Calculate the time range of a list of items\n * @param {Array.} itemsData\n * @return {{min: Date, max: Date}} Returns the range of the provided items\n * @private\n */\nItemSet._getItemRange = function(itemsData) {\n var max = null;\n var min = null;\n\n itemsData.forEach(function (data) {\n if (min == null || data.start < min) {\n min = data.start;\n }\n\n if (data.end != undefined) {\n if (max == null || data.end > max) {\n max = data.end;\n }\n }\n else {\n if (max == null || data.start > max) {\n max = data.start;\n }\n }\n });\n\n return {\n min: min,\n max: max\n }\n};\n\n/**\n * Find an item from an element:\n * searches for the attribute 'timeline-item' in the element's tree\n * @param {HTMLElement} element\n * @return {Item | null} item\n */\nItemSet.prototype.itemFromElement = function(element) {\n var cur = element;\n while (cur) {\n if (cur.hasOwnProperty('timeline-item')) {\n return cur['timeline-item'];\n }\n cur = cur.parentNode;\n }\n\n return null;\n};\n\n/**\n * Find an item from an event target:\n * searches for the attribute 'timeline-item' in the event target's element tree\n * @param {Event} event\n * @return {Item | null} item\n */\nItemSet.prototype.itemFromTarget = function(event) {\n return this.itemFromElement(event.target);\n};\n\n/**\n * Find an item from an event's related target:\n * searches for the attribute 'timeline-item' in the related target's element tree\n * @param {Event} event\n * @return {Item | null} item\n */\nItemSet.prototype.itemFromRelatedTarget = function(event) {\n return this.itemFromElement(event.relatedTarget);\n};\n\n/**\n * Find the Group from an event target:\n * searches for the attribute 'timeline-group' in the event target's element tree\n * @param {Event} event\n * @return {Group | null} group\n */\nItemSet.prototype.groupFromTarget = function(event) {\n var clientY = event.center ? event.center.y : event.clientY;\n for (var i = 0; i < this.groupIds.length; i++) {\n var groupId = this.groupIds[i];\n var group = this.groups[groupId];\n var foreground = group.dom.foreground;\n var top = util.getAbsoluteTop(foreground);\n if (clientY > top && clientY < top + foreground.offsetHeight) {\n return group;\n }\n\n if (this.options.orientation.item === 'top') {\n if (i === this.groupIds.length - 1 && clientY > top) {\n return group;\n }\n }\n else {\n if (i === 0 && clientY < top + foreground.offset) {\n return group;\n }\n }\n }\n\n return null;\n};\n\n/**\n * Find the ItemSet from an event target:\n * searches for the attribute 'timeline-itemset' in the event target's element tree\n * @param {Event} event\n * @return {ItemSet | null} item\n */\nItemSet.itemSetFromTarget = function(event) {\n var target = event.target;\n while (target) {\n if (target.hasOwnProperty('timeline-itemset')) {\n return target['timeline-itemset'];\n }\n target = target.parentNode;\n }\n\n return null;\n};\n\n/**\n * Clone the data of an item, and \"normalize\" it: convert the start and end date\n * to the type (Date, Moment, ...) configured in the DataSet. If not configured,\n * start and end are converted to Date.\n * @param {Object} itemData, typically `item.data`\n * @param {string} [type] Optional Date type. If not provided, the type from the DataSet is taken\n * @return {Object} The cloned object\n * @private\n */\nItemSet.prototype._cloneItemData = function (itemData, type) {\n var clone = util.extend({}, itemData);\n\n if (!type) {\n // convert start and end date to the type (Date, Moment, ...) configured in the DataSet\n type = this.itemsData.getDataSet()._options.type;\n }\n\n if (clone.start != undefined) {\n clone.start = util.convert(clone.start, type && type.start || 'Date');\n }\n if (clone.end != undefined) {\n clone.end = util.convert(clone.end , type && type.end || 'Date');\n }\n\n return clone;\n};\n\nmodule.exports = ItemSet;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/ItemSet.js","/**\n * Popup is a class to create a popup window with some text\n * @param {Element} container The container object.\n * @param {string} overflowMethod How the popup should act to overflowing ('flip' or 'cap')\n */\nclass Popup {\n constructor(container, overflowMethod) {\n this.container = container;\n this.overflowMethod = overflowMethod || 'cap';\n\n this.x = 0;\n this.y = 0;\n this.padding = 5;\n this.hidden = false;\n\n // create the frame\n this.frame = document.createElement('div');\n this.frame.className = 'vis-tooltip';\n this.container.appendChild(this.frame);\n }\n\n /**\n * @param {number} x Horizontal position of the popup window\n * @param {number} y Vertical position of the popup window\n */\n setPosition(x, y) {\n this.x = parseInt(x);\n this.y = parseInt(y);\n }\n\n /**\n * Set the content for the popup window. This can be HTML code or text.\n * @param {string | Element} content\n */\n setText(content) {\n if (content instanceof Element) {\n this.frame.innerHTML = '';\n this.frame.appendChild(content);\n }\n else {\n this.frame.innerHTML = content; // string containing text or HTML\n }\n }\n\n /**\n * Show the popup window\n * @param {boolean} [doShow] Show or hide the window\n */\n show(doShow) {\n if (doShow === undefined) {\n doShow = true;\n }\n\n if (doShow === true) {\n var height = this.frame.clientHeight;\n var width = this.frame.clientWidth;\n var maxHeight = this.frame.parentNode.clientHeight;\n var maxWidth = this.frame.parentNode.clientWidth;\n\n var left = 0, top = 0;\n\n if (this.overflowMethod == 'flip') {\n var isLeft = false, isTop = true; // Where around the position it's located\n\n if (this.y - height < this.padding) {\n isTop = false;\n }\n\n if (this.x + width > maxWidth - this.padding) {\n isLeft = true;\n }\n\n if (isLeft) {\n left = this.x - width;\n } else {\n left = this.x;\n }\n\n if (isTop) {\n top = this.y - height;\n } else {\n top = this.y;\n }\n } else {\n top = (this.y - height);\n if (top + height + this.padding > maxHeight) {\n top = maxHeight - height - this.padding;\n }\n if (top < this.padding) {\n top = this.padding;\n }\n\n left = this.x;\n if (left + width + this.padding > maxWidth) {\n left = maxWidth - width - this.padding;\n }\n if (left < this.padding) {\n left = this.padding;\n }\n }\n\n this.frame.style.left = left + \"px\";\n this.frame.style.top = top + \"px\";\n this.frame.style.visibility = \"visible\";\n this.hidden = false;\n }\n else {\n this.hide();\n }\n }\n\n /**\n * Hide the popup window\n */\n hide() {\n this.hidden = true;\n this.frame.style.visibility = \"hidden\";\n }\n\n /**\n * Remove the popup window\n */\n destroy() {\n this.frame.parentNode.removeChild(this.frame); // Remove element from DOM\n }\n}\n\nexport default Popup;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/shared/Popup.js","var moment = require('../module/moment');\nvar DateUtil = require('./DateUtil');\nvar util = require('../util');\n\n/**\n * @constructor TimeStep\n * The class TimeStep is an iterator for dates. You provide a start date and an\n * end date. The class itself determines the best scale (step size) based on the\n * provided start Date, end Date, and minimumStep.\n *\n * If minimumStep is provided, the step size is chosen as close as possible\n * to the minimumStep but larger than minimumStep. If minimumStep is not\n * provided, the scale is set to 1 DAY.\n * The minimumStep should correspond with the onscreen size of about 6 characters\n *\n * Alternatively, you can set a scale by hand.\n * After creation, you can initialize the class by executing first(). Then you\n * can iterate from the start date to the end date via next(). You can check if\n * the end date is reached with the function hasNext(). After each step, you can\n * retrieve the current date via getCurrent().\n * The TimeStep has scales ranging from milliseconds, seconds, minutes, hours,\n * days, to years.\n *\n * Version: 1.2\n *\n * @param {Date} [start] The start date, for example new Date(2010, 9, 21)\n * or new Date(2010, 9, 21, 23, 45, 00)\n * @param {Date} [end] The end date\n * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds\n */\nfunction TimeStep(start, end, minimumStep, hiddenDates) {\n this.moment = moment;\n\n // variables\n this.current = this.moment();\n this._start = this.moment();\n this._end = this.moment();\n\n this.autoScale = true;\n this.scale = 'day';\n this.step = 1;\n\n // initialize the range\n this.setRange(start, end, minimumStep);\n\n // hidden Dates options\n this.switchedDay = false;\n this.switchedMonth = false;\n this.switchedYear = false;\n if (Array.isArray(hiddenDates)) {\n this.hiddenDates = hiddenDates;\n }\n else if (hiddenDates != undefined) {\n this.hiddenDates = [hiddenDates];\n }\n else {\n this.hiddenDates = [];\n }\n\n this.format = TimeStep.FORMAT; // default formatting\n}\n\n// Time formatting\nTimeStep.FORMAT = {\n minorLabels: {\n millisecond:'SSS',\n second: 's',\n minute: 'HH:mm',\n hour: 'HH:mm',\n weekday: 'ddd D',\n day: 'D',\n month: 'MMM',\n year: 'YYYY'\n },\n majorLabels: {\n millisecond:'HH:mm:ss',\n second: 'D MMMM HH:mm',\n minute: 'ddd D MMMM',\n hour: 'ddd D MMMM',\n weekday: 'MMMM YYYY',\n day: 'MMMM YYYY',\n month: 'YYYY',\n year: ''\n }\n};\n\n/**\n * Set custom constructor function for moment. Can be used to set dates\n * to UTC or to set a utcOffset.\n * @param {function} moment\n */\nTimeStep.prototype.setMoment = function (moment) {\n this.moment = moment;\n\n // update the date properties, can have a new utcOffset\n this.current = this.moment(this.current.valueOf());\n this._start = this.moment(this._start.valueOf());\n this._end = this.moment(this._end.valueOf());\n};\n\n/**\n * Set custom formatting for the minor an major labels of the TimeStep.\n * Both `minorLabels` and `majorLabels` are an Object with properties:\n * 'millisecond', 'second', 'minute', 'hour', 'weekday', 'day', 'month', 'year'.\n * @param {{minorLabels: Object, majorLabels: Object}} format\n */\nTimeStep.prototype.setFormat = function (format) {\n var defaultFormat = util.deepExtend({}, TimeStep.FORMAT);\n this.format = util.deepExtend(defaultFormat, format);\n};\n\n/**\n * Set a new range\n * If minimumStep is provided, the step size is chosen as close as possible\n * to the minimumStep but larger than minimumStep. If minimumStep is not\n * provided, the scale is set to 1 DAY.\n * The minimumStep should correspond with the onscreen size of about 6 characters\n * @param {Date} [start] The start date and time.\n * @param {Date} [end] The end date and time.\n * @param {int} [minimumStep] Optional. Minimum step size in milliseconds\n */\nTimeStep.prototype.setRange = function(start, end, minimumStep) {\n if (!(start instanceof Date) || !(end instanceof Date)) {\n throw \"No legal start or end date in method setRange\";\n }\n\n this._start = (start != undefined) ? this.moment(start.valueOf()) : new Date();\n this._end = (end != undefined) ? this.moment(end.valueOf()) : new Date();\n\n if (this.autoScale) {\n this.setMinimumStep(minimumStep);\n }\n};\n\n/**\n * Set the range iterator to the start date.\n */\nTimeStep.prototype.start = function() {\n this.current = this._start.clone();\n this.roundToMinor();\n};\n\n/**\n * Round the current date to the first minor date value\n * This must be executed once when the current date is set to start Date\n */\nTimeStep.prototype.roundToMinor = function() {\n // round to floor\n // IMPORTANT: we have no breaks in this switch! (this is no bug)\n // noinspection FallThroughInSwitchStatementJS\n switch (this.scale) {\n case 'year':\n this.current.year(this.step * Math.floor(this.current.year() / this.step));\n this.current.month(0);\n case 'month': this.current.date(1);\n case 'day': // intentional fall through\n case 'weekday': this.current.hours(0);\n case 'hour': this.current.minutes(0);\n case 'minute': this.current.seconds(0);\n case 'second': this.current.milliseconds(0);\n //case 'millisecond': // nothing to do for milliseconds\n }\n\n if (this.step != 1) {\n // round down to the first minor value that is a multiple of the current step size\n switch (this.scale) {\n case 'millisecond': this.current.subtract(this.current.milliseconds() % this.step, 'milliseconds'); break;\n case 'second': this.current.subtract(this.current.seconds() % this.step, 'seconds'); break;\n case 'minute': this.current.subtract(this.current.minutes() % this.step, 'minutes'); break;\n case 'hour': this.current.subtract(this.current.hours() % this.step, 'hours'); break;\n case 'weekday': // intentional fall through\n case 'day': this.current.subtract((this.current.date() - 1) % this.step, 'day'); break;\n case 'month': this.current.subtract(this.current.month() % this.step, 'month'); break;\n case 'year': this.current.subtract(this.current.year() % this.step, 'year'); break;\n default: break;\n }\n }\n};\n\n/**\n * Check if the there is a next step\n * @return {boolean} true if the current date has not passed the end date\n */\nTimeStep.prototype.hasNext = function () {\n return (this.current.valueOf() <= this._end.valueOf());\n};\n\n/**\n * Do the next step\n */\nTimeStep.prototype.next = function() {\n var prev = this.current.valueOf();\n\n // Two cases, needed to prevent issues with switching daylight savings\n // (end of March and end of October)\n if (this.current.month() < 6) {\n switch (this.scale) {\n case 'millisecond': this.current.add(this.step, 'millisecond'); break;\n case 'second': this.current.add(this.step, 'second'); break;\n case 'minute': this.current.add(this.step, 'minute'); break;\n case 'hour':\n this.current.add(this.step, 'hour');\n // in case of skipping an hour for daylight savings, adjust the hour again (else you get: 0h 5h 9h ... instead of 0h 4h 8h ...)\n // TODO: is this still needed now we use the function of moment.js?\n this.current.subtract(this.current.hours() % this.step, 'hour');\n break;\n case 'weekday': // intentional fall through\n case 'day': this.current.add(this.step, 'day'); break;\n case 'month': this.current.add(this.step, 'month'); break;\n case 'year': this.current.add(this.step, 'year'); break;\n default: break;\n }\n }\n else {\n switch (this.scale) {\n case 'millisecond': this.current.add(this.step, 'millisecond'); break;\n case 'second': this.current.add(this.step, 'second'); break;\n case 'minute': this.current.add(this.step, 'minute'); break;\n case 'hour':\n this.current.add(this.moment.duration(this.step, 'hour'));\n\n // correct for daylight saving\n // FIXME: use this.current.add(moment.duration(this.step, 'hour'))\n // see http://momentjs.com/docs/#special-considerations-for-months-and-years\n if (this.current.hours() % this.step !== 0) {\n this.current.add(this.step - this.current.hours() % this.step, 'hour');\n }\n\n break;\n case 'weekday': // intentional fall through\n case 'day': this.current.add(this.step, 'day'); break;\n case 'month': this.current.add(this.step, 'month'); break;\n case 'year': this.current.add(this.step, 'year'); break;\n default: break;\n }\n }\n\n if (this.step != 1) {\n // round down to the correct major value\n switch (this.scale) {\n case 'millisecond': if(this.current.milliseconds() > 0 && this.current.milliseconds() < this.step) this.current.milliseconds(0); break;\n case 'second': if(this.current.seconds() > 0 && this.current.seconds() < this.step) this.current.seconds(0); break;\n case 'minute': if(this.current.minutes() > 0 && this.current.minutes() < this.step) this.current.minutes(0); break;\n case 'hour': if(this.current.hours() > 0 && this.current.hours() < this.step) this.current.hours(0); break;\n case 'weekday': // intentional fall through\n case 'day': if(this.current.date() < this.step+1) this.current.date(1); break;\n case 'month': if(this.current.month() < this.step) this.current.month(0); break;\n case 'year': break; // nothing to do for year\n default: break;\n }\n }\n\n // safety mechanism: if current time is still unchanged, move to the end\n if (this.current.valueOf() == prev) {\n this.current = this._end.clone();\n }\n\n // Reset switches for year, month and day. Will get set to true where appropriate in DateUtil.stepOverHiddenDates\n this.switchedDay = false;\n this.switchedMonth = false;\n this.switchedYear = false;\n\n DateUtil.stepOverHiddenDates(this.moment, this, prev);\n};\n\n\n/**\n * Get the current datetime\n * @return {Moment} current The current date\n */\nTimeStep.prototype.getCurrent = function() {\n return this.current;\n};\n\n/**\n * Set a custom scale. Autoscaling will be disabled.\n * For example setScale('minute', 5) will result\n * in minor steps of 5 minutes, and major steps of an hour.\n *\n * @param {{scale: string, step: number}} params\n * An object containing two properties:\n * - A string 'scale'. Choose from 'millisecond', 'second',\n * 'minute', 'hour', 'weekday', 'day', 'month', 'year'.\n * - A number 'step'. A step size, by default 1.\n * Choose for example 1, 2, 5, or 10.\n */\nTimeStep.prototype.setScale = function(params) {\n if (params && typeof params.scale == 'string') {\n this.scale = params.scale;\n this.step = params.step > 0 ? params.step : 1;\n this.autoScale = false;\n }\n};\n\n/**\n * Enable or disable autoscaling\n * @param {boolean} enable If true, autoascaling is set true\n */\nTimeStep.prototype.setAutoScale = function (enable) {\n this.autoScale = enable;\n};\n\n\n/**\n * Automatically determine the scale that bests fits the provided minimum step\n * @param {Number} [minimumStep] The minimum step size in milliseconds\n */\nTimeStep.prototype.setMinimumStep = function(minimumStep) {\n if (minimumStep == undefined) {\n return;\n }\n\n //var b = asc + ds;\n\n var stepYear = (1000 * 60 * 60 * 24 * 30 * 12);\n var stepMonth = (1000 * 60 * 60 * 24 * 30);\n var stepDay = (1000 * 60 * 60 * 24);\n var stepHour = (1000 * 60 * 60);\n var stepMinute = (1000 * 60);\n var stepSecond = (1000);\n var stepMillisecond= (1);\n\n // find the smallest step that is larger than the provided minimumStep\n if (stepYear*1000 > minimumStep) {this.scale = 'year'; this.step = 1000;}\n if (stepYear*500 > minimumStep) {this.scale = 'year'; this.step = 500;}\n if (stepYear*100 > minimumStep) {this.scale = 'year'; this.step = 100;}\n if (stepYear*50 > minimumStep) {this.scale = 'year'; this.step = 50;}\n if (stepYear*10 > minimumStep) {this.scale = 'year'; this.step = 10;}\n if (stepYear*5 > minimumStep) {this.scale = 'year'; this.step = 5;}\n if (stepYear > minimumStep) {this.scale = 'year'; this.step = 1;}\n if (stepMonth*3 > minimumStep) {this.scale = 'month'; this.step = 3;}\n if (stepMonth > minimumStep) {this.scale = 'month'; this.step = 1;}\n if (stepDay*5 > minimumStep) {this.scale = 'day'; this.step = 5;}\n if (stepDay*2 > minimumStep) {this.scale = 'day'; this.step = 2;}\n if (stepDay > minimumStep) {this.scale = 'day'; this.step = 1;}\n if (stepDay/2 > minimumStep) {this.scale = 'weekday'; this.step = 1;}\n if (stepHour*4 > minimumStep) {this.scale = 'hour'; this.step = 4;}\n if (stepHour > minimumStep) {this.scale = 'hour'; this.step = 1;}\n if (stepMinute*15 > minimumStep) {this.scale = 'minute'; this.step = 15;}\n if (stepMinute*10 > minimumStep) {this.scale = 'minute'; this.step = 10;}\n if (stepMinute*5 > minimumStep) {this.scale = 'minute'; this.step = 5;}\n if (stepMinute > minimumStep) {this.scale = 'minute'; this.step = 1;}\n if (stepSecond*15 > minimumStep) {this.scale = 'second'; this.step = 15;}\n if (stepSecond*10 > minimumStep) {this.scale = 'second'; this.step = 10;}\n if (stepSecond*5 > minimumStep) {this.scale = 'second'; this.step = 5;}\n if (stepSecond > minimumStep) {this.scale = 'second'; this.step = 1;}\n if (stepMillisecond*200 > minimumStep) {this.scale = 'millisecond'; this.step = 200;}\n if (stepMillisecond*100 > minimumStep) {this.scale = 'millisecond'; this.step = 100;}\n if (stepMillisecond*50 > minimumStep) {this.scale = 'millisecond'; this.step = 50;}\n if (stepMillisecond*10 > minimumStep) {this.scale = 'millisecond'; this.step = 10;}\n if (stepMillisecond*5 > minimumStep) {this.scale = 'millisecond'; this.step = 5;}\n if (stepMillisecond > minimumStep) {this.scale = 'millisecond'; this.step = 1;}\n};\n\n/**\n * Snap a date to a rounded value.\n * The snap intervals are dependent on the current scale and step.\n * Static function\n * @param {Date} date the date to be snapped.\n * @param {string} scale Current scale, can be 'millisecond', 'second',\n * 'minute', 'hour', 'weekday, 'day', 'month', 'year'.\n * @param {number} step Current step (1, 2, 4, 5, ...\n * @return {Date} snappedDate\n */\nTimeStep.snap = function(date, scale, step) {\n var clone = moment(date);\n\n if (scale == 'year') {\n var year = clone.year() + Math.round(clone.month() / 12);\n clone.year(Math.round(year / step) * step);\n clone.month(0);\n clone.date(0);\n clone.hours(0);\n clone.minutes(0);\n clone.seconds(0);\n clone.milliseconds(0);\n }\n else if (scale == 'month') {\n if (clone.date() > 15) {\n clone.date(1);\n clone.add(1, 'month');\n // important: first set Date to 1, after that change the month.\n }\n else {\n clone.date(1);\n }\n\n clone.hours(0);\n clone.minutes(0);\n clone.seconds(0);\n clone.milliseconds(0);\n }\n else if (scale == 'day') {\n //noinspection FallthroughInSwitchStatementJS\n switch (step) {\n case 5:\n case 2:\n clone.hours(Math.round(clone.hours() / 24) * 24); break;\n default:\n clone.hours(Math.round(clone.hours() / 12) * 12); break;\n }\n clone.minutes(0);\n clone.seconds(0);\n clone.milliseconds(0);\n }\n else if (scale == 'weekday') {\n //noinspection FallthroughInSwitchStatementJS\n switch (step) {\n case 5:\n case 2:\n clone.hours(Math.round(clone.hours() / 12) * 12); break;\n default:\n clone.hours(Math.round(clone.hours() / 6) * 6); break;\n }\n clone.minutes(0);\n clone.seconds(0);\n clone.milliseconds(0);\n }\n else if (scale == 'hour') {\n switch (step) {\n case 4:\n clone.minutes(Math.round(clone.minutes() / 60) * 60); break;\n default:\n clone.minutes(Math.round(clone.minutes() / 30) * 30); break;\n }\n clone.seconds(0);\n clone.milliseconds(0);\n } else if (scale == 'minute') {\n //noinspection FallthroughInSwitchStatementJS\n switch (step) {\n case 15:\n case 10:\n clone.minutes(Math.round(clone.minutes() / 5) * 5);\n clone.seconds(0);\n break;\n case 5:\n clone.seconds(Math.round(clone.seconds() / 60) * 60); break;\n default:\n clone.seconds(Math.round(clone.seconds() / 30) * 30); break;\n }\n clone.milliseconds(0);\n }\n else if (scale == 'second') {\n //noinspection FallthroughInSwitchStatementJS\n switch (step) {\n case 15:\n case 10:\n clone.seconds(Math.round(clone.seconds() / 5) * 5);\n clone.milliseconds(0);\n break;\n case 5:\n clone.milliseconds(Math.round(clone.milliseconds() / 1000) * 1000); break;\n default:\n clone.milliseconds(Math.round(clone.milliseconds() / 500) * 500); break;\n }\n }\n else if (scale == 'millisecond') {\n var _step = step > 5 ? step / 2 : 1;\n clone.milliseconds(Math.round(clone.milliseconds() / _step) * _step);\n }\n\n return clone;\n};\n\n/**\n * Check if the current value is a major value (for example when the step\n * is DAY, a major value is each first day of the MONTH)\n * @return {boolean} true if current date is major, else false.\n */\nTimeStep.prototype.isMajor = function() {\n if (this.switchedYear == true) {\n switch (this.scale) {\n case 'year':\n case 'month':\n case 'weekday':\n case 'day':\n case 'hour':\n case 'minute':\n case 'second':\n case 'millisecond':\n return true;\n default:\n return false;\n }\n }\n else if (this.switchedMonth == true) {\n switch (this.scale) {\n case 'weekday':\n case 'day':\n case 'hour':\n case 'minute':\n case 'second':\n case 'millisecond':\n return true;\n default:\n return false;\n }\n }\n else if (this.switchedDay == true) {\n switch (this.scale) {\n case 'millisecond':\n case 'second':\n case 'minute':\n case 'hour':\n return true;\n default:\n return false;\n }\n }\n\n var date = this.moment(this.current);\n switch (this.scale) {\n case 'millisecond':\n return (date.milliseconds() == 0);\n case 'second':\n return (date.seconds() == 0);\n case 'minute':\n return (date.hours() == 0) && (date.minutes() == 0);\n case 'hour':\n return (date.hours() == 0);\n case 'weekday': // intentional fall through\n case 'day':\n return (date.date() == 1);\n case 'month':\n return (date.month() == 0);\n case 'year':\n return false;\n default:\n return false;\n }\n};\n\n\n/**\n * Returns formatted text for the minor axislabel, depending on the current\n * date and the scale. For example when scale is MINUTE, the current time is\n * formatted as \"hh:mm\".\n * @param {Date} [date] custom date. if not provided, current date is taken\n */\nTimeStep.prototype.getLabelMinor = function(date) {\n if (date == undefined) {\n date = this.current;\n }\n\n if (typeof(this.format.minorLabels) === \"function\") {\n return this.format.minorLabels(date, this.scale, this.step);\n }\n\n var format = this.format.minorLabels[this.scale];\n return (format && format.length > 0) ? this.moment(date).format(format) : '';\n};\n\n/**\n * Returns formatted text for the major axis label, depending on the current\n * date and the scale. For example when scale is MINUTE, the major scale is\n * hours, and the hour will be formatted as \"hh\".\n * @param {Date} [date] custom date. if not provided, current date is taken\n */\nTimeStep.prototype.getLabelMajor = function(date) {\n if (date == undefined) {\n date = this.current;\n }\n \n if (typeof(this.format.majorLabels) === \"function\") {\n return this.format.majorLabels(date, this.scale, this.step);\n }\n\n var format = this.format.majorLabels[this.scale];\n return (format && format.length > 0) ? this.moment(date).format(format) : '';\n};\n\nTimeStep.prototype.getClassName = function() {\n var _moment = this.moment;\n var m = this.moment(this.current);\n var current = m.locale ? m.locale('en') : m.lang('en'); // old versions of moment have .lang() function\n var step = this.step;\n\n function even(value) {\n return (value / step % 2 == 0) ? ' vis-even' : ' vis-odd';\n }\n\n function today(date) {\n if (date.isSame(new Date(), 'day')) {\n return ' vis-today';\n }\n if (date.isSame(_moment().add(1, 'day'), 'day')) {\n return ' vis-tomorrow';\n }\n if (date.isSame(_moment().add(-1, 'day'), 'day')) {\n return ' vis-yesterday';\n }\n return '';\n }\n\n function currentWeek(date) {\n return date.isSame(new Date(), 'week') ? ' vis-current-week' : '';\n }\n\n function currentMonth(date) {\n return date.isSame(new Date(), 'month') ? ' vis-current-month' : '';\n }\n\n function currentYear(date) {\n return date.isSame(new Date(), 'year') ? ' vis-current-year' : '';\n }\n\n switch (this.scale) {\n case 'millisecond':\n return today(current) +\n even(current.milliseconds()).trim();\n\n case 'second':\n return today(current) +\n even(current.seconds()).trim();\n\n case 'minute':\n return today(current) +\n even(current.minutes()).trim();\n\n case 'hour':\n return 'vis-h' + current.hours() + \n (this.step == 4 ? '-h' + (current.hours() + 4) : '') +\n today(current) +\n even(current.hours());\n\n case 'weekday':\n return 'vis-' + current.format('dddd').toLowerCase() +\n today(current) +\n currentWeek(current) +\n even(current.date());\n\n case 'day':\n return 'vis-day' + current.date() +\n ' vis-' + current.format('MMMM').toLowerCase() +\n today(current) +\n currentMonth(current) +\n (this.step <= 2 ? today(current) : '') +\n (this.step <= 2 ? ' vis-' + current.format('dddd').toLowerCase() : '' + even(current.date() - 1));\n\n case 'month':\n return 'vis-' + current.format('MMMM').toLowerCase() +\n currentMonth(current) +\n even(current.month());\n\n case 'year':\n var year = current.year();\n return 'vis-year' + year +\n currentYear(current) +\n even(year);\n\n default:\n return '';\n }\n};\n\nmodule.exports = TimeStep;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/TimeStep.js","var util = require('../../util');\nvar stack = require('../Stack');\nvar RangeItem = require('./item/RangeItem');\n\n/**\n * @constructor Group\n * @param {Number | String} groupId\n * @param {Object} data\n * @param {ItemSet} itemSet\n */\nfunction Group (groupId, data, itemSet) {\n this.groupId = groupId;\n this.subgroups = {};\n this.subgroupIndex = 0;\n this.subgroupOrderer = data && data.subgroupOrder;\n this.itemSet = itemSet;\n this.isVisible = null;\n \n if (data && data.nestedGroups) {\n this.nestedGroups = data.nestedGroups;\n if (data.showNested == false) {\n this.showNested = false;\n } else {\n this.showNested = true;\n }\n }\n\n this.nestedInGroup = null;\n\n this.dom = {};\n this.props = {\n label: {\n width: 0,\n height: 0\n }\n };\n this.className = null;\n\n this.items = {}; // items filtered by groupId of this group\n this.visibleItems = []; // items currently visible in window\n this.itemsInRange = []; // items currently in range\n this.orderedItems = {\n byStart: [],\n byEnd: []\n };\n this.checkRangedItems = false; // needed to refresh the ranged items if the window is programatically changed with NO overlap.\n var me = this;\n this.itemSet.body.emitter.on(\"checkRangedItems\", function () {\n me.checkRangedItems = true;\n })\n\n this._create();\n\n this.setData(data);\n}\n\n/**\n * Create DOM elements for the group\n * @private\n */\nGroup.prototype._create = function() {\n var label = document.createElement('div');\n if (this.itemSet.options.groupEditable.order) {\n label.className = 'vis-label draggable';\n } else {\n label.className = 'vis-label';\n }\n this.dom.label = label;\n\n var inner = document.createElement('div');\n inner.className = 'vis-inner';\n label.appendChild(inner);\n this.dom.inner = inner;\n\n var foreground = document.createElement('div');\n foreground.className = 'vis-group';\n foreground['timeline-group'] = this;\n this.dom.foreground = foreground;\n\n this.dom.background = document.createElement('div');\n this.dom.background.className = 'vis-group';\n\n this.dom.axis = document.createElement('div');\n this.dom.axis.className = 'vis-group';\n\n // create a hidden marker to detect when the Timelines container is attached\n // to the DOM, or the style of a parent of the Timeline is changed from\n // display:none is changed to visible.\n this.dom.marker = document.createElement('div');\n this.dom.marker.style.visibility = 'hidden';\n this.dom.marker.style.position = 'absolute';\n this.dom.marker.innerHTML = '';\n this.dom.background.appendChild(this.dom.marker);\n};\n\n/**\n * Set the group data for this group\n * @param {Object} data Group data, can contain properties content and className\n */\nGroup.prototype.setData = function(data) {\n // update contents\n var content;\n var templateFunction;\n\n if (this.itemSet.options && this.itemSet.options.groupTemplate) {\n templateFunction = this.itemSet.options.groupTemplate.bind(this);\n content = templateFunction(data, this.dom.inner);\n } else {\n content = data && data.content;\n }\n\n if (content instanceof Element) {\n this.dom.inner.appendChild(content);\n while (this.dom.inner.firstChild) {\n this.dom.inner.removeChild(this.dom.inner.firstChild);\n }\n this.dom.inner.appendChild(content);\n } else if (content instanceof Object) {\n templateFunction(data, this.dom.inner);\n } else if (content !== undefined && content !== null) {\n this.dom.inner.innerHTML = content;\n } else {\n this.dom.inner.innerHTML = this.groupId || ''; // groupId can be null\n }\n\n // update title\n this.dom.label.title = data && data.title || '';\n if (!this.dom.inner.firstChild) {\n util.addClassName(this.dom.inner, 'vis-hidden');\n }\n else {\n util.removeClassName(this.dom.inner, 'vis-hidden');\n }\n\n if (data && data.nestedGroups) {\n if (data.showNested == false) {\n this.showNested = false;\n } else {\n this.showNested = true;\n }\n\n util.addClassName(this.dom.label, 'vis-nesting-group');\n if (this.showNested) {\n util.removeClassName(this.dom.label, 'collapsed');\n util.addClassName(this.dom.label, 'expanded');\n } else {\n util.removeClassName(this.dom.label, 'expanded');\n var collapsedDirClassName = this.itemSet.options.rtl ? 'collapsed-rtl' : 'collapsed'\n util.addClassName(this.dom.label, collapsedDirClassName);\n }\n }\n\n if (data && data.nestedInGroup) {\n util.addClassName(this.dom.label, 'vis-nested-group');\n if (this.itemSet.options && this.itemSet.options.rtl) {\n this.dom.inner.style.paddingRight = '30px';\n } else {\n this.dom.inner.style.paddingLeft = '30px';\n }\n }\n\n // update className\n var className = data && data.className || null;\n if (className != this.className) {\n if (this.className) {\n util.removeClassName(this.dom.label, this.className);\n util.removeClassName(this.dom.foreground, this.className);\n util.removeClassName(this.dom.background, this.className);\n util.removeClassName(this.dom.axis, this.className);\n }\n util.addClassName(this.dom.label, className);\n util.addClassName(this.dom.foreground, className);\n util.addClassName(this.dom.background, className);\n util.addClassName(this.dom.axis, className);\n this.className = className;\n }\n\n // update style\n if (this.style) {\n util.removeCssText(this.dom.label, this.style);\n this.style = null;\n }\n if (data && data.style) {\n util.addCssText(this.dom.label, data.style);\n this.style = data.style;\n }\n};\n\n/**\n * Get the width of the group label\n * @return {number} width\n */\nGroup.prototype.getLabelWidth = function() {\n return this.props.label.width;\n};\n\n\n/**\n * Repaint this group\n * @param {{start: number, end: number}} range\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n * @param {boolean} [restack=false] Force restacking of all items\n * @return {boolean} Returns true if the group is resized\n */\nGroup.prototype.redraw = function(range, margin, restack) {\n var resized = false;\n\n // force recalculation of the height of the items when the marker height changed\n // (due to the Timeline being attached to the DOM or changed from display:none to visible)\n var markerHeight = this.dom.marker.clientHeight;\n if (markerHeight != this.lastMarkerHeight) {\n this.lastMarkerHeight = markerHeight;\n util.forEach(this.items, function (item) {\n item.dirty = true;\n if (item.displayed) item.redraw();\n });\n\n restack = true;\n }\n\n // recalculate the height of the subgroups\n this._calculateSubGroupHeights(margin);\n\n // calculate actual size and position\n var foreground = this.dom.foreground;\n this.top = foreground.offsetTop;\n this.right = foreground.offsetLeft;\n this.width = foreground.offsetWidth;\n\n this.isVisible = this._isGroupVisible(range, margin);\n // reposition visible items vertically\n if (typeof this.itemSet.options.order === 'function') {\n // a custom order function\n\n if (restack) {\n // brute force restack of all items\n\n // show all items\n var me = this;\n var limitSize = false;\n util.forEach(this.items, function (item) {\n if (!item.displayed) {\n item.redraw();\n me.visibleItems.push(item);\n }\n item.repositionX(limitSize);\n });\n\n // order all items and force a restacking\n var customOrderedItems = this.orderedItems.byStart.slice().sort(function (a, b) {\n return me.itemSet.options.order(a.data, b.data);\n });\n stack.stack(customOrderedItems, margin, true /* restack=true */);\n }\n\n this.visibleItems = this._updateItemsInRange(this.orderedItems, this.visibleItems, range);\n }\n else {\n // no custom order function, lazy stacking\n\n this.visibleItems = this._updateItemsInRange(this.orderedItems, this.visibleItems, range);\n\n if (this.itemSet.options.stack) { // TODO: ugly way to access options...\n stack.stack(this.visibleItems, margin, restack);\n }\n else { // no stacking\n stack.nostack(this.visibleItems, margin, this.subgroups, this.itemSet.options.stackSubgroups);\n }\n }\n\t\n this._updateSubgroupsSizes();\n\n // recalculate the height of the group\n var height = this._calculateHeight(margin);\n\n // calculate actual size and position\n var foreground = this.dom.foreground;\n this.top = foreground.offsetTop;\n this.right = foreground.offsetLeft;\n this.width = foreground.offsetWidth;\n resized = util.updateProperty(this, 'height', height) || resized;\n // recalculate size of label\n resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized;\n resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized;\n\n // apply new height\n this.dom.background.style.height = height + 'px';\n this.dom.foreground.style.height = height + 'px';\n this.dom.label.style.height = height + 'px';\n\n // update vertical position of items after they are re-stacked and the height of the group is calculated\n for (var i = 0, ii = this.visibleItems.length; i < ii; i++) {\n var item = this.visibleItems[i];\n item.repositionY(margin);\n if (!this.isVisible && this.groupId != \"__background__\") {\n if (item.displayed) item.hide();\n }\n }\n\n if (!this.isVisible && this.height) {\n return resized = false;\n }\n\n return resized;\n};\n\n/**\n * recalculate the height of the subgroups\n * @private\n */\nGroup.prototype._calculateSubGroupHeights = function (margin) {\n if (Object.keys(this.subgroups).length > 0) {\n var me = this;\n\n this.resetSubgroups();\n\n util.forEach(this.visibleItems, function (item) {\n if (item.data.subgroup !== undefined) {\n me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height, item.height + margin.item.vertical);\n me.subgroups[item.data.subgroup].visible = true;\n }\n });\n }\n};\n\n/**\n * check if group is visible\n * @private\n */\nGroup.prototype._isGroupVisible = function (range, margin) {\n var isVisible = \n (this.top <= range.body.domProps.centerContainer.height - range.body.domProps.scrollTop + margin.axis) \n && (this.top + this.height + margin.axis >= - range.body.domProps.scrollTop);\n return isVisible;\n}\n\n/**\n * recalculate the height of the group\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n * @returns {number} Returns the height\n * @private\n */\nGroup.prototype._calculateHeight = function (margin) {\n // recalculate the height of the group\n var height;\n var itemsInRange = this.visibleItems;\n if (itemsInRange.length > 0) {\n var min = itemsInRange[0].top;\n var max = itemsInRange[0].top + itemsInRange[0].height;\n util.forEach(itemsInRange, function (item) {\n min = Math.min(min, item.top);\n max = Math.max(max, (item.top + item.height));\n });\n if (min > margin.axis) {\n // there is an empty gap between the lowest item and the axis\n var offset = min - margin.axis;\n max -= offset;\n util.forEach(itemsInRange, function (item) {\n item.top -= offset;\n });\n }\n height = max + margin.item.vertical / 2;\n }\n else {\n height = 0;\n }\n height = Math.max(height, this.props.label.height);\n\n return height;\n};\n\n/**\n * Show this group: attach to the DOM\n */\nGroup.prototype.show = function() {\n if (!this.dom.label.parentNode) {\n this.itemSet.dom.labelSet.appendChild(this.dom.label);\n }\n\n if (!this.dom.foreground.parentNode) {\n this.itemSet.dom.foreground.appendChild(this.dom.foreground);\n }\n\n if (!this.dom.background.parentNode) {\n this.itemSet.dom.background.appendChild(this.dom.background);\n }\n\n if (!this.dom.axis.parentNode) {\n this.itemSet.dom.axis.appendChild(this.dom.axis);\n }\n};\n\n/**\n * Hide this group: remove from the DOM\n */\nGroup.prototype.hide = function() {\n var label = this.dom.label;\n if (label.parentNode) {\n label.parentNode.removeChild(label);\n }\n\n var foreground = this.dom.foreground;\n if (foreground.parentNode) {\n foreground.parentNode.removeChild(foreground);\n }\n\n var background = this.dom.background;\n if (background.parentNode) {\n background.parentNode.removeChild(background);\n }\n\n var axis = this.dom.axis;\n if (axis.parentNode) {\n axis.parentNode.removeChild(axis);\n }\n};\n\n/**\n * Add an item to the group\n * @param {Item} item\n */\nGroup.prototype.add = function(item) {\n this.items[item.id] = item;\n item.setParent(this);\n\n // add to\n if (item.data.subgroup !== undefined) {\n if (this.subgroups[item.data.subgroup] === undefined) {\n this.subgroups[item.data.subgroup] = {\n height:0, \n top: 0,\n start: item.data.start,\n end: item.data.end,\n visible: false, \n index:this.subgroupIndex, \n items: []\n };\n this.subgroupIndex++;\n }\n\n\n if (new Date(item.data.start) < new Date(this.subgroups[item.data.subgroup].start)) { \n this.subgroups[item.data.subgroup].start = item.data.start; \n }\n if (new Date(item.data.end) > new Date(this.subgroups[item.data.subgroup].end)) { \n this.subgroups[item.data.subgroup].end = item.data.end; \n }\n\n this.subgroups[item.data.subgroup].items.push(item);\n }\n this.orderSubgroups();\n\n if (this.visibleItems.indexOf(item) == -1) {\n var range = this.itemSet.body.range; // TODO: not nice accessing the range like this\n this._checkIfVisible(item, this.visibleItems, range);\n }\n};\n\nGroup.prototype._updateSubgroupsSizes = function () {\n var me = this;\n if (me.subgroups) {\n for (var subgroup in me.subgroups) {\n var newStart = me.subgroups[subgroup].items[0].data.start;\n var newEnd = me.subgroups[subgroup].items[0].data.end;\n\n me.subgroups[subgroup].items.forEach(function(item) {\n if (new Date(item.data.start) < new Date(newStart)) { \n newStart = item.data.start; \n }\n if (new Date(item.data.end) > new Date(newEnd)) { \n newEnd = item.data.end; \n }\n })\n\n me.subgroups[subgroup].start = newStart;\n me.subgroups[subgroup].end = newEnd;\n\n }\n }\n}\n\nGroup.prototype.orderSubgroups = function() {\n if (this.subgroupOrderer !== undefined) {\n var sortArray = [];\n if (typeof this.subgroupOrderer == 'string') {\n for (var subgroup in this.subgroups) {\n sortArray.push({subgroup: subgroup, sortField: this.subgroups[subgroup].items[0].data[this.subgroupOrderer]})\n }\n sortArray.sort(function (a, b) {\n return a.sortField - b.sortField;\n })\n }\n else if (typeof this.subgroupOrderer == 'function') {\n for (var subgroup in this.subgroups) {\n sortArray.push(this.subgroups[subgroup].items[0].data);\n }\n sortArray.sort(this.subgroupOrderer);\n }\n\n if (sortArray.length > 0) {\n for (var i = 0; i < sortArray.length; i++) {\n this.subgroups[sortArray[i].subgroup].index = i;\n }\n }\n }\n};\n\nGroup.prototype.resetSubgroups = function() {\n for (var subgroup in this.subgroups) {\n if (this.subgroups.hasOwnProperty(subgroup)) {\n this.subgroups[subgroup].visible = false;\n }\n }\n};\n\n/**\n * Remove an item from the group\n * @param {Item} item\n */\nGroup.prototype.remove = function(item) {\n delete this.items[item.id];\n item.setParent(null);\n\n // remove from visible items\n var index = this.visibleItems.indexOf(item);\n if (index != -1) this.visibleItems.splice(index, 1);\n\n if(item.data.subgroup !== undefined){\n var subgroup = this.subgroups[item.data.subgroup];\n if (subgroup){\n var itemIndex = subgroup.items.indexOf(item);\n subgroup.items.splice(itemIndex,1);\n if (!subgroup.items.length){\n delete this.subgroups[item.data.subgroup];\n this.subgroupIndex--;\n } else {\n this._updateSubgroupsSizes();\n }\n this.orderSubgroups();\n }\n }\n};\n\n\n/**\n * Remove an item from the corresponding DataSet\n * @param {Item} item\n */\nGroup.prototype.removeFromDataSet = function(item) {\n this.itemSet.removeItem(item.id);\n};\n\n\n/**\n * Reorder the items\n */\nGroup.prototype.order = function() {\n var array = util.toArray(this.items);\n var startArray = [];\n var endArray = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i].data.end !== undefined) {\n endArray.push(array[i]);\n }\n startArray.push(array[i]);\n }\n this.orderedItems = {\n byStart: startArray,\n byEnd: endArray\n };\n\n stack.orderByStart(this.orderedItems.byStart);\n stack.orderByEnd(this.orderedItems.byEnd);\n};\n\n\n/**\n * Update the visible items\n * @param {{byStart: Item[], byEnd: Item[]}} orderedItems All items ordered by start date and by end date\n * @param {Item[]} visibleItems The previously visible items.\n * @param {{start: number, end: number}} range Visible range\n * @return {Item[]} visibleItems The new visible items.\n * @private\n */\nGroup.prototype._updateItemsInRange = function(orderedItems, oldVisibleItems, range) {\n var visibleItems = [];\n var visibleItemsLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems\n\n var interval = (range.end - range.start) / 4;\n var lowerBound = range.start - interval;\n var upperBound = range.end + interval;\n\n // this function is used to do the binary search.\n var searchFunction = function (value) {\n if (value < lowerBound) {return -1;}\n else if (value <= upperBound) {return 0;}\n else {return 1;}\n }\n\n // first check if the items that were in view previously are still in view.\n // IMPORTANT: this handles the case for the items with startdate before the window and enddate after the window!\n // also cleans up invisible items.\n if (oldVisibleItems.length > 0) {\n for (var i = 0; i < oldVisibleItems.length; i++) {\n this._checkIfVisibleWithReference(oldVisibleItems[i], visibleItems, visibleItemsLookup, range);\n }\n }\n\n // we do a binary search for the items that have only start values.\n var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start');\n\n // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the start values.\n this._traceVisible(initialPosByStart, orderedItems.byStart, visibleItems, visibleItemsLookup, function (item) {\n return (item.data.start < lowerBound || item.data.start > upperBound);\n });\n\n // if the window has changed programmatically without overlapping the old window, the ranged items with start < lowerBound and end > upperbound are not shown.\n // We therefore have to brute force check all items in the byEnd list\n if (this.checkRangedItems == true) {\n this.checkRangedItems = false;\n for (i = 0; i < orderedItems.byEnd.length; i++) {\n this._checkIfVisibleWithReference(orderedItems.byEnd[i], visibleItems, visibleItemsLookup, range);\n }\n }\n else {\n // we do a binary search for the items that have defined end times.\n var initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, searchFunction, 'data','end');\n\n // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the end values.\n this._traceVisible(initialPosByEnd, orderedItems.byEnd, visibleItems, visibleItemsLookup, function (item) {\n return (item.data.end < lowerBound || item.data.end > upperBound);\n });\n }\n\n // finally, we reposition all the visible items.\n for (var i = 0; i < visibleItems.length; i++) {\n var item = visibleItems[i];\n if (!item.displayed) item.show();\n // reposition item horizontally\n item.repositionX();\n }\n \n return visibleItems;\n};\n\nGroup.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) {\n if (initialPos != -1) {\n for (var i = initialPos; i >= 0; i--) {\n var item = items[i];\n if (breakCondition(item)) {\n break;\n }\n else {\n if (visibleItemsLookup[item.id] === undefined) {\n visibleItemsLookup[item.id] = true;\n visibleItems.push(item);\n }\n }\n }\n\n for (var i = initialPos + 1; i < items.length; i++) {\n var item = items[i];\n if (breakCondition(item)) {\n break;\n }\n else {\n if (visibleItemsLookup[item.id] === undefined) {\n visibleItemsLookup[item.id] = true;\n visibleItems.push(item);\n }\n }\n }\n }\n}\n\n\n/**\n * this function is very similar to the _checkIfInvisible() but it does not\n * return booleans, hides the item if it should not be seen and always adds to\n * the visibleItems.\n * this one is for brute forcing and hiding.\n *\n * @param {Item} item\n * @param {Array} visibleItems\n * @param {{start:number, end:number}} range\n * @private\n */\nGroup.prototype._checkIfVisible = function(item, visibleItems, range) {\n if (item.isVisible(range)) {\n if (!item.displayed) item.show();\n // reposition item horizontally\n item.repositionX();\n visibleItems.push(item);\n }\n else {\n if (item.displayed) item.hide();\n }\n};\n\n\n/**\n * this function is very similar to the _checkIfInvisible() but it does not\n * return booleans, hides the item if it should not be seen and always adds to\n * the visibleItems.\n * this one is for brute forcing and hiding.\n *\n * @param {Item} item\n * @param {Array} visibleItems\n * @param {{start:number, end:number}} range\n * @private\n */\nGroup.prototype._checkIfVisibleWithReference = function(item, visibleItems, visibleItemsLookup, range) {\n if (item.isVisible(range)) {\n if (visibleItemsLookup[item.id] === undefined) {\n visibleItemsLookup[item.id] = true;\n visibleItems.push(item);\n }\n }\n else {\n if (item.displayed) item.hide();\n }\n};\n\n\n\nmodule.exports = Group;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/Group.js","// Utility functions for ordering and stacking of items\nvar EPSILON = 0.001; // used when checking collisions, to prevent round-off errors\n\n/**\n * Order items by their start data\n * @param {Item[]} items\n */\nexports.orderByStart = function(items) {\n items.sort(function (a, b) {\n return a.data.start - b.data.start;\n });\n};\n\n/**\n * Order items by their end date. If they have no end date, their start date\n * is used.\n * @param {Item[]} items\n */\nexports.orderByEnd = function(items) {\n items.sort(function (a, b) {\n var aTime = ('end' in a.data) ? a.data.end : a.data.start,\n bTime = ('end' in b.data) ? b.data.end : b.data.start;\n\n return aTime - bTime;\n });\n};\n\n/**\n * Adjust vertical positions of the items such that they don't overlap each\n * other.\n * @param {Item[]} items\n * All visible items\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n * Margins between items and between items and the axis.\n * @param {boolean} [force=false]\n * If true, all items will be repositioned. If false (default), only\n * items having a top===null will be re-stacked\n */\nexports.stack = function(items, margin, force) {\n if (force) {\n // reset top position of all items\n for (var i = 0; i < items.length; i++) {\n items[i].top = null;\n }\n }\n\n // calculate new, non-overlapping positions\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n if (item.stack && item.top === null) {\n // initialize top position\n item.top = margin.axis;\n\n do {\n // TODO: optimize checking for overlap. when there is a gap without items,\n // you only need to check for items from the next item on, not from zero\n var collidingItem = null;\n for (var j = 0, jj = items.length; j < jj; j++) {\n var other = items[j];\n if (other.top !== null && other !== item && other.stack && exports.collision(item, other, margin.item, other.options.rtl)) {\n collidingItem = other;\n break;\n }\n }\n\n if (collidingItem != null) {\n // There is a collision. Reposition the items above the colliding element\n item.top = collidingItem.top + collidingItem.height + margin.item.vertical;\n }\n } while (collidingItem);\n }\n }\n};\n\n\n/**\n * Adjust vertical positions of the items without stacking them\n * @param {Item[]} items\n * All visible items\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n * Margins between items and between items and the axis.\n* @param {subgroups[]} subgroups\n * All subgroups\n */\n exports.nostack = function(items, margin, subgroups, stackSubgroups) {\n for (var i = 0; i < items.length; i++) {\n if (items[i].data.subgroup == undefined) {\n items[i].top = margin.item.vertical;\n } else if (items[i].data.subgroup !== undefined && stackSubgroups) {\n var newTop = 0;\n for (var subgroup in subgroups) {\n if (subgroups.hasOwnProperty(subgroup)) {\n if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroups[items[i].data.subgroup].index) {\n newTop += subgroups[subgroup].height;\n subgroups[items[i].data.subgroup].top = newTop;\n }\n }\n }\n items[i].top = newTop + 0.5 * margin.item.vertical;\n }\n }\n if (!stackSubgroups) {\n exports.stackSubgroups(items, margin, subgroups)\n }\n};\n\n/**\n * Adjust vertical positions of the subgroups such that they don't overlap each\n * other.\n * @param {subgroups[]} subgroups\n * All subgroups\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n * Margins between items and between items and the axis.\n */\nexports.stackSubgroups = function(items, margin, subgroups) {\n for (var subgroup in subgroups) {\n if (subgroups.hasOwnProperty(subgroup)) {\n\n\n subgroups[subgroup].top = 0;\n do {\n // TODO: optimize checking for overlap. when there is a gap without items,\n // you only need to check for items from the next item on, not from zero\n var collidingItem = null;\n for (var otherSubgroup in subgroups) {\n if (subgroups[otherSubgroup].top !== null && otherSubgroup !== subgroup && subgroups[subgroup].index > subgroups[otherSubgroup].index && exports.collisionByTimes(subgroups[subgroup], subgroups[otherSubgroup])) {\n collidingItem = subgroups[otherSubgroup];\n break;\n }\n }\n\n if (collidingItem != null) {\n // There is a collision. Reposition the subgroups above the colliding element\n subgroups[subgroup].top = collidingItem.top + collidingItem.height;\n }\n } while (collidingItem);\n }\n }\n for (var i = 0; i < items.length; i++) {\n if (items[i].data.subgroup !== undefined) {\n items[i].top = subgroups[items[i].data.subgroup].top + 0.5 * margin.item.vertical;\n }\n }\n}\n\n/**\n * Test if the two provided items collide\n * The items must have parameters left, width, top, and height.\n * @param {Item} a The first item\n * @param {Item} b The second item\n * @param {{horizontal: number, vertical: number}} margin\n * An object containing a horizontal and vertical\n * minimum required margin.\n * @param {boolean} rtl\n * @return {boolean} true if a and b collide, else false\n */\nexports.collision = function(a, b, margin, rtl) {\n if (rtl) {\n return ((a.right - margin.horizontal + EPSILON) < (b.right + b.width) &&\n (a.right + a.width + margin.horizontal - EPSILON) > b.right &&\n (a.top - margin.vertical + EPSILON) < (b.top + b.height) &&\n (a.top + a.height + margin.vertical - EPSILON) > b.top);\n } else {\n return ((a.left - margin.horizontal + EPSILON) < (b.left + b.width) &&\n (a.left + a.width + margin.horizontal - EPSILON) > b.left &&\n (a.top - margin.vertical + EPSILON) < (b.top + b.height) &&\n (a.top + a.height + margin.vertical - EPSILON) > b.top);\n }\n};\n\n/**\n * Test if the two provided objects collide\n * The objects must have parameters start, end, top, and height.\n * @param {Object} a The first Object\n * @param {Object} b The second Object\n * @return {boolean} true if a and b collide, else false\n */\nexports.collisionByTimes = function(a, b) {\n return (\n (a.start <= b.start && a.end >= b.start && a.top < (b.top + b.height) && (a.top + a.height) > b.top ) ||\n (b.start <= a.start && b.end >= a.start && b.top < (a.top + a.height) && (b.top + b.height) > a.top )\n )\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/Stack.js","var Hammer = require('../../../module/hammer');\nvar Item = require('./Item');\n\n/**\n * @constructor RangeItem\n * @extends Item\n * @param {Object} data Object containing parameters start, end\n * content, className.\n * @param {{toScreen: function, toTime: function}} conversion\n * Conversion functions from time to screen and vice versa\n * @param {Object} [options] Configuration options\n * // TODO: describe options\n */\nfunction RangeItem (data, conversion, options) {\n this.props = {\n content: {\n width: 0\n }\n };\n this.overflow = false; // if contents can overflow (css styling), this flag is set to true\n this.options = options;\n // validate data\n if (data) {\n if (data.start == undefined) {\n throw new Error('Property \"start\" missing in item ' + data.id);\n }\n if (data.end == undefined) {\n throw new Error('Property \"end\" missing in item ' + data.id);\n }\n }\n\n Item.call(this, data, conversion, options);\n}\n\nRangeItem.prototype = new Item (null, null, null);\n\nRangeItem.prototype.baseClassName = 'vis-item vis-range';\n\n/**\n * Check whether this item is visible inside given range\n * @returns {{start: Number, end: Number}} range with a timestamp for start and end\n * @returns {boolean} True if visible\n */\nRangeItem.prototype.isVisible = function(range) {\n // determine visibility\n return (this.data.start < range.end) && (this.data.end > range.start);\n};\n\n/**\n * Repaint the item\n */\nRangeItem.prototype.redraw = function() {\n var dom = this.dom;\n if (!dom) {\n // create DOM\n this.dom = {};\n dom = this.dom;\n\n // background box\n dom.box = document.createElement('div');\n // className is updated in redraw()\n\n // frame box (to prevent the item contents from overflowing)\n dom.frame = document.createElement('div');\n dom.frame.className = 'vis-item-overflow';\n dom.box.appendChild(dom.frame);\n \n // visible frame box (showing the frame that is always visible)\n dom.visibleFrame = document.createElement('div');\n dom.visibleFrame.className = 'vis-item-visible-frame';\n dom.box.appendChild(dom.visibleFrame);\n\n // contents box\n dom.content = document.createElement('div');\n dom.content.className = 'vis-item-content';\n dom.frame.appendChild(dom.content);\n\n // attach this item as attribute\n dom.box['timeline-item'] = this;\n\n this.dirty = true;\n }\n\n // append DOM to parent DOM\n if (!this.parent) {\n throw new Error('Cannot redraw item: no parent attached');\n }\n if (!dom.box.parentNode) {\n var foreground = this.parent.dom.foreground;\n if (!foreground) {\n throw new Error('Cannot redraw item: parent has no foreground container element');\n }\n foreground.appendChild(dom.box);\n }\n this.displayed = true;\n\n // Update DOM when item is marked dirty. An item is marked dirty when:\n // - the item is not yet rendered\n // - the item's data is changed\n // - the item is selected/deselected\n if (this.dirty) {\n this._updateContents(this.dom.content);\n this._updateTitle();\n this._updateDataAttributes(this.dom.box);\n this._updateStyle(this.dom.box);\n\n var editable = (this.options.editable.updateTime || \n this.options.editable.updateGroup ||\n this.editable === true) &&\n this.editable !== false;\n\n // update class\n var className = (this.data.className ? (' ' + this.data.className) : '') +\n (this.selected ? ' vis-selected' : '') + \n (editable ? ' vis-editable' : ' vis-readonly');\n dom.box.className = this.baseClassName + className;\n\n // determine from css whether this box has overflow\n this.overflow = window.getComputedStyle(dom.frame).overflow !== 'hidden';\n\n // recalculate size\n // turn off max-width to be able to calculate the real width\n // this causes an extra browser repaint/reflow, but so be it\n this.dom.content.style.maxWidth = 'none';\n this.props.content.width = this.dom.content.offsetWidth;\n this.height = this.dom.box.offsetHeight;\n this.dom.content.style.maxWidth = '';\n\n this.dirty = false;\n }\n\n this._repaintOnItemUpdateTimeTooltip(dom.box);\n this._repaintDeleteButton(dom.box);\n this._repaintDragCenter();\n this._repaintDragLeft();\n this._repaintDragRight();\n};\n\n/**\n * Show the item in the DOM (when not already visible). The items DOM will\n * be created when needed.\n */\nRangeItem.prototype.show = function() {\n if (!this.displayed) {\n this.redraw();\n }\n};\n\n/**\n * Hide the item from the DOM (when visible)\n * @return {Boolean} changed\n */\nRangeItem.prototype.hide = function() {\n if (this.displayed) {\n var box = this.dom.box;\n\n if (box.parentNode) {\n box.parentNode.removeChild(box);\n }\n\n this.displayed = false;\n }\n};\n\n/**\n * Reposition the item horizontally\n * @param {boolean} [limitSize=true] If true (default), the width of the range\n * item will be limited, as the browser cannot\n * display very wide divs. This means though\n * that the applied left and width may\n * not correspond to the ranges start and end\n * @Override\n */\nRangeItem.prototype.repositionX = function(limitSize) {\n var parentWidth = this.parent.width;\n var start = this.conversion.toScreen(this.data.start);\n var end = this.conversion.toScreen(this.data.end);\n var contentStartPosition;\n var contentWidth;\n\n // limit the width of the range, as browsers cannot draw very wide divs\n if (limitSize === undefined || limitSize === true) {\n if (start < -parentWidth) {\n start = -parentWidth;\n }\n if (end > 2 * parentWidth) {\n end = 2 * parentWidth;\n }\n }\n\n // add 0.5 to compensate floating-point values rounding\n var boxWidth = Math.max(end - start + 0.5, 1);\n\n if (this.overflow) {\n if (this.options.rtl) {\n this.right = start;\n } else {\n this.left = start;\n }\n this.width = boxWidth + this.props.content.width;\n contentWidth = this.props.content.width;\n\n // Note: The calculation of width is an optimistic calculation, giving\n // a width which will not change when moving the Timeline\n // So no re-stacking needed, which is nicer for the eye;\n }\n else {\n if (this.options.rtl) {\n this.right = start;\n } else {\n this.left = start;\n }\n this.width = boxWidth;\n contentWidth = Math.min(end - start, this.props.content.width);\n }\n\n if (this.options.rtl) {\n this.dom.box.style.right = this.right + 'px';\n } else {\n this.dom.box.style.left = this.left + 'px'; \n }\n this.dom.box.style.width = boxWidth + 'px';\n\n switch (this.options.align) {\n case 'left':\n if (this.options.rtl) {\n this.dom.content.style.right = '0';\n } else {\n this.dom.content.style.left = '0';\n }\n break;\n\n case 'right':\n if (this.options.rtl) {\n this.dom.content.style.right = Math.max((boxWidth - contentWidth), 0) + 'px';\n } else {\n this.dom.content.style.left = Math.max((boxWidth - contentWidth), 0) + 'px';\n }\n break;\n\n case 'center':\n if (this.options.rtl) {\n this.dom.content.style.right = Math.max((boxWidth - contentWidth) / 2, 0) + 'px';\n } else {\n this.dom.content.style.left = Math.max((boxWidth - contentWidth) / 2, 0) + 'px';\n }\n \n break;\n\n default: // 'auto'\n // when range exceeds left of the window, position the contents at the left of the visible area\n if (this.overflow) {\n if (end > 0) {\n contentStartPosition = Math.max(-start, 0);\n }\n else {\n contentStartPosition = -contentWidth; // ensure it's not visible anymore\n }\n }\n else {\n if (start < 0) {\n contentStartPosition = -start;\n }\n else {\n contentStartPosition = 0;\n }\n }\n if (this.options.rtl) {\n this.dom.content.style.right = contentStartPosition + 'px';\n } else {\n this.dom.content.style.left = contentStartPosition + 'px';\n this.dom.content.style.width = 'calc(100% - ' + contentStartPosition + 'px)';\n }\n }\n};\n\n/**\n * Reposition the item vertically\n * @Override\n */\nRangeItem.prototype.repositionY = function() {\n var orientation = this.options.orientation.item;\n var box = this.dom.box;\n\n if (orientation == 'top') {\n box.style.top = this.top + 'px';\n }\n else {\n box.style.top = (this.parent.height - this.top - this.height) + 'px';\n }\n};\n\n/**\n * Repaint a drag area on the left side of the range when the range is selected\n * @protected\n */\nRangeItem.prototype._repaintDragLeft = function () {\n if (this.selected && this.options.editable.updateTime && !this.dom.dragLeft) {\n // create and show drag area\n var dragLeft = document.createElement('div');\n dragLeft.className = 'vis-drag-left';\n dragLeft.dragLeftItem = this;\n\n this.dom.box.appendChild(dragLeft);\n this.dom.dragLeft = dragLeft;\n }\n else if (!this.selected && this.dom.dragLeft) {\n // delete drag area\n if (this.dom.dragLeft.parentNode) {\n this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft);\n }\n this.dom.dragLeft = null;\n }\n};\n\n/**\n * Repaint a drag area on the right side of the range when the range is selected\n * @protected\n */\nRangeItem.prototype._repaintDragRight = function () {\n if (this.selected && this.options.editable.updateTime && !this.dom.dragRight) {\n // create and show drag area\n var dragRight = document.createElement('div');\n dragRight.className = 'vis-drag-right';\n dragRight.dragRightItem = this;\n\n this.dom.box.appendChild(dragRight);\n this.dom.dragRight = dragRight;\n }\n else if (!this.selected && this.dom.dragRight) {\n // delete drag area\n if (this.dom.dragRight.parentNode) {\n this.dom.dragRight.parentNode.removeChild(this.dom.dragRight);\n }\n this.dom.dragRight = null;\n }\n};\n\nmodule.exports = RangeItem;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/item/RangeItem.js","var Hammer = require('../../../module/hammer');\nvar util = require('../../../util');\nvar moment = require('../../../module/moment');\n\n\n/**\n * @constructor Item\n * @param {Object} data Object containing (optional) parameters type,\n * start, end, content, group, className.\n * @param {{toScreen: function, toTime: function}} conversion\n * Conversion functions from time to screen and vice versa\n * @param {Object} options Configuration options\n * // TODO: describe available options\n */\nfunction Item (data, conversion, options) {\n this.id = null;\n this.parent = null;\n this.data = data;\n this.dom = null;\n this.conversion = conversion || {};\n this.options = options || {}; \n this.selected = false;\n this.displayed = false;\n this.groupShowing = true;\n this.dirty = true;\n this.popup = null;\n\n this.top = null;\n this.right = null;\n this.left = null;\n this.width = null;\n this.height = null;\n\n this.editable = null;\n if (this.data && this.data.hasOwnProperty('editable')){\n if(typeof this.data.editable === 'boolean') {\n this.editable = {\n updateTime: this.data.editable,\n updateGroup: this.data.editable,\n remove: this.data.editable\n }\n }\n else if(typeof options.editable === 'object') {\n this.editable = {};\n util.selectiveExtend(['updateTime', 'updateGroup', 'remove'], this.editable, data.editable);\n };\n }\n}\n\nItem.prototype.stack = true;\n\n/**\n * Select current item\n */\nItem.prototype.select = function() {\n this.selected = true;\n this.dirty = true;\n if (this.displayed) this.redraw();\n};\n\n/**\n * Unselect current item\n */\nItem.prototype.unselect = function() {\n this.selected = false;\n this.dirty = true;\n if (this.displayed) this.redraw();\n};\n\n/**\n * Set data for the item. Existing data will be updated. The id should not\n * be changed. When the item is displayed, it will be redrawn immediately.\n * @param {Object} data\n */\nItem.prototype.setData = function(data) {\n var groupChanged = data.group != undefined && this.data.group != data.group;\n if (groupChanged) {\n this.parent.itemSet._moveToGroup(this, data.group);\n }\n\n if (data.hasOwnProperty('editable')){\n if (typeof data.editable === 'boolean') {\n this.editable = {\n updateTime: this.data.editable,\n updateGroup: this.data.editable,\n remove: this.data.editable\n }\n }\n else if(typeof options.editable === 'object') {\n this.editable = {};\n util.selectiveExtend(['updateTime', 'updateGroup', 'remove'], this.editable, data.editable);\n }\n }\n\n this.data = data;\n this.dirty = true;\n if (this.displayed) this.redraw();\n};\n\n/**\n * Set a parent for the item\n * @param {ItemSet | Group} parent\n */\nItem.prototype.setParent = function(parent) {\n if (this.displayed) {\n this.hide();\n this.parent = parent;\n if (this.parent) {\n this.show();\n }\n }\n else {\n this.parent = parent;\n }\n};\n\n/**\n * Check whether this item is visible inside given range\n * @returns {{start: Number, end: Number}} range with a timestamp for start and end\n * @returns {boolean} True if visible\n */\nItem.prototype.isVisible = function(range) {\n return false;\n};\n\n/**\n * Show the Item in the DOM (when not already visible)\n * @return {Boolean} changed\n */\nItem.prototype.show = function() {\n return false;\n};\n\n/**\n * Hide the Item from the DOM (when visible)\n * @return {Boolean} changed\n */\nItem.prototype.hide = function() {\n return false;\n};\n\n/**\n * Repaint the item\n */\nItem.prototype.redraw = function() {\n // should be implemented by the item\n};\n\n/**\n * Reposition the Item horizontally\n */\nItem.prototype.repositionX = function() {\n // should be implemented by the item\n};\n\n/**\n * Reposition the Item vertically\n */\nItem.prototype.repositionY = function() {\n // should be implemented by the item\n};\n\n/**\n * Repaint a drag area on the center of the item when the item is selected\n * @protected\n */\nItem.prototype._repaintDragCenter = function () {\n if (this.selected && this.options.editable.updateTime && !this.dom.dragCenter) {\n var me = this;\n\n // create and show drag area\n var dragCenter = document.createElement('div');\n dragCenter.className = 'vis-drag-center';\n dragCenter.dragCenterItem = this;\n\n new Hammer(dragCenter).on('doubletap', function (event) {\n event.stopPropagation();\n me.parent.itemSet._onUpdateItem(me);\n });\n\n if (this.dom.box) {\n this.dom.box.appendChild(dragCenter);\n } \n else if (this.dom.point) {\n this.dom.point.appendChild(dragCenter);\n }\n \n this.dom.dragCenter = dragCenter;\n }\n else if (!this.selected && this.dom.dragCenter) {\n // delete drag area\n if (this.dom.dragCenter.parentNode) {\n this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter);\n }\n this.dom.dragCenter = null;\n }\n};\n\n/**\n * Repaint a delete button on the top right of the item when the item is selected\n * @param {HTMLElement} anchor\n * @protected\n */\nItem.prototype._repaintDeleteButton = function (anchor) {\n var editable = ((this.options.editable.overrideItems || this.editable == null) && this.options.editable.remove) ||\n (!this.options.editable.overrideItems && this.editable != null && this.editable.remove);\n\n if (this.selected && editable && !this.dom.deleteButton) {\n // create and show button\n var me = this;\n\n var deleteButton = document.createElement('div');\n\n if (this.options.rtl) {\n deleteButton.className = 'vis-delete-rtl';\n } else {\n deleteButton.className = 'vis-delete';\n }\n deleteButton.title = 'Delete this item';\n\n // TODO: be able to destroy the delete button\n new Hammer(deleteButton).on('tap', function (event) {\n event.stopPropagation();\n me.parent.removeFromDataSet(me);\n });\n\n anchor.appendChild(deleteButton);\n this.dom.deleteButton = deleteButton;\n }\n else if (!this.selected && this.dom.deleteButton) {\n // remove button\n if (this.dom.deleteButton.parentNode) {\n this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton);\n }\n this.dom.deleteButton = null;\n }\n};\n\n/**\n * Repaint a onChange tooltip on the top right of the item when the item is selected\n * @param {HTMLElement} anchor\n * @protected\n */\nItem.prototype._repaintOnItemUpdateTimeTooltip = function (anchor) {\n if (!this.options.tooltipOnItemUpdateTime) return;\n\n var editable = (this.options.editable.updateTime || \n this.data.editable === true) &&\n this.data.editable !== false;\n\n if (this.selected && editable && !this.dom.onItemUpdateTimeTooltip) {\n // create and show tooltip\n var me = this;\n\n var onItemUpdateTimeTooltip = document.createElement('div');\n\n onItemUpdateTimeTooltip.className = 'vis-onUpdateTime-tooltip';\n anchor.appendChild(onItemUpdateTimeTooltip);\n this.dom.onItemUpdateTimeTooltip = onItemUpdateTimeTooltip;\n\n } else if (!this.selected && this.dom.onItemUpdateTimeTooltip) {\n // remove button\n if (this.dom.onItemUpdateTimeTooltip.parentNode) {\n this.dom.onItemUpdateTimeTooltip.parentNode.removeChild(this.dom.onItemUpdateTimeTooltip);\n }\n this.dom.onItemUpdateTimeTooltip = null;\n }\n\n // position onChange tooltip\n if (this.dom.onItemUpdateTimeTooltip) {\n\n // only show when editing\n this.dom.onItemUpdateTimeTooltip.style.visibility = this.parent.itemSet.touchParams.itemIsDragging ? 'visible' : 'hidden';\n \n // position relative to item's content\n if (this.options.rtl) {\n this.dom.onItemUpdateTimeTooltip.style.right = this.dom.content.style.right;\n } else {\n this.dom.onItemUpdateTimeTooltip.style.left = this.dom.content.style.left;\n }\n\n // position above or below the item depending on the item's position in the window\n var tooltipOffset = 50; // TODO: should be tooltip height (depends on template)\n var scrollTop = this.parent.itemSet.body.domProps.scrollTop;\n\n // TODO: this.top for orientation:true is actually the items distance from the bottom... \n // (should be this.bottom)\n var itemDistanceFromTop \n if (this.options.orientation.item == 'top') {\n itemDistanceFromTop = this.top;\n } else {\n itemDistanceFromTop = (this.parent.height - this.top - this.height)\n }\n var isCloseToTop = itemDistanceFromTop + this.parent.top - tooltipOffset < -scrollTop;\n\n if (isCloseToTop) {\n this.dom.onItemUpdateTimeTooltip.style.bottom = \"\";\n this.dom.onItemUpdateTimeTooltip.style.top = this.height + 2 + \"px\";\n } else {\n this.dom.onItemUpdateTimeTooltip.style.top = \"\";\n this.dom.onItemUpdateTimeTooltip.style.bottom = this.height + 2 + \"px\";\n }\n \n // handle tooltip content\n var content;\n var templateFunction;\n\n if (this.options.tooltipOnItemUpdateTime && this.options.tooltipOnItemUpdateTime.template) {\n templateFunction = this.options.tooltipOnItemUpdateTime.template.bind(this);\n content = templateFunction(this.data);\n } else {\n content = 'start: ' + moment(this.data.start).format('MM/DD/YYYY hh:mm');\n if (this.data.end) { \n content += '
end: ' + moment(this.data.end).format('MM/DD/YYYY hh:mm');\n }\n }\n this.dom.onItemUpdateTimeTooltip.innerHTML = content;\n }\n};\n\n\n/**\n * Set HTML contents for the item\n * @param {Element} element HTML element to fill with the contents\n * @private\n */\nItem.prototype._updateContents = function (element) {\n var content;\n var templateFunction;\n var itemVisibleFrameContent;\n var visibleFrameTemplateFunction; \n var itemData = this.parent.itemSet.itemsData.get(this.id); // get a clone of the data from the dataset\n\n var frameElement = this.dom.box || this.dom.point;\n var itemVisibleFrameContentElement = frameElement.getElementsByClassName('vis-item-visible-frame')[0]\n\n if (this.options.visibleFrameTemplate) {\n visibleFrameTemplateFunction = this.options.visibleFrameTemplate.bind(this);\n itemVisibleFrameContent = visibleFrameTemplateFunction(itemData, frameElement);\n } else {\n itemVisibleFrameContent = '';\n }\n \n if (itemVisibleFrameContentElement) {\n if ((itemVisibleFrameContent instanceof Object) && !(itemVisibleFrameContent instanceof Element)) {\n visibleFrameTemplateFunction(itemData, itemVisibleFrameContentElement)\n } else {\n var changed = this._contentToString(this.itemVisibleFrameContent) !== this._contentToString(itemVisibleFrameContent);\n if (changed) {\n // only replace the content when changed\n if (itemVisibleFrameContent instanceof Element) {\n itemVisibleFrameContentElement.innerHTML = '';\n itemVisibleFrameContentElement.appendChild(itemVisibleFrameContent);\n }\n else if (itemVisibleFrameContent != undefined) {\n itemVisibleFrameContentElement.innerHTML = itemVisibleFrameContent;\n }\n else {\n if (!(this.data.type == 'background' && this.data.content === undefined)) {\n throw new Error('Property \"content\" missing in item ' + this.id);\n }\n }\n\n this.itemVisibleFrameContent = itemVisibleFrameContent;\n }\n }\n }\n\n if (this.options.template) {\n templateFunction = this.options.template.bind(this);\n content = templateFunction(itemData, element);\n } else {\n content = this.data.content;\n }\n\n if ((content instanceof Object) && !(content instanceof Element)) {\n templateFunction(itemData, element)\n } else {\n var changed = this._contentToString(this.content) !== this._contentToString(content);\n if (changed) {\n // only replace the content when changed\n if (content instanceof Element) {\n element.innerHTML = '';\n element.appendChild(content);\n }\n else if (content != undefined) {\n element.innerHTML = content;\n }\n else {\n if (!(this.data.type == 'background' && this.data.content === undefined)) {\n throw new Error('Property \"content\" missing in item ' + this.id);\n }\n }\n\n this.content = content;\n }\n }\n};\n\n/**\n * Set HTML contents for the item\n * @private\n */\nItem.prototype._updateTitle = function () {\n if (this.data.title != null) {\n if (this.popup != null) {\n this.popup.setText(this.data.title || '');\n }\n }\n};\n\n/**\n * Process dataAttributes timeline option and set as data- attributes on dom.content\n * @param {Element} element HTML element to which the attributes will be attached\n * @private\n */\n Item.prototype._updateDataAttributes = function(element) {\n if (this.options.dataAttributes && this.options.dataAttributes.length > 0) {\n var attributes = [];\n\n if (Array.isArray(this.options.dataAttributes)) {\n attributes = this.options.dataAttributes;\n }\n else if (this.options.dataAttributes == 'all') {\n attributes = Object.keys(this.data);\n }\n else {\n return;\n }\n\n for (var i = 0; i < attributes.length; i++) {\n var name = attributes[i];\n var value = this.data[name];\n\n if (value != null) {\n element.setAttribute('data-' + name, value);\n }\n else {\n element.removeAttribute('data-' + name);\n }\n }\n }\n};\n\n/**\n * Update custom styles of the element\n * @param element\n * @private\n */\nItem.prototype._updateStyle = function(element) {\n // remove old styles\n if (this.style) {\n util.removeCssText(element, this.style);\n this.style = null;\n }\n\n // append new styles\n if (this.data.style) {\n util.addCssText(element, this.data.style);\n this.style = this.data.style;\n }\n};\n\n\n/**\n * Stringify the items contents\n * @param {string | Element | undefined} content\n * @returns {string | undefined}\n * @private\n */\nItem.prototype._contentToString = function (content) {\n if (typeof content === 'string') return content;\n if (content && 'outerHTML' in content) return content.outerHTML;\n return content;\n};\n\n/**\n * Return the width of the item left from its start date\n * @return {number}\n */\nItem.prototype.getWidthLeft = function () {\n return 0;\n};\n\n/**\n * Return the width of the item right from the max of its start and end date\n * @return {number}\n */\nItem.prototype.getWidthRight = function () {\n return 0;\n};\n\n/**\n * Return the title of the item\n * @return {string | undefined}\n */\nItem.prototype.getTitle = function () {\n return this.data.title;\n};\n\n/**\n * Set the popup object, and update the title\n * @param {Popup} popup\n */\nItem.prototype.setPopup = function (popup) {\n this.popup = popup;\n this._updateTitle();\n};\n\nmodule.exports = Item;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/item/Item.js","var util = require('../../util');\nvar Group = require('./Group');\n\n/**\n * @constructor BackgroundGroup\n * @param {Number | String} groupId\n * @param {Object} data\n * @param {ItemSet} itemSet\n */\nfunction BackgroundGroup (groupId, data, itemSet) {\n Group.call(this, groupId, data, itemSet);\n\n this.width = 0;\n this.height = 0;\n this.top = 0;\n this.left = 0;\n}\n\nBackgroundGroup.prototype = Object.create(Group.prototype);\n\n/**\n * Repaint this group\n * @param {{start: number, end: number}} range\n * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin\n * @param {boolean} [restack=false] Force restacking of all items\n * @return {boolean} Returns true if the group is resized\n */\nBackgroundGroup.prototype.redraw = function(range, margin, restack) {\n var resized = false;\n\n this.visibleItems = this._updateItemsInRange(this.orderedItems, this.visibleItems, range);\n\n // calculate actual size\n this.width = this.dom.background.offsetWidth;\n\n // apply new height (just always zero for BackgroundGroup\n this.dom.background.style.height = '0';\n\n // update vertical position of items after they are re-stacked and the height of the group is calculated\n for (var i = 0, ii = this.visibleItems.length; i < ii; i++) {\n var item = this.visibleItems[i];\n item.repositionY(margin);\n }\n\n return resized;\n};\n\n/**\n * Show this group: attach to the DOM\n */\nBackgroundGroup.prototype.show = function() {\n if (!this.dom.background.parentNode) {\n this.itemSet.dom.background.appendChild(this.dom.background);\n }\n};\n\nmodule.exports = BackgroundGroup;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/BackgroundGroup.js","var Item = require('./Item');\nvar util = require('../../../util');\n\n/**\n * @constructor BoxItem\n * @extends Item\n * @param {Object} data Object containing parameters start\n * content, className.\n * @param {{toScreen: function, toTime: function}} conversion\n * Conversion functions from time to screen and vice versa\n * @param {Object} [options] Configuration options\n * // TODO: describe available options\n */\nfunction BoxItem (data, conversion, options) {\n this.props = {\n dot: {\n width: 0,\n height: 0\n },\n line: {\n width: 0,\n height: 0\n }\n };\n this.options = options;\n // validate data\n if (data) {\n if (data.start == undefined) {\n throw new Error('Property \"start\" missing in item ' + data);\n }\n }\n\n Item.call(this, data, conversion, options);\n}\n\nBoxItem.prototype = new Item (null, null, null);\n\n/**\n * Check whether this item is visible inside given range\n * @returns {{start: Number, end: Number}} range with a timestamp for start and end\n * @returns {boolean} True if visible\n */\nBoxItem.prototype.isVisible = function(range) {\n // determine visibility\n var isVisible;\n var align = this.options.align;\n var msPerPixel = (range.end - range.start) / range.body.dom.center.clientWidth;\n var widthInMs = this.width * msPerPixel;\n\n if (align == 'right') {\n isVisible = (this.data.start.getTime() > range.start ) && (this.data.start.getTime() - widthInMs < range.end);\n }\n else if (align == 'left') {\n isVisible = (this.data.start.getTime() + widthInMs > range.start ) && (this.data.start.getTime() < range.end);\n }\n else {\n // default or 'center'\n isVisible = (this.data.start.getTime() + widthInMs/2 > range.start ) && (this.data.start.getTime() - widthInMs/2 < range.end);\n }\n return isVisible;\n};\n\n/**\n * Repaint the item\n */\nBoxItem.prototype.redraw = function() {\n var dom = this.dom;\n if (!dom) {\n // create DOM\n this.dom = {};\n dom = this.dom;\n\n // create main box\n dom.box = document.createElement('DIV');\n\n // contents box (inside the background box). used for making margins\n dom.content = document.createElement('DIV');\n dom.content.className = 'vis-item-content';\n dom.box.appendChild(dom.content);\n\n // line to axis\n dom.line = document.createElement('DIV');\n dom.line.className = 'vis-line';\n\n // dot on axis\n dom.dot = document.createElement('DIV');\n dom.dot.className = 'vis-dot';\n\n // attach this item as attribute\n dom.box['timeline-item'] = this;\n\n this.dirty = true;\n }\n\n // append DOM to parent DOM\n if (!this.parent) {\n throw new Error('Cannot redraw item: no parent attached');\n }\n if (!dom.box.parentNode) {\n var foreground = this.parent.dom.foreground;\n if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element');\n foreground.appendChild(dom.box);\n }\n if (!dom.line.parentNode) {\n var background = this.parent.dom.background;\n if (!background) throw new Error('Cannot redraw item: parent has no background container element');\n background.appendChild(dom.line);\n }\n if (!dom.dot.parentNode) {\n var axis = this.parent.dom.axis;\n if (!background) throw new Error('Cannot redraw item: parent has no axis container element');\n axis.appendChild(dom.dot);\n }\n this.displayed = true;\n\n // Update DOM when item is marked dirty. An item is marked dirty when:\n // - the item is not yet rendered\n // - the item's data is changed\n // - the item is selected/deselected\n if (this.dirty) {\n this._updateContents(this.dom.content);\n this._updateTitle();\n this._updateDataAttributes(this.dom.box);\n this._updateStyle(this.dom.box);\n\n var editable = (this.options.editable.updateTime ||\n this.options.editable.updateGroup ||\n this.editable === true) &&\n this.editable !== false;\n\n // update class\n var className = (this.data.className? ' ' + this.data.className : '') +\n (this.selected ? ' vis-selected' : '') +\n (editable ? ' vis-editable' : ' vis-readonly');\n dom.box.className = 'vis-item vis-box' + className;\n dom.line.className = 'vis-item vis-line' + className;\n dom.dot.className = 'vis-item vis-dot' + className;\n\n // set initial position in the visible range of the grid so that the\n // rendered box size can be determinated correctly, even the content\n // has a dynamic width (fixes #2032).\n var previousRight = dom.box.style.right;\n var previousLeft = dom.box.style.left;\n if (this.options.rtl) {\n dom.box.style.right = \"0px\";\n } else {\n dom.box.style.left = \"0px\";\n }\n\n // recalculate size\n this.props.dot.height = dom.dot.offsetHeight;\n this.props.dot.width = dom.dot.offsetWidth;\n this.props.line.width = dom.line.offsetWidth;\n this.width = dom.box.offsetWidth;\n this.height = dom.box.offsetHeight;\n\n // restore previous position\n if (this.options.rtl) {\n dom.box.style.right = previousRight;\n } else {\n dom.box.style.left = previousLeft;\n }\n\n this.dirty = false;\n }\n\n this._repaintOnItemUpdateTimeTooltip(dom.box);\n this._repaintDragCenter();\n this._repaintDeleteButton(dom.box);\n};\n\n/**\n * Show the item in the DOM (when not already displayed). The items DOM will\n * be created when needed.\n */\nBoxItem.prototype.show = function() {\n if (!this.displayed) {\n this.redraw();\n }\n};\n\n/**\n * Hide the item from the DOM (when visible)\n */\nBoxItem.prototype.hide = function() {\n if (this.displayed) {\n var dom = this.dom;\n\n if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box);\n if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line);\n if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot);\n\n this.displayed = false;\n }\n};\n\n/**\n * Reposition the item horizontally\n * @Override\n */\nBoxItem.prototype.repositionX = function() {\n var start = this.conversion.toScreen(this.data.start);\n var align = this.options.align;\n\n // calculate left position of the box\n if (align == 'right') {\n if (this.options.rtl) {\n this.right = start - this.width;\n\n // reposition box, line, and dot\n this.dom.box.style.right = this.right + 'px';\n this.dom.line.style.right = (start - this.props.line.width) + 'px';\n this.dom.dot.style.right = (start - this.props.line.width / 2 - this.props.dot.width / 2) + 'px';\n } else {\n this.left = start - this.width;\n\n // reposition box, line, and dot\n this.dom.box.style.left = this.left + 'px';\n this.dom.line.style.left = (start - this.props.line.width) + 'px';\n this.dom.dot.style.left = (start - this.props.line.width / 2 - this.props.dot.width / 2) + 'px';\n }\n }\n else if (align == 'left') {\n if (this.options.rtl) {\n this.right = start;\n\n // reposition box, line, and dot\n this.dom.box.style.right = this.right + 'px';\n this.dom.line.style.right = start + 'px';\n this.dom.dot.style.right = (start + this.props.line.width / 2 - this.props.dot.width / 2) + 'px';\n } else {\n this.left = start;\n\n // reposition box, line, and dot\n this.dom.box.style.left = this.left + 'px';\n this.dom.line.style.left = start + 'px';\n this.dom.dot.style.left = (start + this.props.line.width / 2 - this.props.dot.width / 2) + 'px';\n }\n }\n else {\n // default or 'center'\n if (this.options.rtl) {\n this.right = start - this.width / 2;\n\n // reposition box, line, and dot\n this.dom.box.style.right = this.right + 'px';\n this.dom.line.style.right = (start - this.props.line.width) + 'px';\n this.dom.dot.style.right = (start - this.props.dot.width / 2) + 'px';\n } else {\n this.left = start - this.width / 2;\n\n // reposition box, line, and dot\n this.dom.box.style.left = this.left + 'px';\n this.dom.line.style.left = (start - this.props.line.width / 2) + 'px';\n this.dom.dot.style.left = (start - this.props.dot.width / 2) + 'px';\n }\n }\n};\n\n/**\n * Reposition the item vertically\n * @Override\n */\nBoxItem.prototype.repositionY = function() {\n var orientation = this.options.orientation.item;\n var box = this.dom.box;\n var line = this.dom.line;\n var dot = this.dom.dot;\n\n if (orientation == 'top') {\n box.style.top = (this.top || 0) + 'px';\n\n line.style.top = '0';\n line.style.height = (this.parent.top + this.top + 1) + 'px';\n line.style.bottom = '';\n }\n else { // orientation 'bottom'\n var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty\n var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top;\n\n box.style.top = (this.parent.height - this.top - this.height || 0) + 'px';\n line.style.top = (itemSetHeight - lineHeight) + 'px';\n line.style.bottom = '0';\n }\n\n dot.style.top = (-this.props.dot.height / 2) + 'px';\n};\n\n/**\n * Return the width of the item left from its start date\n * @return {number}\n */\nBoxItem.prototype.getWidthLeft = function () {\n return this.width / 2;\n};\n\n/**\n * Return the width of the item right from its start date\n * @return {number}\n */\nBoxItem.prototype.getWidthRight = function () {\n return this.width / 2;\n};\n\nmodule.exports = BoxItem;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/item/BoxItem.js","var Item = require('./Item');\n\n/**\n * @constructor PointItem\n * @extends Item\n * @param {Object} data Object containing parameters start\n * content, className.\n * @param {{toScreen: function, toTime: function}} conversion\n * Conversion functions from time to screen and vice versa\n * @param {Object} [options] Configuration options\n * // TODO: describe available options\n */\nfunction PointItem (data, conversion, options) {\n this.props = {\n dot: {\n top: 0,\n width: 0,\n height: 0\n },\n content: {\n height: 0,\n marginLeft: 0,\n marginRight: 0\n }\n };\n this.options = options;\n // validate data\n if (data) {\n if (data.start == undefined) {\n throw new Error('Property \"start\" missing in item ' + data);\n }\n }\n\n Item.call(this, data, conversion, options);\n}\n\nPointItem.prototype = new Item (null, null, null);\n\n/**\n * Check whether this item is visible inside given range\n * @returns {{start: Number, end: Number}} range with a timestamp for start and end\n * @returns {boolean} True if visible\n */\nPointItem.prototype.isVisible = function(range) {\n // determine visibility\n var msPerPixel = (range.end - range.start) / range.body.dom.center.clientWidth;\n var widthInMs = this.width * msPerPixel;\n \n return (this.data.start.getTime() + widthInMs > range.start ) && (this.data.start < range.end);\n};\n\n/**\n * Repaint the item\n */\nPointItem.prototype.redraw = function() {\n var dom = this.dom;\n if (!dom) {\n // create DOM\n this.dom = {};\n dom = this.dom;\n\n // background box\n dom.point = document.createElement('div');\n // className is updated in redraw()\n\n // contents box, right from the dot\n dom.content = document.createElement('div');\n dom.content.className = 'vis-item-content';\n dom.point.appendChild(dom.content);\n\n // dot at start\n dom.dot = document.createElement('div');\n dom.point.appendChild(dom.dot);\n\n // attach this item as attribute\n dom.point['timeline-item'] = this;\n\n this.dirty = true;\n }\n\n // append DOM to parent DOM\n if (!this.parent) {\n throw new Error('Cannot redraw item: no parent attached');\n }\n if (!dom.point.parentNode) {\n var foreground = this.parent.dom.foreground;\n if (!foreground) {\n throw new Error('Cannot redraw item: parent has no foreground container element');\n }\n foreground.appendChild(dom.point);\n }\n this.displayed = true;\n\n // Update DOM when item is marked dirty. An item is marked dirty when:\n // - the item is not yet rendered\n // - the item's data is changed\n // - the item is selected/deselected\n if (this.dirty) {\n this._updateContents(this.dom.content);\n this._updateTitle();\n this._updateDataAttributes(this.dom.point);\n this._updateStyle(this.dom.point);\n\n var editable = (this.options.editable.updateTime || \n this.options.editable.updateGroup ||\n this.editable === true) &&\n this.editable !== false;\n\n // update class\n var className = (this.data.className ? ' ' + this.data.className : '') +\n (this.selected ? ' vis-selected' : '') +\n (editable ? ' vis-editable' : ' vis-readonly');\n dom.point.className = 'vis-item vis-point' + className;\n dom.dot.className = 'vis-item vis-dot' + className;\n\n // recalculate size of dot and contents\n this.props.dot.width = dom.dot.offsetWidth;\n this.props.dot.height = dom.dot.offsetHeight;\n this.props.content.height = dom.content.offsetHeight;\n\n // resize contents\n if (this.options.rtl) {\n dom.content.style.marginRight = 2 * this.props.dot.width + 'px';\n } else {\n dom.content.style.marginLeft = 2 * this.props.dot.width + 'px';\n }\n //dom.content.style.marginRight = ... + 'px'; // TODO: margin right\n\n // recalculate size\n this.width = dom.point.offsetWidth;\n this.height = dom.point.offsetHeight;\n\n // reposition the dot\n dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px';\n if (this.options.rtl) {\n dom.dot.style.right = (this.props.dot.width / 2) + 'px';\n } else {\n dom.dot.style.left = (this.props.dot.width / 2) + 'px';\n }\n\n this.dirty = false;\n }\n \n this._repaintOnItemUpdateTimeTooltip(dom.point);\n this._repaintDragCenter();\n this._repaintDeleteButton(dom.point);\n};\n\n/**\n * Show the item in the DOM (when not already visible). The items DOM will\n * be created when needed.\n */\nPointItem.prototype.show = function() {\n if (!this.displayed) {\n this.redraw();\n }\n};\n\n/**\n * Hide the item from the DOM (when visible)\n */\nPointItem.prototype.hide = function() {\n if (this.displayed) {\n if (this.dom.point.parentNode) {\n this.dom.point.parentNode.removeChild(this.dom.point);\n }\n\n this.displayed = false;\n }\n};\n\n/**\n * Reposition the item horizontally\n * @Override\n */\nPointItem.prototype.repositionX = function() {\n var start = this.conversion.toScreen(this.data.start);\n\n if (this.options.rtl) {\n this.right = start - this.props.dot.width;\n\n // reposition point\n this.dom.point.style.right = this.right + 'px';\n } else {\n this.left = start - this.props.dot.width;\n\n // reposition point\n this.dom.point.style.left = this.left + 'px';\n }\n};\n\n/**\n * Reposition the item vertically\n * @Override\n */\nPointItem.prototype.repositionY = function() {\n var orientation = this.options.orientation.item;\n var point = this.dom.point;\n if (orientation == 'top') {\n point.style.top = this.top + 'px';\n }\n else {\n point.style.top = (this.parent.height - this.top - this.height) + 'px';\n }\n};\n\n/**\n * Return the width of the item left from its start date\n * @return {number}\n */\nPointItem.prototype.getWidthLeft = function () {\n return this.props.dot.width;\n};\n\n/**\n * Return the width of the item right from its start date\n * @return {number}\n */\nPointItem.prototype.getWidthRight = function () {\n return this.props.dot.width;\n};\n\nmodule.exports = PointItem;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/item/PointItem.js","var Hammer = require('../../../module/hammer');\nvar Item = require('./Item');\nvar BackgroundGroup = require('../BackgroundGroup');\nvar RangeItem = require('./RangeItem');\n\n/**\n * @constructor BackgroundItem\n * @extends Item\n * @param {Object} data Object containing parameters start, end\n * content, className.\n * @param {{toScreen: function, toTime: function}} conversion\n * Conversion functions from time to screen and vice versa\n * @param {Object} [options] Configuration options\n * // TODO: describe options\n */\n// TODO: implement support for the BackgroundItem just having a start, then being displayed as a sort of an annotation\nfunction BackgroundItem (data, conversion, options) {\n this.props = {\n content: {\n width: 0\n }\n };\n this.overflow = false; // if contents can overflow (css styling), this flag is set to true\n\n // validate data\n if (data) {\n if (data.start == undefined) {\n throw new Error('Property \"start\" missing in item ' + data.id);\n }\n if (data.end == undefined) {\n throw new Error('Property \"end\" missing in item ' + data.id);\n }\n }\n\n Item.call(this, data, conversion, options);\n}\n\nBackgroundItem.prototype = new Item (null, null, null);\n\nBackgroundItem.prototype.baseClassName = 'vis-item vis-background';\nBackgroundItem.prototype.stack = false;\n\n/**\n * Check whether this item is visible inside given range\n * @returns {{start: Number, end: Number}} range with a timestamp for start and end\n * @returns {boolean} True if visible\n */\nBackgroundItem.prototype.isVisible = function(range) {\n // determine visibility\n return (this.data.start < range.end) && (this.data.end > range.start); \n};\n\n/**\n * Repaint the item\n */\nBackgroundItem.prototype.redraw = function() {\n var dom = this.dom;\n if (!dom) {\n // create DOM\n this.dom = {};\n dom = this.dom;\n\n // background box\n dom.box = document.createElement('div');\n // className is updated in redraw()\n\n // frame box (to prevent the item contents from overflowing\n dom.frame = document.createElement('div');\n dom.frame.className = 'vis-item-overflow';\n dom.box.appendChild(dom.frame);\n\n // contents box\n dom.content = document.createElement('div');\n dom.content.className = 'vis-item-content';\n dom.frame.appendChild(dom.content);\n\n // Note: we do NOT attach this item as attribute to the DOM,\n // such that background items cannot be selected\n //dom.box['timeline-item'] = this;\n\n this.dirty = true;\n }\n\n // append DOM to parent DOM\n if (!this.parent) {\n throw new Error('Cannot redraw item: no parent attached');\n }\n if (!dom.box.parentNode) {\n var background = this.parent.dom.background;\n if (!background) {\n throw new Error('Cannot redraw item: parent has no background container element');\n }\n background.appendChild(dom.box);\n }\n this.displayed = true;\n\n // Update DOM when item is marked dirty. An item is marked dirty when:\n // - the item is not yet rendered\n // - the item's data is changed\n // - the item is selected/deselected\n if (this.dirty) {\n this._updateContents(this.dom.content);\n this._updateTitle();\n this._updateDataAttributes(this.dom.content);\n this._updateStyle(this.dom.box);\n\n // update class\n var className = (this.data.className ? (' ' + this.data.className) : '') +\n (this.selected ? ' vis-selected' : '');\n dom.box.className = this.baseClassName + className;\n\n // determine from css whether this box has overflow\n this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden';\n\n // recalculate size\n this.props.content.width = this.dom.content.offsetWidth;\n this.height = 0; // set height zero, so this item will be ignored when stacking items\n\n this.dirty = false;\n }\n};\n\n/**\n * Show the item in the DOM (when not already visible). The items DOM will\n * be created when needed.\n */\nBackgroundItem.prototype.show = RangeItem.prototype.show;\n\n/**\n * Hide the item from the DOM (when visible)\n * @return {Boolean} changed\n */\nBackgroundItem.prototype.hide = RangeItem.prototype.hide;\n\n/**\n * Reposition the item horizontally\n * @Override\n */\nBackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX;\n\n/**\n * Reposition the item vertically\n * @Override\n */\nBackgroundItem.prototype.repositionY = function(margin) {\n var height;\n\n // special positioning for subgroups\n if (this.data.subgroup !== undefined) {\n // TODO: instead of calculating the top position of the subgroups here for every BackgroundItem, calculate the top of the subgroup once in Itemset\n\n var itemSubgroup = this.data.subgroup;\n var subgroups = this.parent.subgroups;\n var subgroupIndex = subgroups[itemSubgroup].index;\n\n this.dom.box.style.height = this.parent.subgroups[itemSubgroup].height + 'px';\n\n var orientation = this.options.orientation.item;\n if (orientation == 'top') { \n this.dom.box.style.top = this.parent.top + this.parent.subgroups[itemSubgroup].top + 'px';\n } else {\n this.dom.box.style.top = (this.parent.top + this.parent.height - this.parent.subgroups[itemSubgroup].top - this.parent.subgroups[itemSubgroup].height) + 'px';\n }\n this.dom.box.style.bottom = '';\n }\n // and in the case of no subgroups:\n else {\n // we want backgrounds with groups to only show in groups.\n if (this.parent instanceof BackgroundGroup) {\n // if the item is not in a group:\n height = Math.max(this.parent.height,\n this.parent.itemSet.body.domProps.center.height,\n this.parent.itemSet.body.domProps.centerContainer.height);\n this.dom.box.style.top = orientation == 'top' ? '0' : '';\n this.dom.box.style.bottom = orientation == 'top' ? '' : '0';\n }\n else {\n height = this.parent.height;\n // same alignment for items when orientation is top or bottom\n this.dom.box.style.top = this.parent.top + 'px';\n this.dom.box.style.bottom = '';\n }\n }\n this.dom.box.style.height = height + 'px';\n};\n\nmodule.exports = BackgroundItem;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/item/BackgroundItem.js","var util = require('../../util');\nvar Component = require('./Component');\nvar TimeStep = require('../TimeStep');\nvar DateUtil = require('../DateUtil');\nvar moment = require('../../module/moment');\n\n/**\n * A horizontal time axis\n * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body\n * @param {Object} [options] See TimeAxis.setOptions for the available\n * options.\n * @constructor TimeAxis\n * @extends Component\n */\nfunction TimeAxis (body, options) {\n this.dom = {\n foreground: null,\n lines: [],\n majorTexts: [],\n minorTexts: [],\n redundant: {\n lines: [],\n majorTexts: [],\n minorTexts: []\n }\n };\n this.props = {\n range: {\n start: 0,\n end: 0,\n minimumStep: 0\n },\n lineTop: 0\n };\n\n this.defaultOptions = {\n orientation: {\n axis: 'bottom'\n }, // axis orientation: 'top' or 'bottom'\n showMinorLabels: true,\n showMajorLabels: true,\n maxMinorChars: 7,\n format: TimeStep.FORMAT,\n moment: moment,\n timeAxis: null\n };\n this.options = util.extend({}, this.defaultOptions);\n\n this.body = body;\n\n // create the HTML DOM\n this._create();\n\n this.setOptions(options);\n}\n\nTimeAxis.prototype = new Component();\n\n/**\n * Set options for the TimeAxis.\n * Parameters will be merged in current options.\n * @param {Object} options Available options:\n * {string} [orientation.axis]\n * {boolean} [showMinorLabels]\n * {boolean} [showMajorLabels]\n */\nTimeAxis.prototype.setOptions = function(options) {\n if (options) {\n // copy all options that we know\n util.selectiveExtend([\n 'showMinorLabels',\n 'showMajorLabels',\n 'maxMinorChars',\n 'hiddenDates',\n 'timeAxis',\n 'moment',\n 'rtl'\n ], this.options, options);\n\n // deep copy the format options\n util.selectiveDeepExtend(['format'], this.options, options);\n\n if ('orientation' in options) {\n if (typeof options.orientation === 'string') {\n this.options.orientation.axis = options.orientation;\n }\n else if (typeof options.orientation === 'object' && 'axis' in options.orientation) {\n this.options.orientation.axis = options.orientation.axis;\n }\n }\n\n // apply locale to moment.js\n // TODO: not so nice, this is applied globally to moment.js\n if ('locale' in options) {\n if (typeof moment.locale === 'function') {\n // moment.js 2.8.1+\n moment.locale(options.locale);\n }\n else {\n moment.lang(options.locale);\n }\n }\n }\n};\n\n/**\n * Create the HTML DOM for the TimeAxis\n */\nTimeAxis.prototype._create = function() {\n this.dom.foreground = document.createElement('div');\n this.dom.background = document.createElement('div');\n\n this.dom.foreground.className = 'vis-time-axis vis-foreground';\n this.dom.background.className = 'vis-time-axis vis-background';\n};\n\n/**\n * Destroy the TimeAxis\n */\nTimeAxis.prototype.destroy = function() {\n // remove from DOM\n if (this.dom.foreground.parentNode) {\n this.dom.foreground.parentNode.removeChild(this.dom.foreground);\n }\n if (this.dom.background.parentNode) {\n this.dom.background.parentNode.removeChild(this.dom.background);\n }\n\n this.body = null;\n};\n\n/**\n * Repaint the component\n * @return {boolean} Returns true if the component is resized\n */\nTimeAxis.prototype.redraw = function () {\n var props = this.props;\n var foreground = this.dom.foreground;\n var background = this.dom.background;\n\n // determine the correct parent DOM element (depending on option orientation)\n var parent = (this.options.orientation.axis == 'top') ? this.body.dom.top : this.body.dom.bottom;\n var parentChanged = (foreground.parentNode !== parent);\n\n // calculate character width and height\n this._calculateCharSize();\n\n // TODO: recalculate sizes only needed when parent is resized or options is changed\n var showMinorLabels = this.options.showMinorLabels && this.options.orientation.axis !== 'none';\n var showMajorLabels = this.options.showMajorLabels && this.options.orientation.axis !== 'none';\n\n // determine the width and height of the elemens for the axis\n props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0;\n props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0;\n props.height = props.minorLabelHeight + props.majorLabelHeight;\n props.width = foreground.offsetWidth;\n\n props.minorLineHeight = this.body.domProps.root.height - props.majorLabelHeight -\n (this.options.orientation.axis == 'top' ? this.body.domProps.bottom.height : this.body.domProps.top.height);\n props.minorLineWidth = 1; // TODO: really calculate width\n props.majorLineHeight = props.minorLineHeight + props.majorLabelHeight;\n props.majorLineWidth = 1; // TODO: really calculate width\n\n // take foreground and background offline while updating (is almost twice as fast)\n var foregroundNextSibling = foreground.nextSibling;\n var backgroundNextSibling = background.nextSibling;\n foreground.parentNode && foreground.parentNode.removeChild(foreground);\n background.parentNode && background.parentNode.removeChild(background);\n\n foreground.style.height = this.props.height + 'px';\n\n this._repaintLabels();\n\n // put DOM online again (at the same place)\n if (foregroundNextSibling) {\n parent.insertBefore(foreground, foregroundNextSibling);\n }\n else {\n parent.appendChild(foreground)\n }\n if (backgroundNextSibling) {\n this.body.dom.backgroundVertical.insertBefore(background, backgroundNextSibling);\n }\n else {\n this.body.dom.backgroundVertical.appendChild(background)\n }\n return this._isResized() || parentChanged;\n};\n\n/**\n * Repaint major and minor text labels and vertical grid lines\n * @private\n */\nTimeAxis.prototype._repaintLabels = function () {\n var orientation = this.options.orientation.axis;\n\n // calculate range and step (step such that we have space for 7 characters per label)\n var start = util.convert(this.body.range.start, 'Number');\n var end = util.convert(this.body.range.end, 'Number');\n var timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * this.options.maxMinorChars).valueOf();\n var minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.options.moment, this.body.hiddenDates, this.body.range, timeLabelsize);\n minimumStep -= this.body.util.toTime(0).valueOf();\n\n var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates);\n step.setMoment(this.options.moment);\n if (this.options.format) {\n step.setFormat(this.options.format);\n }\n if (this.options.timeAxis) {\n step.setScale(this.options.timeAxis);\n }\n this.step = step;\n\n // Move all DOM elements to a \"redundant\" list, where they\n // can be picked for re-use, and clear the lists with lines and texts.\n // At the end of the function _repaintLabels, left over elements will be cleaned up\n var dom = this.dom;\n dom.redundant.lines = dom.lines;\n dom.redundant.majorTexts = dom.majorTexts;\n dom.redundant.minorTexts = dom.minorTexts;\n dom.lines = [];\n dom.majorTexts = [];\n dom.minorTexts = [];\n\n var current;\n var next;\n var x;\n var xNext;\n var isMajor, nextIsMajor;\n var width = 0, prevWidth;\n var line;\n var labelMinor;\n var xFirstMajorLabel = undefined;\n var count = 0;\n const MAX = 1000;\n var className;\n\n step.start();\n next = step.getCurrent();\n xNext = this.body.util.toScreen(next);\n while (step.hasNext() && count < MAX) {\n count++;\n\n isMajor = step.isMajor();\n className = step.getClassName();\n labelMinor = step.getLabelMinor();\n\n current = next;\n x = xNext;\n\n step.next();\n next = step.getCurrent();\n nextIsMajor = step.isMajor();\n xNext = this.body.util.toScreen(next);\n\n prevWidth = width;\n width = xNext - x;\n var showMinorGrid = (width >= prevWidth * 0.4); // prevent displaying of the 31th of the month on a scale of 5 days\n\n if (this.options.showMinorLabels && showMinorGrid) {\n var label = this._repaintMinorText(x, labelMinor, orientation, className);\n label.style.width = width + 'px'; // set width to prevent overflow\n }\n\n if (isMajor && this.options.showMajorLabels) {\n if (x > 0) {\n if (xFirstMajorLabel == undefined) {\n xFirstMajorLabel = x;\n }\n label = this._repaintMajorText(x, step.getLabelMajor(), orientation, className);\n }\n line = this._repaintMajorLine(x, width, orientation, className);\n }\n else { // minor line\n if (showMinorGrid) {\n line = this._repaintMinorLine(x, width, orientation, className);\n }\n else {\n if (line) {\n // adjust the width of the previous grid\n line.style.width = (parseInt (line.style.width) + width) + 'px';\n }\n }\n }\n }\n\n if (count === MAX && !warnedForOverflow) {\n console.warn(`Something is wrong with the Timeline scale. Limited drawing of grid lines to ${MAX} lines.`);\n warnedForOverflow = true;\n }\n\n // create a major label on the left when needed\n if (this.options.showMajorLabels) {\n var leftTime = this.body.util.toTime(0),\n leftText = step.getLabelMajor(leftTime),\n widthText = leftText.length * (this.props.majorCharWidth || 10) + 10; // upper bound estimation\n\n if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) {\n this._repaintMajorText(0, leftText, orientation, className);\n }\n }\n\n // Cleanup leftover DOM elements from the redundant list\n util.forEach(this.dom.redundant, function (arr) {\n while (arr.length) {\n var elem = arr.pop();\n if (elem && elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n }\n });\n};\n\n/**\n * Create a minor label for the axis at position x\n * @param {Number} x\n * @param {String} text\n * @param {String} orientation \"top\" or \"bottom\" (default)\n * @param {String} className\n * @return {Element} Returns the HTML element of the created label\n * @private\n */\nTimeAxis.prototype._repaintMinorText = function (x, text, orientation, className) {\n // reuse redundant label\n var label = this.dom.redundant.minorTexts.shift();\n\n if (!label) {\n // create new label\n var content = document.createTextNode('');\n label = document.createElement('div');\n label.appendChild(content);\n this.dom.foreground.appendChild(label);\n }\n this.dom.minorTexts.push(label);\n label.innerHTML = text;\n\n label.style.top = (orientation == 'top') ? (this.props.majorLabelHeight + 'px') : '0';\n\n if (this.options.rtl) {\n label.style.left = \"\";\n label.style.right = x + 'px';\n } else {\n label.style.left = x + 'px';\n };\n label.className = 'vis-text vis-minor ' + className;\n //label.title = title; // TODO: this is a heavy operation\n\n return label;\n};\n\n/**\n * Create a Major label for the axis at position x\n * @param {Number} x\n * @param {String} text\n * @param {String} orientation \"top\" or \"bottom\" (default)\n * @param {String} className\n * @return {Element} Returns the HTML element of the created label\n * @private\n */\nTimeAxis.prototype._repaintMajorText = function (x, text, orientation, className) {\n // reuse redundant label\n var label = this.dom.redundant.majorTexts.shift();\n\n if (!label) {\n // create label\n var content = document.createElement('div');\n label = document.createElement('div');\n label.appendChild(content);\n this.dom.foreground.appendChild(label);\n }\n\n label.childNodes[0].innerHTML = text;\n label.className = 'vis-text vis-major ' + className;\n //label.title = title; // TODO: this is a heavy operation\n\n label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px');\n if (this.options.rtl) {\n label.style.left = \"\";\n label.style.right = x + 'px';\n } else {\n label.style.left = x + 'px';\n };\n\n this.dom.majorTexts.push(label);\n return label;\n};\n\n/**\n * Create a minor line for the axis at position x\n * @param {Number} x\n * @param {Number} width\n * @param {String} orientation \"top\" or \"bottom\" (default)\n * @param {String} className\n * @return {Element} Returns the created line\n * @private\n */\nTimeAxis.prototype._repaintMinorLine = function (x, width, orientation, className) {\n // reuse redundant line\n var line = this.dom.redundant.lines.shift();\n if (!line) {\n // create vertical line\n line = document.createElement('div');\n this.dom.background.appendChild(line);\n }\n this.dom.lines.push(line);\n\n var props = this.props;\n if (orientation == 'top') {\n line.style.top = props.majorLabelHeight + 'px';\n }\n else {\n line.style.top = this.body.domProps.top.height + 'px';\n }\n line.style.height = props.minorLineHeight + 'px';\n if (this.options.rtl) {\n line.style.left = \"\";\n line.style.right = (x - props.minorLineWidth / 2) + 'px';\n line.className = 'vis-grid vis-vertical-rtl vis-minor ' + className;\n } else {\n line.style.left = (x - props.minorLineWidth / 2) + 'px';\n line.className = 'vis-grid vis-vertical vis-minor ' + className;\n };\n line.style.width = width + 'px';\n\n \n\n return line;\n};\n\n/**\n * Create a Major line for the axis at position x\n * @param {Number} x\n * @param {Number} width\n * @param {String} orientation \"top\" or \"bottom\" (default)\n * @param {String} className\n * @return {Element} Returns the created line\n * @private\n */\nTimeAxis.prototype._repaintMajorLine = function (x, width, orientation, className) {\n // reuse redundant line\n var line = this.dom.redundant.lines.shift();\n if (!line) {\n // create vertical line\n line = document.createElement('div');\n this.dom.background.appendChild(line);\n }\n this.dom.lines.push(line);\n\n var props = this.props;\n if (orientation == 'top') {\n line.style.top = '0';\n }\n else {\n line.style.top = this.body.domProps.top.height + 'px';\n }\n\n if (this.options.rtl) {\n line.style.left = \"\";\n line.style.right = (x - props.majorLineWidth / 2) + 'px';\n line.className = 'vis-grid vis-vertical-rtl vis-major ' + className;\n } else {\n line.style.left = (x - props.majorLineWidth / 2) + 'px';\n line.className = 'vis-grid vis-vertical vis-major ' + className;\n }\n\n line.style.height = props.majorLineHeight + 'px';\n line.style.width = width + 'px';\n\n return line;\n};\n\n/**\n * Determine the size of text on the axis (both major and minor axis).\n * The size is calculated only once and then cached in this.props.\n * @private\n */\nTimeAxis.prototype._calculateCharSize = function () {\n // Note: We calculate char size with every redraw. Size may change, for\n // example when any of the timelines parents had display:none for example.\n\n // determine the char width and height on the minor axis\n if (!this.dom.measureCharMinor) {\n this.dom.measureCharMinor = document.createElement('DIV');\n this.dom.measureCharMinor.className = 'vis-text vis-minor vis-measure';\n this.dom.measureCharMinor.style.position = 'absolute';\n\n this.dom.measureCharMinor.appendChild(document.createTextNode('0'));\n this.dom.foreground.appendChild(this.dom.measureCharMinor);\n }\n this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight;\n this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth;\n\n // determine the char width and height on the major axis\n if (!this.dom.measureCharMajor) {\n this.dom.measureCharMajor = document.createElement('DIV');\n this.dom.measureCharMajor.className = 'vis-text vis-major vis-measure';\n this.dom.measureCharMajor.style.position = 'absolute';\n\n this.dom.measureCharMajor.appendChild(document.createTextNode('0'));\n this.dom.foreground.appendChild(this.dom.measureCharMajor);\n }\n this.props.majorCharHeight = this.dom.measureCharMajor.clientHeight;\n this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth;\n};\n\n\nvar warnedForOverflow = false;\n\nmodule.exports = TimeAxis;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/TimeAxis.js","var keycharm = require('keycharm');\nvar Emitter = require('emitter-component');\nvar Hammer = require('../module/hammer');\nvar util = require('../util');\n\n/**\n * Turn an element into an clickToUse element.\n * When not active, the element has a transparent overlay. When the overlay is\n * clicked, the mode is changed to active.\n * When active, the element is displayed with a blue border around it, and\n * the interactive contents of the element can be used. When clicked outside\n * the element, the elements mode is changed to inactive.\n * @param {Element} container\n * @constructor\n */\nfunction Activator(container) {\n this.active = false;\n\n this.dom = {\n container: container\n };\n\n this.dom.overlay = document.createElement('div');\n this.dom.overlay.className = 'vis-overlay';\n\n this.dom.container.appendChild(this.dom.overlay);\n\n this.hammer = Hammer(this.dom.overlay);\n this.hammer.on('tap', this._onTapOverlay.bind(this));\n\n // block all touch events (except tap)\n var me = this;\n var events = [\n 'tap', 'doubletap', 'press',\n 'pinch',\n 'pan', 'panstart', 'panmove', 'panend'\n ];\n events.forEach(function (event) {\n me.hammer.on(event, function (event) {\n event.stopPropagation();\n });\n });\n\n // attach a click event to the window, in order to deactivate when clicking outside the timeline\n if (document && document.body) {\n this.onClick = function (event) {\n if (!_hasParent(event.target, container)) {\n me.deactivate();\n }\n };\n document.body.addEventListener('click', this.onClick);\n }\n\n if (this.keycharm !== undefined) {\n this.keycharm.destroy();\n }\n this.keycharm = keycharm();\n\n // keycharm listener only bounded when active)\n this.escListener = this.deactivate.bind(this);\n}\n\n// turn into an event emitter\nEmitter(Activator.prototype);\n\n// The currently active activator\nActivator.current = null;\n\n/**\n * Destroy the activator. Cleans up all created DOM and event listeners\n */\nActivator.prototype.destroy = function () {\n this.deactivate();\n\n // remove dom\n this.dom.overlay.parentNode.removeChild(this.dom.overlay);\n\n // remove global event listener\n if (this.onClick) {\n document.body.removeEventListener('click', this.onClick);\n }\n\n // cleanup hammer instances\n this.hammer.destroy();\n this.hammer = null;\n // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory)\n};\n\n/**\n * Activate the element\n * Overlay is hidden, element is decorated with a blue shadow border\n */\nActivator.prototype.activate = function () {\n // we allow only one active activator at a time\n if (Activator.current) {\n Activator.current.deactivate();\n }\n Activator.current = this;\n\n this.active = true;\n this.dom.overlay.style.display = 'none';\n util.addClassName(this.dom.container, 'vis-active');\n\n this.emit('change');\n this.emit('activate');\n\n // ugly hack: bind ESC after emitting the events, as the Network rebinds all\n // keyboard events on a 'change' event\n this.keycharm.bind('esc', this.escListener);\n};\n\n/**\n * Deactivate the element\n * Overlay is displayed on top of the element\n */\nActivator.prototype.deactivate = function () {\n this.active = false;\n this.dom.overlay.style.display = '';\n util.removeClassName(this.dom.container, 'vis-active');\n this.keycharm.unbind('esc', this.escListener);\n\n this.emit('change');\n this.emit('deactivate');\n};\n\n/**\n * Handle a tap event: activate the container\n * @param event\n * @private\n */\nActivator.prototype._onTapOverlay = function (event) {\n // activate the container\n this.activate();\n event.stopPropagation();\n};\n\n/**\n * Test whether the element has the requested parent element somewhere in\n * its chain of parent nodes.\n * @param {HTMLElement} element\n * @param {HTMLElement} parent\n * @returns {boolean} Returns true when the parent is found somewhere in the\n * chain of parent nodes.\n * @private\n */\nfunction _hasParent(element, parent) {\n while (element) {\n if (element === parent) {\n return true\n }\n element = element.parentNode;\n }\n return false;\n}\n\nmodule.exports = Activator;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/shared/Activator.js","var Hammer = require('../../module/hammer');\nvar util = require('../../util');\nvar Component = require('./Component');\nvar moment = require('../../module/moment');\nvar locales = require('../locales');\n\n/**\n * A custom time bar\n * @param {{range: Range, dom: Object}} body\n * @param {Object} [options] Available parameters:\n * {number | string} id\n * {string} locales\n * {string} locale\n * @constructor CustomTime\n * @extends Component\n */\n\nfunction CustomTime (body, options) {\n this.body = body;\n\n // default options\n this.defaultOptions = {\n moment: moment,\n locales: locales,\n locale: 'en',\n id: undefined,\n title: undefined\n };\n this.options = util.extend({}, this.defaultOptions);\n\n if (options && options.time) {\n this.customTime = options.time;\n } else {\n this.customTime = new Date();\n }\n\n this.eventParams = {}; // stores state parameters while dragging the bar\n\n this.setOptions(options);\n\n // create the DOM\n this._create();\n}\n\nCustomTime.prototype = new Component();\n\n/**\n * Set options for the component. Options will be merged in current options.\n * @param {Object} options Available parameters:\n * {number | string} id\n * {string} locales\n * {string} locale\n */\nCustomTime.prototype.setOptions = function(options) {\n if (options) {\n // copy all options that we know\n util.selectiveExtend(['moment', 'locale', 'locales', 'id'], this.options, options);\n }\n};\n\n/**\n * Create the DOM for the custom time\n * @private\n */\nCustomTime.prototype._create = function() {\n var bar = document.createElement('div');\n bar['custom-time'] = this;\n bar.className = 'vis-custom-time ' + (this.options.id || '');\n bar.style.position = 'absolute';\n bar.style.top = '0px';\n bar.style.height = '100%';\n this.bar = bar;\n\n var drag = document.createElement('div');\n drag.style.position = 'relative';\n drag.style.top = '0px';\n drag.style.left = '-10px';\n drag.style.height = '100%';\n drag.style.width = '20px';\n\n function onMouseWheel (e) {\n this.body.range._onMouseWheel(e);\n }\n\n if (drag.addEventListener) {\n // IE9, Chrome, Safari, Opera\n drag.addEventListener(\"mousewheel\", onMouseWheel.bind(this), false);\n // Firefox\n drag.addEventListener(\"DOMMouseScroll\", onMouseWheel.bind(this), false);\n } else {\n // IE 6/7/8\n drag.attachEvent(\"onmousewheel\", onMouseWheel.bind(this));\n }\n\n bar.appendChild(drag);\n // attach event listeners\n this.hammer = new Hammer(drag);\n this.hammer.on('panstart', this._onDragStart.bind(this));\n this.hammer.on('panmove', this._onDrag.bind(this));\n this.hammer.on('panend', this._onDragEnd.bind(this));\n this.hammer.get('pan').set({threshold:5, direction: Hammer.DIRECTION_HORIZONTAL});\n};\n\n/**\n * Destroy the CustomTime bar\n */\nCustomTime.prototype.destroy = function () {\n this.hide();\n\n this.hammer.destroy();\n this.hammer = null;\n\n this.body = null;\n};\n\n/**\n * Repaint the component\n * @return {boolean} Returns true if the component is resized\n */\nCustomTime.prototype.redraw = function () {\n var parent = this.body.dom.backgroundVertical;\n if (this.bar.parentNode != parent) {\n // attach to the dom\n if (this.bar.parentNode) {\n this.bar.parentNode.removeChild(this.bar);\n }\n parent.appendChild(this.bar);\n }\n\n var x = this.body.util.toScreen(this.customTime);\n\n var locale = this.options.locales[this.options.locale];\n if (!locale) {\n if (!this.warned) {\n console.log('WARNING: options.locales[\\'' + this.options.locale + '\\'] not found. See http://visjs.org/docs/timeline/#Localization');\n this.warned = true;\n }\n locale = this.options.locales['en']; // fall back on english when not available\n }\n\n var title = this.options.title;\n // To hide the title completely use empty string ''.\n if (title === undefined) {\n title = locale.time + ': ' + this.options.moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss');\n title = title.charAt(0).toUpperCase() + title.substring(1);\n }\n\n this.bar.style.left = x + 'px';\n this.bar.title = title;\n\n return false;\n};\n\n/**\n * Remove the CustomTime from the DOM\n */\nCustomTime.prototype.hide = function () {\n // remove the line from the DOM\n if (this.bar.parentNode) {\n this.bar.parentNode.removeChild(this.bar);\n }\n};\n\n/**\n * Set custom time.\n * @param {Date | number | string} time\n */\nCustomTime.prototype.setCustomTime = function(time) {\n this.customTime = util.convert(time, 'Date');\n this.redraw();\n};\n\n/**\n * Retrieve the current custom time.\n * @return {Date} customTime\n */\nCustomTime.prototype.getCustomTime = function() {\n return new Date(this.customTime.valueOf());\n};\n\n/**\n * Set custom title.\n * @param {Date | number | string} title\n */\nCustomTime.prototype.setCustomTitle = function(title) {\n this.options.title = title;\n};\n\n/**\n * Start moving horizontally\n * @param {Event} event\n * @private\n */\nCustomTime.prototype._onDragStart = function(event) {\n this.eventParams.dragging = true;\n this.eventParams.customTime = this.customTime;\n\n event.stopPropagation();\n};\n\n/**\n * Perform moving operating.\n * @param {Event} event\n * @private\n */\nCustomTime.prototype._onDrag = function (event) {\n if (!this.eventParams.dragging) return;\n\n var x = this.body.util.toScreen(this.eventParams.customTime) + event.deltaX;\n var time = this.body.util.toTime(x);\n\n this.setCustomTime(time);\n\n // fire a timechange event\n this.body.emitter.emit('timechange', {\n id: this.options.id,\n time: new Date(this.customTime.valueOf()),\n event: util.elementsCensor(event)\n });\n\n event.stopPropagation();\n};\n\n/**\n * Stop moving operating.\n * @param {Event} event\n * @private\n */\nCustomTime.prototype._onDragEnd = function (event) {\n if (!this.eventParams.dragging) return;\n\n // fire a timechanged event\n this.body.emitter.emit('timechanged', {\n id: this.options.id,\n time: new Date(this.customTime.valueOf()),\n event: util.elementsCensor(event)\n });\n\n event.stopPropagation();\n};\n\n/**\n * Find a custom time from an event target:\n * searches for the attribute 'custom-time' in the event target's element tree\n * @param {Event} event\n * @return {CustomTime | null} customTime\n */\nCustomTime.customTimeFromTarget = function(event) {\n var target = event.target;\n while (target) {\n if (target.hasOwnProperty('custom-time')) {\n return target['custom-time'];\n }\n target = target.parentNode;\n }\n\n return null;\n};\n\nmodule.exports = CustomTime;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/CustomTime.js","// English\nexports['en'] = {\n current: 'current',\n time: 'time'\n};\nexports['en_EN'] = exports['en'];\nexports['en_US'] = exports['en'];\n\n// Italiano\nexports['it'] = {\n current: 'attuale',\n time: 'tempo'\n};\nexports['it_IT'] = exports['it'];\nexports['it_CH'] = exports['it'];\n\n// Dutch\nexports['nl'] = {\n current: 'huidige',\n time: 'tijd'\n};\nexports['nl_NL'] = exports['nl'];\nexports['nl_BE'] = exports['nl'];\n\n// German\nexports['de'] = {\n current: 'Aktuelle',\n time: 'Zeit'\n};\nexports['de_DE'] = exports['de'];\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/locales.js","var util = require('../../util');\nvar Component = require('./Component');\nvar moment = require('../../module/moment');\nvar locales = require('../locales');\n\n/**\n * A current time bar\n * @param {{range: Range, dom: Object, domProps: Object}} body\n * @param {Object} [options] Available parameters:\n * {Boolean} [showCurrentTime]\n * @constructor CurrentTime\n * @extends Component\n */\nfunction CurrentTime (body, options) {\n this.body = body;\n\n // default options\n this.defaultOptions = {\n rtl: false,\n showCurrentTime: true,\n\n moment: moment,\n locales: locales,\n locale: 'en'\n };\n this.options = util.extend({}, this.defaultOptions);\n this.offset = 0;\n\n this._create();\n\n this.setOptions(options);\n}\n\nCurrentTime.prototype = new Component();\n\n/**\n * Create the HTML DOM for the current time bar\n * @private\n */\nCurrentTime.prototype._create = function() {\n var bar = document.createElement('div');\n bar.className = 'vis-current-time';\n bar.style.position = 'absolute';\n bar.style.top = '0px';\n bar.style.height = '100%';\n\n this.bar = bar;\n};\n\n/**\n * Destroy the CurrentTime bar\n */\nCurrentTime.prototype.destroy = function () {\n this.options.showCurrentTime = false;\n this.redraw(); // will remove the bar from the DOM and stop refreshing\n\n this.body = null;\n};\n\n/**\n * Set options for the component. Options will be merged in current options.\n * @param {Object} options Available parameters:\n * {boolean} [showCurrentTime]\n */\nCurrentTime.prototype.setOptions = function(options) {\n if (options) {\n // copy all options that we know\n util.selectiveExtend(['rtl', 'showCurrentTime', 'moment', 'locale', 'locales'], this.options, options);\n }\n};\n\n/**\n * Repaint the component\n * @return {boolean} Returns true if the component is resized\n */\nCurrentTime.prototype.redraw = function() {\n if (this.options.showCurrentTime) {\n var parent = this.body.dom.backgroundVertical;\n if (this.bar.parentNode != parent) {\n // attach to the dom\n if (this.bar.parentNode) {\n this.bar.parentNode.removeChild(this.bar);\n }\n parent.appendChild(this.bar);\n\n this.start();\n }\n\n var now = this.options.moment(new Date().valueOf() + this.offset);\n var x = this.body.util.toScreen(now);\n\n var locale = this.options.locales[this.options.locale];\n if (!locale) {\n if (!this.warned) {\n console.log('WARNING: options.locales[\\'' + this.options.locale + '\\'] not found. See http://visjs.org/docs/timeline/#Localization');\n this.warned = true;\n }\n locale = this.options.locales['en']; // fall back on english when not available\n }\n var title = locale.current + ' ' + locale.time + ': ' + now.format('dddd, MMMM Do YYYY, H:mm:ss');\n title = title.charAt(0).toUpperCase() + title.substring(1);\n\n if (this.options.rtl) {\n this.bar.style.right = x + 'px';\n } else {\n this.bar.style.left = x + 'px';\n }\n this.bar.title = title;\n }\n else {\n // remove the line from the DOM\n if (this.bar.parentNode) {\n this.bar.parentNode.removeChild(this.bar);\n }\n this.stop();\n }\n\n return false;\n};\n\n/**\n * Start auto refreshing the current time bar\n */\nCurrentTime.prototype.start = function() {\n var me = this;\n\n function update () {\n me.stop();\n\n // determine interval to refresh\n var scale = me.body.range.conversion(me.body.domProps.center.width).scale;\n var interval = 1 / scale / 10;\n if (interval < 30) interval = 30;\n if (interval > 1000) interval = 1000;\n\n me.redraw();\n me.body.emitter.emit('currentTimeTick');\n\n // start a renderTimer to adjust for the new time\n me.currentTimeTimer = setTimeout(update, interval);\n }\n\n update();\n};\n\n/**\n * Stop auto refreshing the current time bar\n */\nCurrentTime.prototype.stop = function() {\n if (this.currentTimeTimer !== undefined) {\n clearTimeout(this.currentTimeTimer);\n delete this.currentTimeTimer;\n }\n};\n\n/**\n * Set a current time. This can be used for example to ensure that a client's\n * time is synchronized with a shared server time.\n * @param {Date | String | Number} time A Date, unix timestamp, or\n * ISO date string.\n */\nCurrentTime.prototype.setCurrentTime = function(time) {\n var t = util.convert(time, 'Date').valueOf();\n var now = new Date().valueOf();\n this.offset = t - now;\n this.redraw();\n};\n\n/**\n * Get the current time.\n * @return {Date} Returns the current time.\n */\nCurrentTime.prototype.getCurrentTime = function() {\n return new Date(new Date().valueOf() + this.offset);\n};\n\nmodule.exports = CurrentTime;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/CurrentTime.js","/**\n * This object contains all possible options. It will check if the types are correct, if required if the option is one\n * of the allowed values.\n *\n * __any__ means that the name of the property does not matter.\n * __type__ is a required field for all objects and contains the allowed types of all objects\n */\nlet string = 'string';\nlet bool = 'boolean';\nlet number = 'number';\nlet array = 'array';\nlet date = 'date';\nlet object = 'object'; // should only be in a __type__ property\nlet dom = 'dom';\nlet moment = 'moment';\nlet any = 'any';\n\nlet allOptions = {\n configure: {\n enabled: { 'boolean': bool},\n filter: { 'boolean': bool,'function': 'function'},\n container: {dom},\n __type__: {object, 'boolean': bool,'function': 'function'}\n },\n\n //globals :\n align: {string},\n rtl: { 'boolean': bool, 'undefined': 'undefined'},\n rollingMode: { 'boolean': bool, 'undefined': 'undefined'},\n verticalScroll: { 'boolean': bool, 'undefined': 'undefined'},\n horizontalScroll: { 'boolean': bool, 'undefined': 'undefined'},\n autoResize: { 'boolean': bool},\n throttleRedraw: {number}, // TODO: DEPRICATED see https://github.com/almende/vis/issues/2511\n clickToUse: { 'boolean': bool},\n dataAttributes: {string, array},\n editable: {\n add: { 'boolean': bool, 'undefined': 'undefined'},\n remove: { 'boolean': bool, 'undefined': 'undefined'},\n updateGroup: { 'boolean': bool, 'undefined': 'undefined'},\n updateTime: { 'boolean': bool, 'undefined': 'undefined'},\n overrideItems: { 'boolean': bool, 'undefined': 'undefined'},\n __type__: { 'boolean': bool, object}\n },\n end: {number, date, string, moment},\n format: {\n minorLabels: {\n millisecond: {string,'undefined': 'undefined'},\n second: {string,'undefined': 'undefined'},\n minute: {string,'undefined': 'undefined'},\n hour: {string,'undefined': 'undefined'},\n weekday: {string,'undefined': 'undefined'},\n day: {string,'undefined': 'undefined'},\n month: {string,'undefined': 'undefined'},\n year: {string,'undefined': 'undefined'},\n __type__: {object, 'function': 'function'}\n },\n majorLabels: {\n millisecond: {string,'undefined': 'undefined'},\n second: {string,'undefined': 'undefined'},\n minute: {string,'undefined': 'undefined'},\n hour: {string,'undefined': 'undefined'},\n weekday: {string,'undefined': 'undefined'},\n day: {string,'undefined': 'undefined'},\n month: {string,'undefined': 'undefined'},\n year: {string,'undefined': 'undefined'},\n __type__: {object, 'function': 'function'}\n },\n __type__: {object}\n },\n moment: {'function': 'function'},\n groupOrder: {string, 'function': 'function'},\n groupEditable: {\n\t add: { 'boolean': bool, 'undefined': 'undefined'},\n\t remove: { 'boolean': bool, 'undefined': 'undefined'},\n\t order: { 'boolean': bool, 'undefined': 'undefined'},\n\t __type__: { 'boolean': bool, object}\n },\n groupOrderSwap: {'function': 'function'},\n height: {string, number},\n hiddenDates: {\n start: {date, number, string, moment},\n end: {date, number, string, moment},\n repeat: {string},\n __type__: {object, array}\n },\n itemsAlwaysDraggable: { 'boolean': bool},\n locale:{string},\n locales:{\n __any__: {any},\n __type__: {object}\n },\n margin: {\n axis: {number},\n item: {\n horizontal: {number,'undefined': 'undefined'},\n vertical: {number,'undefined': 'undefined'},\n __type__: {object,number}\n },\n __type__: {object,number}\n },\n max: {date, number, string, moment},\n maxHeight: {number, string},\n maxMinorChars: {number},\n min: {date, number, string, moment},\n minHeight: {number, string},\n moveable: { 'boolean': bool},\n multiselect: { 'boolean': bool},\n multiselectPerGroup: { 'boolean': bool},\n onAdd: {'function': 'function'},\n onUpdate: {'function': 'function'},\n onMove: {'function': 'function'},\n onMoving: {'function': 'function'},\n onRemove: {'function': 'function'},\n onAddGroup: {'function': 'function'},\n onMoveGroup: {'function': 'function'},\n onRemoveGroup: {'function': 'function'},\n order: {'function': 'function'},\n orientation: {\n axis: {string,'undefined': 'undefined'},\n item: {string,'undefined': 'undefined'},\n __type__: {string, object}\n },\n selectable: { 'boolean': bool},\n showCurrentTime: { 'boolean': bool},\n showMajorLabels: { 'boolean': bool},\n showMinorLabels: { 'boolean': bool},\n stack: { 'boolean': bool},\n stackSubgroups: { 'boolean': bool},\n snap: {'function': 'function', 'null': 'null'},\n start: {date, number, string, moment},\n template: {'function': 'function'},\n groupTemplate: {'function': 'function'},\n visibleFrameTemplate: {string, 'function': 'function'},\n tooltip: {\n followMouse: { 'boolean': bool },\n overflowMethod: { 'string': ['cap', 'flip'] },\n __type__: {object}\n },\n tooltipOnItemUpdateTime: {\n template: {'function': 'function'},\n __type__: { 'boolean': bool, object}\n },\n timeAxis: {\n scale: {string,'undefined': 'undefined'},\n step: {number,'undefined': 'undefined'},\n __type__: {object}\n },\n type: {string},\n width: {string, number},\n zoomable: { 'boolean': bool},\n zoomKey: {string: ['ctrlKey', 'altKey', 'metaKey', '']},\n zoomMax: {number},\n zoomMin: {number},\n\n __type__: {object}\n};\n\nlet configureOptions = {\n global: {\n align: ['center', 'left', 'right'],\n direction: false,\n autoResize: true,\n clickToUse: false,\n // dataAttributes: ['all'], // FIXME: can be 'all' or string[]\n editable: {\n add: false,\n remove: false,\n updateGroup: false,\n updateTime: false\n },\n end: '',\n format: {\n minorLabels: {\n millisecond:'SSS',\n second: 's',\n minute: 'HH:mm',\n hour: 'HH:mm',\n weekday: 'ddd D',\n day: 'D',\n month: 'MMM',\n year: 'YYYY'\n },\n majorLabels: {\n millisecond:'HH:mm:ss',\n second: 'D MMMM HH:mm',\n minute: 'ddd D MMMM',\n hour: 'ddd D MMMM',\n weekday: 'MMMM YYYY',\n day: 'MMMM YYYY',\n month: 'YYYY',\n year: ''\n }\n },\n\n //groupOrder: {string, 'function': 'function'},\n groupsDraggable: false,\n height: '',\n //hiddenDates: {object, array},\n locale: '',\n margin: {\n axis: [20, 0, 100, 1],\n item: {\n horizontal: [10, 0, 100, 1],\n vertical: [10, 0, 100, 1]\n }\n },\n max: '',\n maxHeight: '',\n maxMinorChars: [7, 0, 20, 1],\n min: '',\n minHeight: '',\n moveable: false,\n multiselect: false,\n multiselectPerGroup: false,\n //onAdd: {'function': 'function'},\n //onUpdate: {'function': 'function'},\n //onMove: {'function': 'function'},\n //onMoving: {'function': 'function'},\n //onRename: {'function': 'function'},\n //order: {'function': 'function'},\n orientation: {\n axis: ['both', 'bottom', 'top'],\n item: ['bottom', 'top']\n },\n selectable: true,\n showCurrentTime: false,\n showMajorLabels: true,\n showMinorLabels: true,\n stack: true,\n stackSubgroups: true,\n //snap: {'function': 'function', nada},\n start: '',\n //template: {'function': 'function'},\n //timeAxis: {\n // scale: ['millisecond', 'second', 'minute', 'hour', 'weekday', 'day', 'month', 'year'],\n // step: [1, 1, 10, 1]\n //},\n tooltip: {\n followMouse: false,\n overflowMethod: 'flip'\n },\n tooltipOnItemUpdateTime: false,\n type: ['box', 'point', 'range', 'background'],\n width: '100%',\n zoomable: true,\n zoomKey: ['ctrlKey', 'altKey', 'metaKey', ''],\n zoomMax: [315360000000000, 10, 315360000000000, 1],\n zoomMin: [10, 10, 315360000000000, 1]\n }\n};\n\nexport {allOptions, configureOptions};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/optionsTimeline.js","var Emitter = require('emitter-component');\nvar Hammer = require('../module/hammer');\nvar moment = require('../module/moment');\nvar util = require('../util');\nvar DataSet = require('../DataSet');\nvar DataView = require('../DataView');\nvar Range = require('./Range');\nvar Core = require('./Core');\nvar TimeAxis = require('./component/TimeAxis');\nvar CurrentTime = require('./component/CurrentTime');\nvar CustomTime = require('./component/CustomTime');\nvar LineGraph = require('./component/LineGraph');\n\nvar printStyle = require('../shared/Validator').printStyle;\nvar allOptions = require('./optionsGraph2d').allOptions;\nvar configureOptions = require('./optionsGraph2d').configureOptions;\n\nimport Configurator from '../shared/Configurator';\nimport Validator from '../shared/Validator';\n\n/**\n * Create a timeline visualization\n * @param {HTMLElement} container\n * @param {vis.DataSet | Array} [items]\n * @param {Object} [options] See Graph2d.setOptions for the available options.\n * @constructor\n * @extends Core\n */\nfunction Graph2d (container, items, groups, options) {\n // if the third element is options, the forth is groups (optionally);\n if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) {\n var forthArgument = options;\n options = groups;\n groups = forthArgument;\n }\n\n // TODO: REMOVE THIS in the next MAJOR release\n // see https://github.com/almende/vis/issues/2511\n if (options && options.throttleRedraw) {\n console.warn(\"Graph2d option \\\"throttleRedraw\\\" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.\");\n }\n\n var me = this;\n this.defaultOptions = {\n start: null,\n end: null,\n\n autoResize: true,\n\n orientation: {\n axis: 'bottom', // axis orientation: 'bottom', 'top', or 'both'\n item: 'bottom' // not relevant for Graph2d\n },\n\n moment: moment,\n\n width: null,\n height: null,\n maxHeight: null,\n minHeight: null\n };\n this.options = util.deepExtend({}, this.defaultOptions);\n\n // Create the DOM, props, and emitter\n this._create(container);\n\n // all components listed here will be repainted automatically\n this.components = [];\n\n this.body = {\n dom: this.dom,\n domProps: this.props,\n emitter: {\n on: this.on.bind(this),\n off: this.off.bind(this),\n emit: this.emit.bind(this)\n },\n hiddenDates: [],\n util: {\n toScreen: me._toScreen.bind(me),\n toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width\n toTime: me._toTime.bind(me),\n toGlobalTime : me._toGlobalTime.bind(me)\n }\n };\n\n // range\n this.range = new Range(this.body);\n this.components.push(this.range);\n this.body.range = this.range;\n\n // time axis\n this.timeAxis = new TimeAxis(this.body);\n this.components.push(this.timeAxis);\n //this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis);\n\n // current time bar\n this.currentTime = new CurrentTime(this.body);\n this.components.push(this.currentTime);\n\n // item set\n this.linegraph = new LineGraph(this.body);\n\n this.components.push(this.linegraph);\n\n this.itemsData = null; // DataSet\n this.groupsData = null; // DataSet\n\n\n this.on('tap', function (event) {\n me.emit('click', me.getEventProperties(event))\n });\n this.on('doubletap', function (event) {\n me.emit('doubleClick', me.getEventProperties(event))\n });\n this.dom.root.oncontextmenu = function (event) {\n me.emit('contextmenu', me.getEventProperties(event))\n };\n\n // apply options\n if (options) {\n this.setOptions(options);\n }\n\n // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS!\n if (groups) {\n this.setGroups(groups);\n }\n\n // create itemset\n if (items) {\n this.setItems(items);\n }\n\n // draw for the first time\n this._redraw();\n}\n\n// Extend the functionality from Core\nGraph2d.prototype = new Core();\n\nGraph2d.prototype.setOptions = function (options) {\n // validate options\n let errorFound = Validator.validate(options, allOptions);\n if (errorFound === true) {\n console.log('%cErrors have been found in the supplied options object.', printStyle);\n }\n\n Core.prototype.setOptions.call(this, options);\n};\n\n/**\n * Set items\n * @param {vis.DataSet | Array | null} items\n */\nGraph2d.prototype.setItems = function(items) {\n var initialLoad = (this.itemsData == null);\n\n // convert to type DataSet when needed\n var newDataSet;\n if (!items) {\n newDataSet = null;\n }\n else if (items instanceof DataSet || items instanceof DataView) {\n newDataSet = items;\n }\n else {\n // turn an array into a dataset\n newDataSet = new DataSet(items, {\n type: {\n start: 'Date',\n end: 'Date'\n }\n });\n }\n\n // set items\n this.itemsData = newDataSet;\n this.linegraph && this.linegraph.setItems(newDataSet);\n\n if (initialLoad) {\n if (this.options.start != undefined || this.options.end != undefined) {\n var start = this.options.start != undefined ? this.options.start : null;\n var end = this.options.end != undefined ? this.options.end : null;\n this.setWindow(start, end, {animation: false});\n }\n else {\n this.fit({animation: false});\n }\n }\n};\n\n/**\n * Set groups\n * @param {vis.DataSet | Array} groups\n */\nGraph2d.prototype.setGroups = function(groups) {\n // convert to type DataSet when needed\n var newDataSet;\n if (!groups) {\n newDataSet = null;\n }\n else if (groups instanceof DataSet || groups instanceof DataView) {\n newDataSet = groups;\n }\n else {\n // turn an array into a dataset\n newDataSet = new DataSet(groups);\n }\n\n this.groupsData = newDataSet;\n this.linegraph.setGroups(newDataSet);\n};\n\n/**\n * Returns an object containing an SVG element with the icon of the group (size determined by iconWidth and iconHeight), the label of the group (content) and the yAxisOrientation of the group (left or right).\n * @param groupId\n * @param width\n * @param height\n */\nGraph2d.prototype.getLegend = function(groupId, width, height) {\n if (width === undefined) {width = 15;}\n if (height === undefined) {height = 15;}\n if (this.linegraph.groups[groupId] !== undefined) {\n return this.linegraph.groups[groupId].getLegend(width,height);\n }\n else {\n return \"cannot find group:'\" + groupId + \"'\";\n }\n};\n\n/**\n * This checks if the visible option of the supplied group (by ID) is true or false.\n * @param groupId\n * @returns {*}\n */\nGraph2d.prototype.isGroupVisible = function(groupId) {\n if (this.linegraph.groups[groupId] !== undefined) {\n return (this.linegraph.groups[groupId].visible && (this.linegraph.options.groups.visibility[groupId] === undefined || this.linegraph.options.groups.visibility[groupId] == true));\n }\n else {\n return false;\n }\n};\n\n\n/**\n * Get the data range of the item set.\n * @returns {{min: Date, max: Date}} range A range with a start and end Date.\n * When no minimum is found, min==null\n * When no maximum is found, max==null\n */\nGraph2d.prototype.getDataRange = function() {\n var min = null;\n var max = null;\n\n // calculate min from start filed\n for (var groupId in this.linegraph.groups) {\n if (this.linegraph.groups.hasOwnProperty(groupId)) {\n if (this.linegraph.groups[groupId].visible == true) {\n for (var i = 0; i < this.linegraph.groups[groupId].itemsData.length; i++) {\n var item = this.linegraph.groups[groupId].itemsData[i];\n var value = util.convert(item.x, 'Date').valueOf();\n min = min == null ? value : min > value ? value : min;\n max = max == null ? value : max < value ? value : max;\n }\n }\n }\n }\n\n return {\n min: (min != null) ? new Date(min) : null,\n max: (max != null) ? new Date(max) : null\n };\n};\n\n\n/**\n * Generate Timeline related information from an event\n * @param {Event} event\n * @return {Object} An object with related information, like on which area\n * The event happened, whether clicked on an item, etc.\n */\nGraph2d.prototype.getEventProperties = function (event) {\n var clientX = event.center ? event.center.x : event.clientX;\n var clientY = event.center ? event.center.y : event.clientY;\n var x = clientX - util.getAbsoluteLeft(this.dom.centerContainer);\n var y = clientY - util.getAbsoluteTop(this.dom.centerContainer);\n var time = this._toTime(x);\n\n var customTime = CustomTime.customTimeFromTarget(event);\n\n var element = util.getTarget(event);\n var what = null;\n if (util.hasParent(element, this.timeAxis.dom.foreground)) {what = 'axis';}\n else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) {what = 'axis';}\n else if (util.hasParent(element, this.linegraph.yAxisLeft.dom.frame)) {what = 'data-axis';}\n else if (util.hasParent(element, this.linegraph.yAxisRight.dom.frame)) {what = 'data-axis';}\n else if (util.hasParent(element, this.linegraph.legendLeft.dom.frame)) {what = 'legend';}\n else if (util.hasParent(element, this.linegraph.legendRight.dom.frame)) {what = 'legend';}\n else if (customTime != null) {what = 'custom-time';}\n else if (util.hasParent(element, this.currentTime.bar)) {what = 'current-time';}\n else if (util.hasParent(element, this.dom.center)) {what = 'background';}\n\n var value = [];\n var yAxisLeft = this.linegraph.yAxisLeft;\n var yAxisRight = this.linegraph.yAxisRight;\n if (!yAxisLeft.hidden && this.itemsData.length > 0) {\n value.push(yAxisLeft.screenToValue(y));\n }\n if (!yAxisRight.hidden && this.itemsData.length > 0) {\n value.push(yAxisRight.screenToValue(y));\n }\n\n return {\n event: event,\n what: what,\n pageX: event.srcEvent ? event.srcEvent.pageX : event.pageX,\n pageY: event.srcEvent ? event.srcEvent.pageY : event.pageY,\n x: x,\n y: y,\n time: time,\n value: value\n }\n};\n\n/**\n * Load a configurator\n * @return {Object}\n * @private\n */\nGraph2d.prototype._createConfigurator = function () {\n return new Configurator(this, this.dom.container, configureOptions);\n};\n\n\nmodule.exports = Graph2d;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/Graph2d.js","var util = require('../../util');\nvar DOMutil = require('../../DOMutil');\nvar DataSet = require('../../DataSet');\nvar DataView = require('../../DataView');\nvar Component = require('./Component');\nvar DataAxis = require('./DataAxis');\nvar GraphGroup = require('./GraphGroup');\nvar Legend = require('./Legend');\nvar Bars = require('./graph2d_types/bar');\nvar Lines = require('./graph2d_types/line');\nvar Points = require('./graph2d_types/points');\n\nvar UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items\n\n/**\n * This is the constructor of the LineGraph. It requires a Timeline body and options.\n *\n * @param body\n * @param options\n * @constructor\n */\nfunction LineGraph(body, options) {\n this.id = util.randomUUID();\n this.body = body;\n\n this.defaultOptions = {\n yAxisOrientation: 'left',\n defaultGroup: 'default',\n sort: true,\n sampling: true,\n stack: false,\n graphHeight: '400px',\n shaded: {\n enabled: false,\n orientation: 'bottom' // top, bottom, zero\n },\n style: 'line', // line, bar\n barChart: {\n width: 50,\n sideBySide: false,\n align: 'center' // left, center, right\n },\n interpolation: {\n enabled: true,\n parametrization: 'centripetal', // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5)\n alpha: 0.5\n },\n drawPoints: {\n enabled: true,\n size: 6,\n style: 'square' // square, circle\n },\n dataAxis: {}, //Defaults are done on DataAxis level\n legend: {}, //Defaults are done on Legend level\n groups: {\n visibility: {}\n }\n };\n\n // options is shared by this lineGraph and all its items\n this.options = util.extend({}, this.defaultOptions);\n this.dom = {};\n this.props = {};\n this.hammer = null;\n this.groups = {};\n this.abortedGraphUpdate = false;\n this.updateSVGheight = false;\n this.updateSVGheightOnResize = false;\n this.forceGraphUpdate = true;\n\n var me = this;\n this.itemsData = null; // DataSet\n this.groupsData = null; // DataSet\n\n // listeners for the DataSet of the items\n this.itemListeners = {\n 'add': function (event, params, senderId) {\n me._onAdd(params.items);\n },\n 'update': function (event, params, senderId) {\n me._onUpdate(params.items);\n },\n 'remove': function (event, params, senderId) {\n me._onRemove(params.items);\n }\n };\n\n // listeners for the DataSet of the groups\n this.groupListeners = {\n 'add': function (event, params, senderId) {\n me._onAddGroups(params.items);\n },\n 'update': function (event, params, senderId) {\n me._onUpdateGroups(params.items);\n },\n 'remove': function (event, params, senderId) {\n me._onRemoveGroups(params.items);\n }\n };\n\n this.items = {}; // object with an Item for every data item\n this.selection = []; // list with the ids of all selected nodes\n this.lastStart = this.body.range.start;\n this.touchParams = {}; // stores properties while dragging\n\n this.svgElements = {};\n this.setOptions(options);\n this.groupsUsingDefaultStyles = [0];\n this.body.emitter.on('rangechanged', function () {\n me.lastStart = me.body.range.start;\n me.svg.style.left = util.option.asSize(-me.props.width);\n\n me.forceGraphUpdate = true;\n //Is this local redraw necessary? (Core also does a change event!)\n me.redraw.call(me);\n });\n\n // create the HTML DOM\n this._create();\n this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups};\n}\n\nLineGraph.prototype = new Component();\n\n/**\n * Create the HTML DOM for the ItemSet\n */\nLineGraph.prototype._create = function () {\n var frame = document.createElement('div');\n frame.className = 'vis-line-graph';\n this.dom.frame = frame;\n\n // create svg element for graph drawing.\n this.svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n this.svg.style.position = 'relative';\n this.svg.style.height = ('' + this.options.graphHeight).replace('px', '') + 'px';\n this.svg.style.display = 'block';\n frame.appendChild(this.svg);\n\n // data axis\n this.options.dataAxis.orientation = 'left';\n this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups);\n\n this.options.dataAxis.orientation = 'right';\n this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups);\n delete this.options.dataAxis.orientation;\n\n // legends\n this.legendLeft = new Legend(this.body, this.options.legend, 'left', this.options.groups);\n this.legendRight = new Legend(this.body, this.options.legend, 'right', this.options.groups);\n\n this.show();\n};\n\n/**\n * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element.\n * @param {object} options\n */\nLineGraph.prototype.setOptions = function (options) {\n if (options) {\n var fields = ['sampling', 'defaultGroup', 'stack', 'height', 'graphHeight', 'yAxisOrientation', 'style', 'barChart', 'dataAxis', 'sort', 'groups'];\n if (options.graphHeight === undefined && options.height !== undefined) {\n this.updateSVGheight = true;\n this.updateSVGheightOnResize = true;\n }\n else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) {\n if (parseInt((options.graphHeight + '').replace(\"px\", '')) < this.body.domProps.centerContainer.height) {\n this.updateSVGheight = true;\n }\n }\n util.selectiveDeepExtend(fields, this.options, options);\n util.mergeOptions(this.options, options, 'interpolation');\n util.mergeOptions(this.options, options, 'drawPoints');\n util.mergeOptions(this.options, options, 'shaded');\n util.mergeOptions(this.options, options, 'legend');\n\n if (options.interpolation) {\n if (typeof options.interpolation == 'object') {\n if (options.interpolation.parametrization) {\n if (options.interpolation.parametrization == 'uniform') {\n this.options.interpolation.alpha = 0;\n }\n else if (options.interpolation.parametrization == 'chordal') {\n this.options.interpolation.alpha = 1.0;\n }\n else {\n this.options.interpolation.parametrization = 'centripetal';\n this.options.interpolation.alpha = 0.5;\n }\n }\n }\n }\n\n if (this.yAxisLeft) {\n if (options.dataAxis !== undefined) {\n this.yAxisLeft.setOptions(this.options.dataAxis);\n this.yAxisRight.setOptions(this.options.dataAxis);\n }\n }\n\n if (this.legendLeft) {\n if (options.legend !== undefined) {\n this.legendLeft.setOptions(this.options.legend);\n this.legendRight.setOptions(this.options.legend);\n }\n }\n\n if (this.groups.hasOwnProperty(UNGROUPED)) {\n this.groups[UNGROUPED].setOptions(options);\n }\n }\n\n // this is used to redraw the graph if the visibility of the groups is changed.\n if (this.dom.frame) { //not on initial run?\n this.forceGraphUpdate=true;\n this.body.emitter.emit(\"_change\",{queue: true});\n }\n};\n\n/**\n * Hide the component from the DOM\n */\nLineGraph.prototype.hide = function () {\n // remove the frame containing the items\n if (this.dom.frame.parentNode) {\n this.dom.frame.parentNode.removeChild(this.dom.frame);\n }\n};\n\n\n/**\n * Show the component in the DOM (when not already visible).\n * @return {Boolean} changed\n */\nLineGraph.prototype.show = function () {\n // show frame containing the items\n if (!this.dom.frame.parentNode) {\n this.body.dom.center.appendChild(this.dom.frame);\n }\n};\n\n\n/**\n * Set items\n * @param {vis.DataSet | null} items\n */\nLineGraph.prototype.setItems = function (items) {\n var me = this,\n ids,\n oldItemsData = this.itemsData;\n\n // replace the dataset\n if (!items) {\n this.itemsData = null;\n }\n else if (items instanceof DataSet || items instanceof DataView) {\n this.itemsData = items;\n }\n else {\n throw new TypeError('Data must be an instance of DataSet or DataView');\n }\n\n if (oldItemsData) {\n // unsubscribe from old dataset\n util.forEach(this.itemListeners, function (callback, event) {\n oldItemsData.off(event, callback);\n });\n\n // remove all drawn items\n ids = oldItemsData.getIds();\n this._onRemove(ids);\n }\n\n if (this.itemsData) {\n // subscribe to new dataset\n var id = this.id;\n util.forEach(this.itemListeners, function (callback, event) {\n me.itemsData.on(event, callback, id);\n });\n\n // add all new items\n ids = this.itemsData.getIds();\n this._onAdd(ids);\n }\n};\n\n\n/**\n * Set groups\n * @param {vis.DataSet} groups\n */\nLineGraph.prototype.setGroups = function (groups) {\n var me = this;\n var ids;\n\n // unsubscribe from current dataset\n if (this.groupsData) {\n util.forEach(this.groupListeners, function (callback, event) {\n me.groupsData.off(event, callback);\n });\n\n // remove all drawn groups\n ids = this.groupsData.getIds();\n this.groupsData = null;\n for (var i = 0; i < ids.length; i++) {\n this._removeGroup(ids[i]);\n }\n }\n\n // replace the dataset\n if (!groups) {\n this.groupsData = null;\n }\n else if (groups instanceof DataSet || groups instanceof DataView) {\n this.groupsData = groups;\n }\n else {\n throw new TypeError('Data must be an instance of DataSet or DataView');\n }\n\n if (this.groupsData) {\n // subscribe to new dataset\n var id = this.id;\n util.forEach(this.groupListeners, function (callback, event) {\n me.groupsData.on(event, callback, id);\n });\n\n // draw all ms\n ids = this.groupsData.getIds();\n this._onAddGroups(ids);\n }\n};\n\nLineGraph.prototype._onUpdate = function (ids) {\n this._updateAllGroupData(ids);\n};\nLineGraph.prototype._onAdd = function (ids) {\n this._onUpdate(ids);\n};\nLineGraph.prototype._onRemove = function (ids) {\n this._onUpdate(ids);\n};\nLineGraph.prototype._onUpdateGroups = function (groupIds) {\n this._updateAllGroupData(null, groupIds);\n};\nLineGraph.prototype._onAddGroups = function (groupIds) {\n this._onUpdateGroups(groupIds);\n};\n\n/**\n * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph\n * @param {Array} groupIds\n * @private\n */\nLineGraph.prototype._onRemoveGroups = function (groupIds) {\n for (var i = 0; i < groupIds.length; i++) {\n this._removeGroup(groupIds[i]);\n }\n this.forceGraphUpdate = true;\n this.body.emitter.emit(\"_change\",{queue: true});\n};\n\n/**\n * this cleans the group out off the legends and the dataaxis\n * @param groupId\n * @private\n */\nLineGraph.prototype._removeGroup = function (groupId) {\n if (this.groups.hasOwnProperty(groupId)) {\n if (this.groups[groupId].options.yAxisOrientation == 'right') {\n this.yAxisRight.removeGroup(groupId);\n this.legendRight.removeGroup(groupId);\n this.legendRight.redraw();\n }\n else {\n this.yAxisLeft.removeGroup(groupId);\n this.legendLeft.removeGroup(groupId);\n this.legendLeft.redraw();\n }\n delete this.groups[groupId];\n }\n}\n\n/**\n * update a group object with the group dataset entree\n *\n * @param group\n * @param groupId\n * @private\n */\nLineGraph.prototype._updateGroup = function (group, groupId) {\n if (!this.groups.hasOwnProperty(groupId)) {\n this.groups[groupId] = new GraphGroup(group, groupId, this.options, this.groupsUsingDefaultStyles);\n if (this.groups[groupId].options.yAxisOrientation == 'right') {\n this.yAxisRight.addGroup(groupId, this.groups[groupId]);\n this.legendRight.addGroup(groupId, this.groups[groupId]);\n }\n else {\n this.yAxisLeft.addGroup(groupId, this.groups[groupId]);\n this.legendLeft.addGroup(groupId, this.groups[groupId]);\n }\n }\n else {\n this.groups[groupId].update(group);\n if (this.groups[groupId].options.yAxisOrientation == 'right') {\n this.yAxisRight.updateGroup(groupId, this.groups[groupId]);\n this.legendRight.updateGroup(groupId, this.groups[groupId]);\n //If yAxisOrientation changed, clean out the group from the other axis.\n this.yAxisLeft.removeGroup(groupId);\n this.legendLeft.removeGroup(groupId);\n }\n else {\n this.yAxisLeft.updateGroup(groupId, this.groups[groupId]);\n this.legendLeft.updateGroup(groupId, this.groups[groupId]);\n //If yAxisOrientation changed, clean out the group from the other axis.\n this.yAxisRight.removeGroup(groupId);\n this.legendRight.removeGroup(groupId);\n }\n }\n this.legendLeft.redraw();\n this.legendRight.redraw();\n};\n\n\n/**\n * this updates all groups, it is used when there is an update the the itemset.\n *\n * @param {Array} ids\n * @param {Array} groupIds\n * @private\n */\nLineGraph.prototype._updateAllGroupData = function (ids, groupIds) {\n if (this.itemsData != null) {\n var groupsContent = {};\n var items = this.itemsData.get();\n var fieldId = this.itemsData._fieldId;\n var idMap = {};\n if (ids){\n ids.map(function (id) {\n idMap[id] = id;\n });\n }\n\n //pre-Determine array sizes, for more efficient memory claim\n var groupCounts = {};\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var groupId = item.group;\n if (groupId === null || groupId === undefined) {\n groupId = UNGROUPED;\n }\n groupCounts.hasOwnProperty(groupId) ? groupCounts[groupId]++ : groupCounts[groupId] = 1;\n }\n\n //Pre-load arrays from existing groups if items are not changed (not in ids)\n if (!groupIds && ids) {\n for (var groupId in this.groups) {\n if (this.groups.hasOwnProperty(groupId)) {\n var group = this.groups[groupId];\n var existing_items = group.getItems();\n\n groupsContent[groupId] = existing_items.filter(function (item) {\n return (item[fieldId] !== idMap[item[fieldId]]);\n });\n var newLength = groupCounts[groupId];\n groupCounts[groupId] -= groupsContent[groupId].length;\n if (groupsContent[groupId].length < newLength) {\n groupsContent[groupId][newLength - 1] = {};\n }\n }\n }\n }\n\n //Now insert data into the arrays.\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var groupId = item.group;\n if (groupId === null || groupId === undefined) {\n groupId = UNGROUPED;\n }\n if (!groupIds && ids && (item[fieldId] !== idMap[item[fieldId]])) {\n continue;\n }\n if (!groupsContent.hasOwnProperty(groupId)) {\n groupsContent[groupId] = new Array(groupCounts[groupId]);\n }\n //Copy data (because of unmodifiable DataView input.\n var extended = util.bridgeObject(item);\n extended.x = util.convert(item.x, 'Date');\n extended.orginalY = item.y; //real Y\n extended.y = Number(item.y);\n extended[fieldId] = item[fieldId];\n\n var index= groupsContent[groupId].length - groupCounts[groupId]--;\n groupsContent[groupId][index] = extended;\n }\n\n //Make sure all groups are present, to allow removal of old groups\n for (var groupId in this.groups){\n if (this.groups.hasOwnProperty(groupId)){\n if (!groupsContent.hasOwnProperty(groupId)) {\n groupsContent[groupId] = new Array(0);\n }\n }\n }\n\n //Update legendas, style and axis\n for (var groupId in groupsContent) {\n if (groupsContent.hasOwnProperty(groupId)) {\n if (groupsContent[groupId].length == 0) {\n if (this.groups.hasOwnProperty(groupId)) {\n this._removeGroup(groupId);\n }\n } else {\n var group = undefined;\n if (this.groupsData != undefined) {\n group = this.groupsData.get(groupId);\n }\n if (group == undefined) {\n group = {id: groupId, content: this.options.defaultGroup + groupId};\n }\n this._updateGroup(group, groupId);\n this.groups[groupId].setItems(groupsContent[groupId]);\n }\n }\n }\n this.forceGraphUpdate = true;\n this.body.emitter.emit(\"_change\",{queue: true});\n }\n};\n\n/**\n * Redraw the component, mandatory function\n * @return {boolean} Returns true if the component is resized\n */\nLineGraph.prototype.redraw = function () {\n var resized = false;\n\n // calculate actual size and position\n this.props.width = this.dom.frame.offsetWidth;\n this.props.height = this.body.domProps.centerContainer.height\n - this.body.domProps.border.top\n - this.body.domProps.border.bottom;\n\n // check if this component is resized\n resized = this._isResized() || resized;\n\n // check whether zoomed (in that case we need to re-stack everything)\n var visibleInterval = this.body.range.end - this.body.range.start;\n var zoomed = (visibleInterval != this.lastVisibleInterval);\n this.lastVisibleInterval = visibleInterval;\n\n\n // the svg element is three times as big as the width, this allows for fully dragging left and right\n // without reloading the graph. the controls for this are bound to events in the constructor\n if (resized == true) {\n this.svg.style.width = util.option.asSize(3 * this.props.width);\n this.svg.style.left = util.option.asSize(-this.props.width);\n\n // if the height of the graph is set as proportional, change the height of the svg\n if ((this.options.height + '').indexOf(\"%\") != -1 || this.updateSVGheightOnResize == true) {\n this.updateSVGheight = true;\n }\n }\n\n // update the height of the graph on each redraw of the graph.\n if (this.updateSVGheight == true) {\n if (this.options.graphHeight != this.props.height + 'px') {\n this.options.graphHeight = this.props.height + 'px';\n this.svg.style.height = this.props.height + 'px';\n }\n this.updateSVGheight = false;\n }\n else {\n this.svg.style.height = ('' + this.options.graphHeight).replace('px', '') + 'px';\n }\n\n // zoomed is here to ensure that animations are shown correctly.\n if (resized == true || zoomed == true || this.abortedGraphUpdate == true || this.forceGraphUpdate == true) {\n resized = this._updateGraph() || resized;\n this.forceGraphUpdate = false;\n }\n else {\n // move the whole svg while dragging\n if (this.lastStart != 0) {\n var offset = this.body.range.start - this.lastStart;\n var range = this.body.range.end - this.body.range.start;\n if (this.props.width != 0) {\n var rangePerPixelInv = this.props.width / range;\n var xOffset = offset * rangePerPixelInv;\n this.svg.style.left = (-this.props.width - xOffset) + 'px';\n }\n }\n }\n this.legendLeft.redraw();\n this.legendRight.redraw();\n return resized;\n};\n\n\nLineGraph.prototype._getSortedGroupIds = function(){\n // getting group Ids\n var grouplist = [];\n for (var groupId in this.groups) {\n if (this.groups.hasOwnProperty(groupId)) {\n var group = this.groups[groupId];\n if (group.visible == true && (this.options.groups.visibility[groupId] === undefined || this.options.groups.visibility[groupId] == true)) {\n grouplist.push({id:groupId,zIndex:group.options.zIndex});\n }\n }\n }\n util.insertSort(grouplist,function(a,b){\n var az = a.zIndex;\n var bz = b.zIndex;\n if (az === undefined) az=0;\n if (bz === undefined) bz=0;\n return az==bz? 0: (az 0) {\n var groupsData = {};\n\n // fill groups data, this only loads the data we require based on the timewindow\n this._getRelevantData(groupIds, groupsData, minDate, maxDate);\n\n // apply sampling, if disabled, it will pass through this function.\n this._applySampling(groupIds, groupsData);\n\n // we transform the X coordinates to detect collisions\n for (i = 0; i < groupIds.length; i++) {\n this._convertXcoordinates(groupsData[groupIds[i]]);\n }\n\n // now all needed data has been collected we start the processing.\n this._getYRanges(groupIds, groupsData, groupRanges);\n\n // update the Y axis first, we use this data to draw at the correct Y points\n changeCalled = this._updateYAxis(groupIds, groupRanges);\n\n // at changeCalled, abort this update cycle as the graph needs another update with new Width input from the Redraw container.\n // Cleanup SVG elements on abort.\n if (changeCalled == true) {\n DOMutil.cleanupElements(this.svgElements);\n this.abortedGraphUpdate = true;\n return true;\n }\n this.abortedGraphUpdate = false;\n\n // With the yAxis scaled correctly, use this to get the Y values of the points.\n var below = undefined;\n for (i = 0; i < groupIds.length; i++) {\n group = this.groups[groupIds[i]];\n if (this.options.stack === true && this.options.style === 'line') {\n if (group.options.excludeFromStacking == undefined || !group.options.excludeFromStacking) {\n if (below != undefined) {\n this._stack(groupsData[group.id], groupsData[below.id]);\n if (group.options.shaded.enabled == true && group.options.shaded.orientation !== \"group\"){\n if (group.options.shaded.orientation == \"top\" && below.options.shaded.orientation !== \"group\"){\n below.options.shaded.orientation=\"group\";\n below.options.shaded.groupId=group.id;\n } else {\n group.options.shaded.orientation=\"group\";\n group.options.shaded.groupId=below.id;\n }\n }\n }\n below = group;\n }\n }\n this._convertYcoordinates(groupsData[groupIds[i]], group);\n }\n\n //Precalculate paths and draw shading if appropriate. This will make sure the shading is always behind any lines.\n var paths = {};\n for (i = 0; i < groupIds.length; i++) {\n group = this.groups[groupIds[i]];\n if (group.options.style === 'line' && group.options.shaded.enabled == true) {\n var dataset = groupsData[groupIds[i]];\n if (dataset == null || dataset.length == 0) {\n continue;\n }\n if (!paths.hasOwnProperty(groupIds[i])) {\n paths[groupIds[i]] = Lines.calcPath(dataset, group);\n }\n if (group.options.shaded.orientation === \"group\") {\n var subGroupId = group.options.shaded.groupId;\n if (groupIds.indexOf(subGroupId) === -1) {\n console.log(group.id + \": Unknown shading group target given:\" + subGroupId);\n continue;\n }\n if (!paths.hasOwnProperty(subGroupId)) {\n paths[subGroupId] = Lines.calcPath(groupsData[subGroupId], this.groups[subGroupId]);\n }\n Lines.drawShading(paths[groupIds[i]], group, paths[subGroupId], this.framework);\n }\n else {\n Lines.drawShading(paths[groupIds[i]], group, undefined, this.framework);\n }\n }\n }\n\n // draw the groups, calculating paths if still necessary.\n Bars.draw(groupIds, groupsData, this.framework);\n for (i = 0; i < groupIds.length; i++) {\n group = this.groups[groupIds[i]];\n if (groupsData[groupIds[i]].length > 0) {\n switch (group.options.style) {\n case \"line\":\n if (!paths.hasOwnProperty(groupIds[i])) {\n paths[groupIds[i]] = Lines.calcPath(groupsData[groupIds[i]], group);\n }\n Lines.draw(paths[groupIds[i]], group, this.framework);\n //explicit no break;\n case \"point\":\n //explicit no break;\n case \"points\":\n if (group.options.style == \"point\" || group.options.style == \"points\" || group.options.drawPoints.enabled == true) {\n Points.draw(groupsData[groupIds[i]], group, this.framework);\n }\n break;\n case \"bar\":\n // bar needs to be drawn enmasse\n //explicit no break\n default:\n //do nothing...\n }\n }\n\n }\n }\n }\n\n // cleanup unused svg elements\n DOMutil.cleanupElements(this.svgElements);\n return false;\n};\n\nLineGraph.prototype._stack = function (data, subData) {\n var index, dx, dy, subPrevPoint, subNextPoint;\n index = 0;\n // for each data point we look for a matching on in the set below\n for (var j = 0; j < data.length; j++) {\n subPrevPoint = undefined;\n subNextPoint = undefined;\n // we look for time matches or a before-after point\n for (var k = index; k < subData.length; k++) {\n // if times match exactly\n if (subData[k].x === data[j].x) {\n subPrevPoint = subData[k];\n subNextPoint = subData[k];\n index = k;\n break;\n }\n else if (subData[k].x > data[j].x) { // overshoot\n subNextPoint = subData[k];\n if (k == 0) {\n subPrevPoint = subNextPoint;\n }\n else {\n subPrevPoint = subData[k - 1];\n }\n index = k;\n break;\n }\n }\n // in case the last data point has been used, we assume it stays like this.\n if (subNextPoint === undefined) {\n subPrevPoint = subData[subData.length - 1];\n subNextPoint = subData[subData.length - 1];\n }\n // linear interpolation\n dx = subNextPoint.x - subPrevPoint.x;\n dy = subNextPoint.y - subPrevPoint.y;\n if (dx == 0) {\n data[j].y = data[j].orginalY + subNextPoint.y;\n }\n else {\n data[j].y = data[j].orginalY + (dy / dx) * (data[j].x - subPrevPoint.x) + subPrevPoint.y; // ax + b where b is data[j].y\n }\n }\n}\n\n\n/**\n * first select and preprocess the data from the datasets.\n * the groups have their preselection of data, we now loop over this data to see\n * what data we need to draw. Sorted data is much faster.\n * more optimization is possible by doing the sampling before and using the binary search\n * to find the end date to determine the increment.\n *\n * @param {array} groupIds\n * @param {object} groupsData\n * @param {date} minDate\n * @param {date} maxDate\n * @private\n */\nLineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) {\n var group, i, j, item;\n if (groupIds.length > 0) {\n for (i = 0; i < groupIds.length; i++) {\n group = this.groups[groupIds[i]];\n var itemsData = group.getItems();\n // optimization for sorted data\n if (group.options.sort == true) {\n var dateComparator = function (a, b) {\n return a.getTime() == b.getTime() ? 0 : a < b ? -1 : 1\n };\n var first = Math.max(0, util.binarySearchValue(itemsData, minDate, 'x', 'before', dateComparator));\n var last = Math.min(itemsData.length, util.binarySearchValue(itemsData, maxDate, 'x', 'after', dateComparator) + 1);\n if (last <= 0) {\n last = itemsData.length;\n }\n var dataContainer = new Array(last-first);\n for (j = first; j < last; j++) {\n item = group.itemsData[j];\n dataContainer[j-first] = item;\n }\n groupsData[groupIds[i]] = dataContainer;\n }\n else {\n // If unsorted data, all data is relevant, just returning entire structure\n groupsData[groupIds[i]] = group.itemsData;\n }\n }\n }\n};\n\n\n/**\n *\n * @param groupIds\n * @param groupsData\n * @private\n */\nLineGraph.prototype._applySampling = function (groupIds, groupsData) {\n var group;\n if (groupIds.length > 0) {\n for (var i = 0; i < groupIds.length; i++) {\n group = this.groups[groupIds[i]];\n if (group.options.sampling == true) {\n var dataContainer = groupsData[groupIds[i]];\n if (dataContainer.length > 0) {\n var increment = 1;\n var amountOfPoints = dataContainer.length;\n\n // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop\n // of width changing of the yAxis.\n //TODO: This assumes sorted data, but that's not guaranteed!\n var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x);\n var pointsPerPixel = amountOfPoints / xDistance;\n increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel)));\n\n var sampledData = new Array(amountOfPoints);\n for (var j = 0; j < amountOfPoints; j += increment) {\n var idx = Math.round(j/increment);\n sampledData[idx]=dataContainer[j];\n }\n groupsData[groupIds[i]] = sampledData.splice(0,Math.round(amountOfPoints/increment));\n }\n }\n }\n }\n};\n\n\n/**\n *\n *\n * @param {array} groupIds\n * @param {object} groupsData\n * @param {object} groupRanges | this is being filled here\n * @private\n */\nLineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) {\n var groupData, group, i;\n var combinedDataLeft = [];\n var combinedDataRight = [];\n var options;\n if (groupIds.length > 0) {\n for (i = 0; i < groupIds.length; i++) {\n groupData = groupsData[groupIds[i]];\n options = this.groups[groupIds[i]].options;\n if (groupData.length > 0) {\n group = this.groups[groupIds[i]];\n // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups.\n if (options.stack === true && options.style === 'bar') {\n if (options.yAxisOrientation === 'left') {\n combinedDataLeft = combinedDataLeft.concat(group.getItems());\n }\n else {\n combinedDataRight = combinedDataRight.concat(group.getItems());\n }\n }\n else {\n groupRanges[groupIds[i]] = group.getYRange(groupData, groupIds[i]);\n }\n }\n }\n\n // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups.\n Bars.getStackedYRange(combinedDataLeft, groupRanges, groupIds, '__barStackLeft', 'left');\n Bars.getStackedYRange(combinedDataRight, groupRanges, groupIds, '__barStackRight', 'right');\n }\n};\n\n\n/**\n * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden.\n * @param {Array} groupIds\n * @param {Object} groupRanges\n * @private\n */\nLineGraph.prototype._updateYAxis = function (groupIds, groupRanges) {\n var resized = false;\n var yAxisLeftUsed = false;\n var yAxisRightUsed = false;\n var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal;\n // if groups are present\n if (groupIds.length > 0) {\n // this is here to make sure that if there are no items in the axis but there are groups, that there is no infinite draw/redraw loop.\n for (var i = 0; i < groupIds.length; i++) {\n var group = this.groups[groupIds[i]];\n if (group && group.options.yAxisOrientation != 'right') {\n yAxisLeftUsed = true;\n minLeft = 1e9;\n maxLeft = -1e9;\n }\n else if (group && group.options.yAxisOrientation) {\n yAxisRightUsed = true;\n minRight = 1e9;\n maxRight = -1e9;\n }\n }\n\n // if there are items:\n for (var i = 0; i < groupIds.length; i++) {\n if (groupRanges.hasOwnProperty(groupIds[i])) {\n if (groupRanges[groupIds[i]].ignore !== true) {\n minVal = groupRanges[groupIds[i]].min;\n maxVal = groupRanges[groupIds[i]].max;\n\n if (groupRanges[groupIds[i]].yAxisOrientation != 'right') {\n yAxisLeftUsed = true;\n minLeft = minLeft > minVal ? minVal : minLeft;\n maxLeft = maxLeft < maxVal ? maxVal : maxLeft;\n }\n else {\n yAxisRightUsed = true;\n minRight = minRight > minVal ? minVal : minRight;\n maxRight = maxRight < maxVal ? maxVal : maxRight;\n }\n }\n }\n }\n\n if (yAxisLeftUsed == true) {\n this.yAxisLeft.setRange(minLeft, maxLeft);\n }\n if (yAxisRightUsed == true) {\n this.yAxisRight.setRange(minRight, maxRight);\n }\n }\n resized = this._toggleAxisVisiblity(yAxisLeftUsed, this.yAxisLeft) || resized;\n resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized;\n\n if (yAxisRightUsed == true && yAxisLeftUsed == true) {\n this.yAxisLeft.drawIcons = true;\n this.yAxisRight.drawIcons = true;\n }\n else {\n this.yAxisLeft.drawIcons = false;\n this.yAxisRight.drawIcons = false;\n }\n this.yAxisRight.master = !yAxisLeftUsed;\n this.yAxisRight.masterAxis = this.yAxisLeft;\n\n if (this.yAxisRight.master == false) {\n if (yAxisRightUsed == true) {\n this.yAxisLeft.lineOffset = this.yAxisRight.width;\n }\n else {\n this.yAxisLeft.lineOffset = 0;\n }\n\n resized = this.yAxisLeft.redraw() || resized;\n resized = this.yAxisRight.redraw() || resized;\n }\n else {\n resized = this.yAxisRight.redraw() || resized;\n }\n\n // clean the accumulated lists\n var tempGroups = ['__barStackLeft', '__barStackRight', '__lineStackLeft', '__lineStackRight'];\n for (var i = 0; i < tempGroups.length; i++) {\n if (groupIds.indexOf(tempGroups[i]) != -1) {\n groupIds.splice(groupIds.indexOf(tempGroups[i]), 1);\n }\n }\n\n return resized;\n};\n\n\n/**\n * This shows or hides the Y axis if needed. If there is a change, the changed event is emitted by the updateYAxis function\n *\n * @param {boolean} axisUsed\n * @returns {boolean}\n * @private\n * @param axis\n */\nLineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) {\n var changed = false;\n if (axisUsed == false) {\n if (axis.dom.frame.parentNode && axis.hidden == false) {\n axis.hide();\n changed = true;\n }\n }\n else {\n if (!axis.dom.frame.parentNode && axis.hidden == true) {\n axis.show();\n changed = true;\n }\n }\n return changed;\n};\n\n\n/**\n * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the\n * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for\n * the yAxis.\n *\n * @param datapoints\n * @returns {Array}\n * @private\n */\nLineGraph.prototype._convertXcoordinates = function (datapoints) {\n var toScreen = this.body.util.toScreen;\n for (var i = 0; i < datapoints.length; i++) {\n datapoints[i].screen_x = toScreen(datapoints[i].x) + this.props.width;\n datapoints[i].screen_y = datapoints[i].y; //starting point for range calculations\n }\n};\n\n\n/**\n * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the\n * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for\n * the yAxis.\n *\n * @param datapoints\n * @param group\n * @returns {Array}\n * @private\n */\nLineGraph.prototype._convertYcoordinates = function (datapoints, group) {\n var axis = this.yAxisLeft;\n var svgHeight = Number(this.svg.style.height.replace('px', ''));\n if (group.options.yAxisOrientation == 'right') {\n axis = this.yAxisRight;\n }\n for (var i = 0; i < datapoints.length; i++) {\n datapoints[i].screen_y = Math.round(axis.convertValue(datapoints[i].y));\n }\n group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0)));\n};\n\n\nmodule.exports = LineGraph;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/LineGraph.js","var util = require('../../util');\nvar DOMutil = require('../../DOMutil');\nvar Component = require('./Component');\nvar DataScale = require('./DataScale');\n/**\n * A horizontal time axis\n * @param {Object} [options] See DataAxis.setOptions for the available\n * options.\n * @constructor DataAxis\n * @extends Component\n * @param body\n */\nfunction DataAxis(body, options, svg, linegraphOptions) {\n this.id = util.randomUUID();\n this.body = body;\n\n this.defaultOptions = {\n orientation: 'left', // supported: 'left', 'right'\n showMinorLabels: true,\n showMajorLabels: true,\n icons: false,\n majorLinesOffset: 7,\n minorLinesOffset: 4,\n labelOffsetX: 10,\n labelOffsetY: 2,\n iconWidth: 20,\n width: '40px',\n visible: true,\n alignZeros: true,\n left: {\n range: {min: undefined, max: undefined},\n format: function (value) {\n return '' + parseFloat(value.toPrecision(3));\n },\n title: {text: undefined, style: undefined}\n },\n right: {\n range: {min: undefined, max: undefined},\n format: function (value) {\n return '' + parseFloat(value.toPrecision(3));\n },\n title: {text: undefined, style: undefined}\n }\n };\n\n this.linegraphOptions = linegraphOptions;\n this.linegraphSVG = svg;\n this.props = {};\n this.DOMelements = { // dynamic elements\n lines: {},\n labels: {},\n title: {}\n };\n\n this.dom = {};\n this.scale = undefined;\n this.range = {start: 0, end: 0};\n\n this.options = util.extend({}, this.defaultOptions);\n this.conversionFactor = 1;\n\n this.setOptions(options);\n this.width = Number(('' + this.options.width).replace(\"px\", \"\"));\n this.minWidth = this.width;\n this.height = this.linegraphSVG.getBoundingClientRect().height;\n this.hidden = false;\n\n this.stepPixels = 25;\n this.zeroCrossing = -1;\n this.amountOfSteps = -1;\n\n this.lineOffset = 0;\n this.master = true;\n this.masterAxis = null;\n this.svgElements = {};\n this.iconsRemoved = false;\n\n this.groups = {};\n this.amountOfGroups = 0;\n\n // create the HTML DOM\n this._create();\n this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups};\n\n var me = this;\n this.body.emitter.on(\"verticalDrag\", function () {\n me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px';\n });\n}\n\nDataAxis.prototype = new Component();\n\n\nDataAxis.prototype.addGroup = function (label, graphOptions) {\n if (!this.groups.hasOwnProperty(label)) {\n this.groups[label] = graphOptions;\n }\n this.amountOfGroups += 1;\n};\n\nDataAxis.prototype.updateGroup = function (label, graphOptions) {\n if (!this.groups.hasOwnProperty(label)) {\n this.amountOfGroups += 1;\n }\n this.groups[label] = graphOptions;\n};\n\nDataAxis.prototype.removeGroup = function (label) {\n if (this.groups.hasOwnProperty(label)) {\n delete this.groups[label];\n this.amountOfGroups -= 1;\n }\n};\n\n\nDataAxis.prototype.setOptions = function (options) {\n if (options) {\n var redraw = false;\n if (this.options.orientation != options.orientation && options.orientation !== undefined) {\n redraw = true;\n }\n var fields = [\n 'orientation',\n 'showMinorLabels',\n 'showMajorLabels',\n 'icons',\n 'majorLinesOffset',\n 'minorLinesOffset',\n 'labelOffsetX',\n 'labelOffsetY',\n 'iconWidth',\n 'width',\n 'visible',\n 'left',\n 'right',\n 'alignZeros'\n ];\n util.selectiveDeepExtend(fields, this.options, options);\n\n this.minWidth = Number(('' + this.options.width).replace(\"px\", \"\"));\n if (redraw === true && this.dom.frame) {\n this.hide();\n this.show();\n }\n }\n};\n\n\n/**\n * Create the HTML DOM for the DataAxis\n */\nDataAxis.prototype._create = function () {\n this.dom.frame = document.createElement('div');\n this.dom.frame.style.width = this.options.width;\n this.dom.frame.style.height = this.height;\n\n this.dom.lineContainer = document.createElement('div');\n this.dom.lineContainer.style.width = '100%';\n this.dom.lineContainer.style.height = this.height;\n this.dom.lineContainer.style.position = 'relative';\n\n // create svg element for graph drawing.\n this.svg = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n this.svg.style.position = \"absolute\";\n this.svg.style.top = '0px';\n this.svg.style.height = '100%';\n this.svg.style.width = '100%';\n this.svg.style.display = \"block\";\n this.dom.frame.appendChild(this.svg);\n};\n\nDataAxis.prototype._redrawGroupIcons = function () {\n DOMutil.prepareElements(this.svgElements);\n\n var x;\n var iconWidth = this.options.iconWidth;\n var iconHeight = 15;\n var iconOffset = 4;\n var y = iconOffset + 0.5 * iconHeight;\n\n if (this.options.orientation === 'left') {\n x = iconOffset;\n }\n else {\n x = this.width - iconWidth - iconOffset;\n }\n\n var groupArray = Object.keys(this.groups);\n groupArray.sort(function (a, b) {\n return (a < b ? -1 : 1);\n })\n\n for (var i = 0; i < groupArray.length; i++) {\n var groupId = groupArray[i];\n if (this.groups[groupId].visible === true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] === true)) {\n this.groups[groupId].getLegend(iconWidth, iconHeight, this.framework, x, y);\n y += iconHeight + iconOffset;\n }\n }\n\n DOMutil.cleanupElements(this.svgElements);\n this.iconsRemoved = false;\n};\n\nDataAxis.prototype._cleanupIcons = function () {\n if (this.iconsRemoved === false) {\n DOMutil.prepareElements(this.svgElements);\n DOMutil.cleanupElements(this.svgElements);\n this.iconsRemoved = true;\n }\n}\n\n/**\n * Create the HTML DOM for the DataAxis\n */\nDataAxis.prototype.show = function () {\n this.hidden = false;\n if (!this.dom.frame.parentNode) {\n if (this.options.orientation === 'left') {\n this.body.dom.left.appendChild(this.dom.frame);\n }\n else {\n this.body.dom.right.appendChild(this.dom.frame);\n }\n }\n\n if (!this.dom.lineContainer.parentNode) {\n this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer);\n }\n};\n\n/**\n * Create the HTML DOM for the DataAxis\n */\nDataAxis.prototype.hide = function () {\n this.hidden = true;\n if (this.dom.frame.parentNode) {\n this.dom.frame.parentNode.removeChild(this.dom.frame);\n }\n\n if (this.dom.lineContainer.parentNode) {\n this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer);\n }\n};\n\n/**\n * Set a range (start and end)\n * @param end\n * @param start\n * @param end\n */\nDataAxis.prototype.setRange = function (start, end) {\n this.range.start = start;\n this.range.end = end;\n};\n\n/**\n * Repaint the component\n * @return {boolean} Returns true if the component is resized\n */\nDataAxis.prototype.redraw = function () {\n var resized = false;\n var activeGroups = 0;\n\n // Make sure the line container adheres to the vertical scrolling.\n this.dom.lineContainer.style.top = this.body.domProps.scrollTop + 'px';\n\n for (var groupId in this.groups) {\n if (this.groups.hasOwnProperty(groupId)) {\n if (this.groups[groupId].visible === true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] === true)) {\n activeGroups++;\n }\n }\n }\n if (this.amountOfGroups === 0 || activeGroups === 0) {\n this.hide();\n }\n else {\n this.show();\n this.height = Number(this.linegraphSVG.style.height.replace(\"px\", \"\"));\n\n // svg offsetheight did not work in firefox and explorer...\n this.dom.lineContainer.style.height = this.height + 'px';\n this.width = this.options.visible === true ? Number(('' + this.options.width).replace(\"px\", \"\")) : 0;\n\n var props = this.props;\n var frame = this.dom.frame;\n\n // update classname\n frame.className = 'vis-data-axis';\n\n // calculate character width and height\n this._calculateCharSize();\n\n var orientation = this.options.orientation;\n var showMinorLabels = this.options.showMinorLabels;\n var showMajorLabels = this.options.showMajorLabels;\n\n // determine the width and height of the elements for the axis\n props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0;\n props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0;\n\n props.minorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.minorLinesOffset;\n props.minorLineHeight = 1;\n props.majorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.majorLinesOffset;\n props.majorLineHeight = 1;\n\n // take frame offline while updating (is almost twice as fast)\n if (orientation === 'left') {\n frame.style.top = '0';\n frame.style.left = '0';\n frame.style.bottom = '';\n frame.style.width = this.width + 'px';\n frame.style.height = this.height + \"px\";\n this.props.width = this.body.domProps.left.width;\n this.props.height = this.body.domProps.left.height;\n }\n else { // right\n frame.style.top = '';\n frame.style.bottom = '0';\n frame.style.left = '0';\n frame.style.width = this.width + 'px';\n frame.style.height = this.height + \"px\";\n this.props.width = this.body.domProps.right.width;\n this.props.height = this.body.domProps.right.height;\n }\n\n resized = this._redrawLabels();\n resized = this._isResized() || resized;\n\n if (this.options.icons === true) {\n this._redrawGroupIcons();\n }\n else {\n this._cleanupIcons();\n }\n\n this._redrawTitle(orientation);\n }\n return resized;\n};\n\n/**\n * Repaint major and minor text labels and vertical grid lines\n * @private\n */\nDataAxis.prototype._redrawLabels = function () {\n var resized = false;\n DOMutil.prepareElements(this.DOMelements.lines);\n DOMutil.prepareElements(this.DOMelements.labels);\n var orientation = this.options['orientation'];\n var customRange = this.options[orientation].range != undefined ? this.options[orientation].range : {};\n\n //Override range with manual options:\n var autoScaleEnd = true;\n if (customRange.max != undefined) {\n this.range.end = customRange.max;\n autoScaleEnd = false;\n }\n var autoScaleStart = true;\n if (customRange.min != undefined) {\n this.range.start = customRange.min;\n autoScaleStart = false;\n }\n\n this.scale = new DataScale(\n this.range.start,\n this.range.end,\n autoScaleStart,\n autoScaleEnd,\n this.dom.frame.offsetHeight,\n this.props.majorCharHeight,\n this.options.alignZeros,\n this.options[orientation].format\n );\n\n if (this.master === false && this.masterAxis != undefined) {\n this.scale.followScale(this.masterAxis.scale);\n }\n\n //Is updated in side-effect of _redrawLabel():\n this.maxLabelSize = 0;\n\n var lines = this.scale.getLines();\n lines.forEach(\n line=> {\n var y = line.y;\n var isMajor = line.major;\n if (this.options['showMinorLabels'] && isMajor === false) {\n this._redrawLabel(y - 2, line.val, orientation, 'vis-y-axis vis-minor', this.props.minorCharHeight);\n }\n if (isMajor) {\n if (y >= 0) {\n this._redrawLabel(y - 2, line.val, orientation, 'vis-y-axis vis-major', this.props.majorCharHeight);\n }\n }\n if (this.master === true) {\n if (isMajor) {\n this._redrawLine(y, orientation, 'vis-grid vis-horizontal vis-major', this.options.majorLinesOffset, this.props.majorLineWidth);\n }\n else {\n this._redrawLine(y, orientation, 'vis-grid vis-horizontal vis-minor', this.options.minorLinesOffset, this.props.minorLineWidth);\n }\n }\n });\n\n // Note that title is rotated, so we're using the height, not width!\n var titleWidth = 0;\n if (this.options[orientation].title !== undefined && this.options[orientation].title.text !== undefined) {\n titleWidth = this.props.titleCharHeight;\n }\n var offset = this.options.icons === true ? Math.max(this.options.iconWidth, titleWidth) + this.options.labelOffsetX + 15 : titleWidth + this.options.labelOffsetX + 15;\n\n // this will resize the yAxis to accommodate the labels.\n if (this.maxLabelSize > (this.width - offset) && this.options.visible === true) {\n this.width = this.maxLabelSize + offset;\n this.options.width = this.width + \"px\";\n DOMutil.cleanupElements(this.DOMelements.lines);\n DOMutil.cleanupElements(this.DOMelements.labels);\n this.redraw();\n resized = true;\n }\n // this will resize the yAxis if it is too big for the labels.\n else if (this.maxLabelSize < (this.width - offset) && this.options.visible === true && this.width > this.minWidth) {\n this.width = Math.max(this.minWidth, this.maxLabelSize + offset);\n this.options.width = this.width + \"px\";\n DOMutil.cleanupElements(this.DOMelements.lines);\n DOMutil.cleanupElements(this.DOMelements.labels);\n this.redraw();\n resized = true;\n }\n else {\n DOMutil.cleanupElements(this.DOMelements.lines);\n DOMutil.cleanupElements(this.DOMelements.labels);\n resized = false;\n }\n\n return resized;\n};\n\nDataAxis.prototype.convertValue = function (value) {\n return this.scale.convertValue(value);\n};\n\nDataAxis.prototype.screenToValue = function (x) {\n return this.scale.screenToValue(x);\n};\n\n/**\n * Create a label for the axis at position x\n * @private\n * @param y\n * @param text\n * @param orientation\n * @param className\n * @param characterHeight\n */\nDataAxis.prototype._redrawLabel = function (y, text, orientation, className, characterHeight) {\n // reuse redundant label\n var label = DOMutil.getDOMElement('div', this.DOMelements.labels, this.dom.frame); //this.dom.redundant.labels.shift();\n label.className = className;\n label.innerHTML = text;\n if (orientation === 'left') {\n label.style.left = '-' + this.options.labelOffsetX + 'px';\n label.style.textAlign = \"right\";\n }\n else {\n label.style.right = '-' + this.options.labelOffsetX + 'px';\n label.style.textAlign = \"left\";\n }\n\n label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px';\n\n text += '';\n\n var largestWidth = Math.max(this.props.majorCharWidth, this.props.minorCharWidth);\n if (this.maxLabelSize < text.length * largestWidth) {\n this.maxLabelSize = text.length * largestWidth;\n }\n};\n\n/**\n * Create a minor line for the axis at position y\n * @param y\n * @param orientation\n * @param className\n * @param offset\n * @param width\n */\nDataAxis.prototype._redrawLine = function (y, orientation, className, offset, width) {\n if (this.master === true) {\n var line = DOMutil.getDOMElement('div', this.DOMelements.lines, this.dom.lineContainer);//this.dom.redundant.lines.shift();\n line.className = className;\n line.innerHTML = '';\n\n if (orientation === 'left') {\n line.style.left = (this.width - offset) + 'px';\n }\n else {\n line.style.right = (this.width - offset) + 'px';\n }\n\n line.style.width = width + 'px';\n line.style.top = y + 'px';\n }\n};\n\n/**\n * Create a title for the axis\n * @private\n * @param orientation\n */\nDataAxis.prototype._redrawTitle = function (orientation) {\n DOMutil.prepareElements(this.DOMelements.title);\n\n // Check if the title is defined for this axes\n if (this.options[orientation].title !== undefined && this.options[orientation].title.text !== undefined) {\n var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame);\n title.className = 'vis-y-axis vis-title vis-' + orientation;\n title.innerHTML = this.options[orientation].title.text;\n\n // Add style - if provided\n if (this.options[orientation].title.style !== undefined) {\n util.addCssText(title, this.options[orientation].title.style);\n }\n\n if (orientation === 'left') {\n title.style.left = this.props.titleCharHeight + 'px';\n }\n else {\n title.style.right = this.props.titleCharHeight + 'px';\n }\n\n title.style.width = this.height + 'px';\n }\n\n // we need to clean up in case we did not use all elements.\n DOMutil.cleanupElements(this.DOMelements.title);\n};\n\n\n/**\n * Determine the size of text on the axis (both major and minor axis).\n * The size is calculated only once and then cached in this.props.\n * @private\n */\nDataAxis.prototype._calculateCharSize = function () {\n // determine the char width and height on the minor axis\n if (!('minorCharHeight' in this.props)) {\n var textMinor = document.createTextNode('0');\n var measureCharMinor = document.createElement('div');\n measureCharMinor.className = 'vis-y-axis vis-minor vis-measure';\n measureCharMinor.appendChild(textMinor);\n this.dom.frame.appendChild(measureCharMinor);\n\n this.props.minorCharHeight = measureCharMinor.clientHeight;\n this.props.minorCharWidth = measureCharMinor.clientWidth;\n\n this.dom.frame.removeChild(measureCharMinor);\n }\n\n if (!('majorCharHeight' in this.props)) {\n var textMajor = document.createTextNode('0');\n var measureCharMajor = document.createElement('div');\n measureCharMajor.className = 'vis-y-axis vis-major vis-measure';\n measureCharMajor.appendChild(textMajor);\n this.dom.frame.appendChild(measureCharMajor);\n\n this.props.majorCharHeight = measureCharMajor.clientHeight;\n this.props.majorCharWidth = measureCharMajor.clientWidth;\n\n this.dom.frame.removeChild(measureCharMajor);\n }\n\n if (!('titleCharHeight' in this.props)) {\n var textTitle = document.createTextNode('0');\n var measureCharTitle = document.createElement('div');\n measureCharTitle.className = 'vis-y-axis vis-title vis-measure';\n measureCharTitle.appendChild(textTitle);\n this.dom.frame.appendChild(measureCharTitle);\n\n this.props.titleCharHeight = measureCharTitle.clientHeight;\n this.props.titleCharWidth = measureCharTitle.clientWidth;\n\n this.dom.frame.removeChild(measureCharTitle);\n }\n};\n\nmodule.exports = DataAxis;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/DataAxis.js","/**\n * Created by ludo on 25-1-16.\n */\n\nfunction DataScale(start, end, autoScaleStart, autoScaleEnd, containerHeight, majorCharHeight, zeroAlign = false, formattingFunction=false) {\n this.majorSteps = [1, 2, 5, 10];\n this.minorSteps = [0.25, 0.5, 1, 2];\n this.customLines = null;\n\n this.containerHeight = containerHeight;\n this.majorCharHeight = majorCharHeight;\n this._start = start;\n this._end = end;\n\n this.scale = 1;\n this.minorStepIdx = -1;\n this.magnitudefactor = 1;\n this.determineScale();\n\n this.zeroAlign = zeroAlign;\n this.autoScaleStart = autoScaleStart;\n this.autoScaleEnd = autoScaleEnd;\n\n this.formattingFunction = formattingFunction;\n\n if (autoScaleStart || autoScaleEnd) {\n var me = this;\n var roundToMinor = function (value) {\n var rounded = value - (value % (me.magnitudefactor * me.minorSteps[me.minorStepIdx]));\n if (value % (me.magnitudefactor * me.minorSteps[me.minorStepIdx]) > 0.5 * (me.magnitudefactor * me.minorSteps[me.minorStepIdx])) {\n return rounded + (me.magnitudefactor * me.minorSteps[me.minorStepIdx]);\n }\n else {\n return rounded;\n }\n };\n if (autoScaleStart) {\n this._start -= this.magnitudefactor * 2 * this.minorSteps[this.minorStepIdx];\n this._start = roundToMinor(this._start);\n }\n\n if (autoScaleEnd) {\n this._end += this.magnitudefactor * this.minorSteps[this.minorStepIdx];\n this._end = roundToMinor(this._end);\n }\n this.determineScale();\n }\n}\n\nDataScale.prototype.setCharHeight = function (majorCharHeight) {\n this.majorCharHeight = majorCharHeight;\n};\n\nDataScale.prototype.setHeight = function (containerHeight) {\n this.containerHeight = containerHeight;\n};\n\nDataScale.prototype.determineScale = function () {\n var range = this._end - this._start;\n this.scale = this.containerHeight / range;\n var minimumStepValue = this.majorCharHeight / this.scale;\n var orderOfMagnitude = (range > 0)\n ? Math.round(Math.log(range) / Math.LN10)\n : 0;\n\n this.minorStepIdx = -1;\n this.magnitudefactor = Math.pow(10, orderOfMagnitude);\n\n var start = 0;\n if (orderOfMagnitude < 0) {\n start = orderOfMagnitude;\n }\n\n var solutionFound = false;\n for (var l = start; Math.abs(l) <= Math.abs(orderOfMagnitude); l++) {\n this.magnitudefactor = Math.pow(10, l);\n for (var j = 0; j < this.minorSteps.length; j++) {\n var stepSize = this.magnitudefactor * this.minorSteps[j];\n if (stepSize >= minimumStepValue) {\n solutionFound = true;\n this.minorStepIdx = j;\n break;\n }\n }\n if (solutionFound === true) {\n break;\n }\n }\n};\n\nDataScale.prototype.is_major = function (value) {\n return (value % (this.magnitudefactor * this.majorSteps[this.minorStepIdx]) === 0);\n};\n\nDataScale.prototype.getStep = function(){\n return this.magnitudefactor * this.minorSteps[this.minorStepIdx];\n};\n\nDataScale.prototype.getFirstMajor = function(){\n var majorStep = this.magnitudefactor * this.majorSteps[this.minorStepIdx];\n return this.convertValue(this._start + ((majorStep - (this._start % majorStep)) % majorStep));\n};\n\nDataScale.prototype.formatValue = function(current) {\n var returnValue = current.toPrecision(5);\n if (typeof this.formattingFunction === 'function') {\n returnValue = this.formattingFunction(current);\n }\n\n if (typeof returnValue === 'number') {\n return '' + returnValue;\n }\n else if (typeof returnValue === 'string') {\n return returnValue;\n }\n else {\n return current.toPrecision(5);\n }\n\n};\n\nDataScale.prototype.getLines = function () {\n var lines = [];\n var step = this.getStep();\n var bottomOffset = (step - (this._start % step)) % step;\n for (var i = (this._start + bottomOffset); this._end-i > 0.00001; i += step) {\n if (i != this._start) { //Skip the bottom line\n lines.push({major: this.is_major(i), y: this.convertValue(i), val: this.formatValue(i)});\n }\n }\n return lines;\n};\n\nDataScale.prototype.followScale = function (other) {\n var oldStepIdx = this.minorStepIdx;\n var oldStart = this._start;\n var oldEnd = this._end;\n\n var me = this;\n var increaseMagnitude = function () {\n me.magnitudefactor *= 2;\n };\n var decreaseMagnitude = function () {\n me.magnitudefactor /= 2;\n };\n\n if ((other.minorStepIdx <= 1 && this.minorStepIdx <= 1) || (other.minorStepIdx > 1 && this.minorStepIdx > 1)) {\n //easy, no need to change stepIdx nor multiplication factor\n } else if (other.minorStepIdx < this.minorStepIdx) {\n //I'm 5, they are 4 per major.\n this.minorStepIdx = 1;\n if (oldStepIdx == 2) {\n increaseMagnitude();\n } else {\n increaseMagnitude();\n increaseMagnitude();\n }\n } else {\n //I'm 4, they are 5 per major\n this.minorStepIdx = 2;\n if (oldStepIdx == 1) {\n decreaseMagnitude();\n } else {\n decreaseMagnitude();\n decreaseMagnitude();\n }\n }\n\n //Get masters stats:\n var lines = other.getLines();\n var otherZero = other.convertValue(0);\n var otherStep = other.getStep() * other.scale;\n\n var done = false;\n var count = 0;\n //Loop until magnitude is correct for given constrains.\n while (!done && count++ <5) {\n\n //Get my stats:\n this.scale = otherStep / (this.minorSteps[this.minorStepIdx] * this.magnitudefactor);\n var newRange = this.containerHeight / this.scale;\n\n //For the case the magnitudefactor has changed:\n this._start = oldStart;\n this._end = this._start + newRange;\n\n var myOriginalZero = this._end * this.scale;\n var majorStep = this.magnitudefactor * this.majorSteps[this.minorStepIdx];\n var majorOffset = this.getFirstMajor() - other.getFirstMajor();\n\n if (this.zeroAlign) {\n var zeroOffset = otherZero - myOriginalZero;\n this._end += (zeroOffset / this.scale);\n this._start = this._end - newRange;\n } else {\n if (!this.autoScaleStart) {\n this._start += majorStep - (majorOffset / this.scale);\n this._end = this._start + newRange;\n } else {\n this._start -= majorOffset / this.scale;\n this._end = this._start + newRange;\n }\n }\n if (!this.autoScaleEnd && this._end > oldEnd+0.00001) {\n //Need to decrease magnitude to prevent scale overshoot! (end)\n decreaseMagnitude();\n done = false;\n continue;\n }\n if (!this.autoScaleStart && this._start < oldStart-0.00001) {\n if (this.zeroAlign && oldStart >= 0) {\n console.warn(\"Can't adhere to given 'min' range, due to zeroalign\");\n } else {\n //Need to decrease magnitude to prevent scale overshoot! (start)\n decreaseMagnitude();\n done = false;\n continue;\n }\n }\n if (this.autoScaleStart && this.autoScaleEnd && newRange < (oldEnd-oldStart)){\n increaseMagnitude();\n done = false;\n continue;\n }\n done = true;\n }\n};\n\nDataScale.prototype.convertValue = function (value) {\n return this.containerHeight - ((value - this._start) * this.scale);\n};\n\nDataScale.prototype.screenToValue = function (pixels) {\n return ((this.containerHeight - pixels) / this.scale) + this._start;\n};\n\nmodule.exports = DataScale;\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/DataScale.js","var util = require('../../util');\nvar DOMutil = require('../../DOMutil');\nvar Bars = require('./graph2d_types/bar');\nvar Lines = require('./graph2d_types/line');\nvar Points = require('./graph2d_types/points');\n\n/**\n * /**\n * @param {object} group | the object of the group from the dataset\n * @param {string} groupId | ID of the group\n * @param {object} options | the default options\n * @param {array} groupsUsingDefaultStyles | this array has one entree.\n * It is passed as an array so it is passed by reference.\n * It enumerates through the default styles\n * @constructor\n */\nfunction GraphGroup(group, groupId, options, groupsUsingDefaultStyles) {\n this.id = groupId;\n var fields = ['sampling', 'style', 'sort', 'yAxisOrientation', 'barChart', 'drawPoints', 'shaded', 'interpolation', 'zIndex','excludeFromStacking', 'excludeFromLegend'];\n this.options = util.selectiveBridgeObject(fields, options);\n this.usingDefaultStyle = group.className === undefined;\n this.groupsUsingDefaultStyles = groupsUsingDefaultStyles;\n this.zeroPosition = 0;\n this.update(group);\n if (this.usingDefaultStyle == true) {\n this.groupsUsingDefaultStyles[0] += 1;\n }\n this.itemsData = [];\n this.visible = group.visible === undefined ? true : group.visible;\n}\n\n/**\n * this loads a reference to all items in this group into this group.\n * @param {array} items\n */\nGraphGroup.prototype.setItems = function (items) {\n if (items != null) {\n this.itemsData = items;\n if (this.options.sort == true) {\n util.insertSort(this.itemsData,function (a, b) {\n return a.x > b.x ? 1 : -1;\n });\n }\n }\n else {\n this.itemsData = [];\n }\n};\n\nGraphGroup.prototype.getItems = function () {\n return this.itemsData;\n}\n\n/**\n * this is used for barcharts and shading, this way, we only have to calculate it once.\n * @param pos\n */\nGraphGroup.prototype.setZeroPosition = function (pos) {\n this.zeroPosition = pos;\n};\n\n/**\n * set the options of the graph group over the default options.\n * @param options\n */\nGraphGroup.prototype.setOptions = function (options) {\n if (options !== undefined) {\n var fields = ['sampling', 'style', 'sort', 'yAxisOrientation', 'barChart', 'zIndex','excludeFromStacking', 'excludeFromLegend'];\n util.selectiveDeepExtend(fields, this.options, options);\n\n // if the group's drawPoints is a function delegate the callback to the onRender property\n if (typeof options.drawPoints == 'function') {\n options.drawPoints = {\n onRender: options.drawPoints\n }\n }\n\n util.mergeOptions(this.options, options, 'interpolation');\n util.mergeOptions(this.options, options, 'drawPoints');\n util.mergeOptions(this.options, options, 'shaded');\n\n if (options.interpolation) {\n if (typeof options.interpolation == 'object') {\n if (options.interpolation.parametrization) {\n if (options.interpolation.parametrization == 'uniform') {\n this.options.interpolation.alpha = 0;\n }\n else if (options.interpolation.parametrization == 'chordal') {\n this.options.interpolation.alpha = 1.0;\n }\n else {\n this.options.interpolation.parametrization = 'centripetal';\n this.options.interpolation.alpha = 0.5;\n }\n }\n }\n }\n }\n};\n\n\n/**\n * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph\n * @param group\n */\nGraphGroup.prototype.update = function (group) {\n this.group = group;\n this.content = group.content || 'graph';\n this.className = group.className || this.className || 'vis-graph-group' + this.groupsUsingDefaultStyles[0] % 10;\n this.visible = group.visible === undefined ? true : group.visible;\n this.style = group.style;\n this.setOptions(group.options);\n};\n\n/**\n * return the legend entree for this group.\n *\n * @param iconWidth\n * @param iconHeight\n * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}}\n */\nGraphGroup.prototype.getLegend = function (iconWidth, iconHeight, framework, x, y) {\n if (framework == undefined || framework == null) {\n var svg = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n framework = {svg: svg, svgElements:{}, options: this.options, groups: [this]}\n }\n if (x == undefined || x == null){\n x = 0;\n }\n if (y == undefined || y == null){\n y = 0.5 * iconHeight;\n }\n switch (this.options.style){\n case \"line\":\n Lines.drawIcon(this, x, y, iconWidth, iconHeight, framework);\n break;\n case \"points\": //explicit no break\n case \"point\":\n Points.drawIcon(this, x, y, iconWidth, iconHeight, framework);\n break;\n case \"bar\":\n Bars.drawIcon(this, x, y, iconWidth, iconHeight, framework);\n break;\n }\n return {icon: framework.svg, label: this.content, orientation: this.options.yAxisOrientation};\n};\n\nGraphGroup.prototype.getYRange = function (groupData) {\n var yMin = groupData[0].y;\n var yMax = groupData[0].y;\n for (var j = 0; j < groupData.length; j++) {\n yMin = yMin > groupData[j].y ? groupData[j].y : yMin;\n yMax = yMax < groupData[j].y ? groupData[j].y : yMax;\n }\n return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation};\n};\n\nmodule.exports = GraphGroup;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/GraphGroup.js","var DOMutil = require('../../../DOMutil');\nvar Points = require('./points');\n\nfunction Bargraph(groupId, options) {\n}\n\nBargraph.drawIcon = function (group, x, y, iconWidth, iconHeight, framework) {\n var fillHeight = iconHeight * 0.5;\n var path, fillPath;\n\n var outline = DOMutil.getSVGElement(\"rect\", framework.svgElements, framework.svg);\n outline.setAttributeNS(null, \"x\", x);\n outline.setAttributeNS(null, \"y\", y - fillHeight);\n outline.setAttributeNS(null, \"width\", iconWidth);\n outline.setAttributeNS(null, \"height\", 2 * fillHeight);\n outline.setAttributeNS(null, \"class\", \"vis-outline\");\n\n var barWidth = Math.round(0.3 * iconWidth);\n var originalWidth = group.options.barChart.width;\n var scale = originalWidth / barWidth;\n var bar1Height = Math.round(0.4 * iconHeight);\n var bar2Height = Math.round(0.75 * iconHeight);\n\n var offset = Math.round((iconWidth - (2 * barWidth)) / 3);\n\n DOMutil.drawBar(x + 0.5 * barWidth + offset, y + fillHeight - bar1Height - 1, barWidth, bar1Height, group.className + ' vis-bar', framework.svgElements, framework.svg, group.style);\n DOMutil.drawBar(x + 1.5 * barWidth + offset + 2, y + fillHeight - bar2Height - 1, barWidth, bar2Height, group.className + ' vis-bar', framework.svgElements, framework.svg, group.style);\n\n if (group.options.drawPoints.enabled == true) {\n var groupTemplate = {\n style: group.options.drawPoints.style,\n styles: group.options.drawPoints.styles,\n size: (group.options.drawPoints.size / scale),\n className: group.className\n };\n DOMutil.drawPoint(x + 0.5 * barWidth + offset, y + fillHeight - bar1Height - 1, groupTemplate, framework.svgElements, framework.svg);\n DOMutil.drawPoint(x + 1.5 * barWidth + offset + 2, y + fillHeight - bar2Height - 1, groupTemplate, framework.svgElements, framework.svg);\n }\n\n}\n\n/**\n * draw a bar graph\n *\n * @param groupIds\n * @param processedGroupData\n */\nBargraph.draw = function (groupIds, processedGroupData, framework) {\n var combinedData = [];\n var intersections = {};\n var coreDistance;\n var key, drawData;\n var group;\n var i, j;\n var barPoints = 0;\n\n // combine all barchart data\n for (i = 0; i < groupIds.length; i++) {\n group = framework.groups[groupIds[i]];\n if (group.options.style === 'bar') {\n if (group.visible === true && (framework.options.groups.visibility[groupIds[i]] === undefined || framework.options.groups.visibility[groupIds[i]] === true)) {\n for (j = 0; j < processedGroupData[groupIds[i]].length; j++) {\n combinedData.push({\n screen_x: processedGroupData[groupIds[i]][j].screen_x,\n screen_y: processedGroupData[groupIds[i]][j].screen_y,\n x: processedGroupData[groupIds[i]][j].x,\n y: processedGroupData[groupIds[i]][j].y,\n groupId: groupIds[i],\n label: processedGroupData[groupIds[i]][j].label\n });\n barPoints += 1;\n }\n }\n }\n }\n\n if (barPoints === 0) {\n return;\n }\n\n // sort by time and by group\n combinedData.sort(function (a, b) {\n if (a.screen_x === b.screen_x) {\n return a.groupId < b.groupId ? -1 : 1;\n }\n else {\n return a.screen_x - b.screen_x;\n }\n });\n\n // get intersections\n Bargraph._getDataIntersections(intersections, combinedData);\n\n // plot barchart\n for (i = 0; i < combinedData.length; i++) {\n group = framework.groups[combinedData[i].groupId];\n var minWidth = group.options.barChart.minWidth != undefined ? group.options.barChart.minWidth : 0.1 * group.options.barChart.width;\n\n key = combinedData[i].screen_x;\n var heightOffset = 0;\n if (intersections[key] === undefined) {\n if (i + 1 < combinedData.length) {\n coreDistance = Math.abs(combinedData[i + 1].screen_x - key);\n }\n drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth);\n }\n else {\n var nextKey = i + (intersections[key].amount - intersections[key].resolved);\n var prevKey = i - (intersections[key].resolved + 1);\n if (nextKey < combinedData.length) {\n coreDistance = Math.abs(combinedData[nextKey].screen_x - key);\n }\n drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth);\n intersections[key].resolved += 1;\n\n if (group.options.stack === true && group.options.excludeFromStacking !== true) {\n if (combinedData[i].screen_y < group.zeroPosition) {\n heightOffset = intersections[key].accumulatedNegative;\n intersections[key].accumulatedNegative += group.zeroPosition - combinedData[i].screen_y;\n }\n else {\n heightOffset = intersections[key].accumulatedPositive;\n intersections[key].accumulatedPositive += group.zeroPosition - combinedData[i].screen_y;\n }\n }\n else if (group.options.barChart.sideBySide === true) {\n drawData.width = drawData.width / intersections[key].amount;\n drawData.offset += (intersections[key].resolved) * drawData.width - (0.5 * drawData.width * (intersections[key].amount + 1));\n }\n }\n DOMutil.drawBar(combinedData[i].screen_x + drawData.offset, combinedData[i].screen_y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].screen_y, group.className + ' vis-bar', framework.svgElements, framework.svg, group.style);\n // draw points\n if (group.options.drawPoints.enabled === true) {\n let pointData = {\n screen_x: combinedData[i].screen_x,\n screen_y: combinedData[i].screen_y - heightOffset,\n x: combinedData[i].x,\n y: combinedData[i].y,\n groupId: combinedData[i].groupId,\n label: combinedData[i].label\n };\n Points.draw([pointData], group, framework, drawData.offset);\n //DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y, group, framework.svgElements, framework.svg);\n }\n }\n};\n\n\n/**\n * Fill the intersections object with counters of how many datapoints share the same x coordinates\n * @param intersections\n * @param combinedData\n * @private\n */\nBargraph._getDataIntersections = function (intersections, combinedData) {\n // get intersections\n var coreDistance;\n for (var i = 0; i < combinedData.length; i++) {\n if (i + 1 < combinedData.length) {\n coreDistance = Math.abs(combinedData[i + 1].screen_x - combinedData[i].screen_x);\n }\n if (i > 0) {\n coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].screen_x - combinedData[i].screen_x));\n }\n if (coreDistance === 0) {\n if (intersections[combinedData[i].screen_x] === undefined) {\n intersections[combinedData[i].screen_x] = {\n amount: 0,\n resolved: 0,\n accumulatedPositive: 0,\n accumulatedNegative: 0\n };\n }\n intersections[combinedData[i].screen_x].amount += 1;\n }\n }\n};\n\n\n/**\n * Get the width and offset for bargraphs based on the coredistance between datapoints\n *\n * @param coreDistance\n * @param group\n * @param minWidth\n * @returns {{width: Number, offset: Number}}\n * @private\n */\nBargraph._getSafeDrawData = function (coreDistance, group, minWidth) {\n var width, offset;\n if (coreDistance < group.options.barChart.width && coreDistance > 0) {\n width = coreDistance < minWidth ? minWidth : coreDistance\n\n offset = 0; // recalculate offset with the new width;\n if (group.options.barChart.align === 'left') {\n offset -= 0.5 * coreDistance;\n }\n else if (group.options.barChart.align === 'right') {\n offset += 0.5 * coreDistance;\n }\n }\n else {\n // default settings\n width = group.options.barChart.width;\n offset = 0;\n if (group.options.barChart.align === 'left') {\n offset -= 0.5 * group.options.barChart.width;\n }\n else if (group.options.barChart.align === 'right') {\n offset += 0.5 * group.options.barChart.width;\n }\n }\n\n return {width: width, offset: offset};\n};\n\nBargraph.getStackedYRange = function (combinedData, groupRanges, groupIds, groupLabel, orientation) {\n if (combinedData.length > 0) {\n // sort by time and by group\n combinedData.sort(function (a, b) {\n if (a.screen_x === b.screen_x) {\n return a.groupId < b.groupId ? -1 : 1;\n }\n else {\n return a.screen_x - b.screen_x;\n }\n });\n var intersections = {};\n\n Bargraph._getDataIntersections(intersections, combinedData);\n groupRanges[groupLabel] = Bargraph._getStackedYRange(intersections, combinedData);\n groupRanges[groupLabel].yAxisOrientation = orientation;\n groupIds.push(groupLabel);\n }\n}\n\nBargraph._getStackedYRange = function (intersections, combinedData) {\n var key;\n var yMin = combinedData[0].screen_y;\n var yMax = combinedData[0].screen_y;\n for (var i = 0; i < combinedData.length; i++) {\n key = combinedData[i].screen_x;\n if (intersections[key] === undefined) {\n yMin = yMin > combinedData[i].screen_y ? combinedData[i].screen_y : yMin;\n yMax = yMax < combinedData[i].screen_y ? combinedData[i].screen_y : yMax;\n }\n else {\n if (combinedData[i].screen_y < 0) {\n intersections[key].accumulatedNegative += combinedData[i].screen_y;\n }\n else {\n intersections[key].accumulatedPositive += combinedData[i].screen_y;\n }\n }\n }\n for (var xpos in intersections) {\n if (intersections.hasOwnProperty(xpos)) {\n yMin = yMin > intersections[xpos].accumulatedNegative ? intersections[xpos].accumulatedNegative : yMin;\n yMin = yMin > intersections[xpos].accumulatedPositive ? intersections[xpos].accumulatedPositive : yMin;\n yMax = yMax < intersections[xpos].accumulatedNegative ? intersections[xpos].accumulatedNegative : yMax;\n yMax = yMax < intersections[xpos].accumulatedPositive ? intersections[xpos].accumulatedPositive : yMax;\n }\n }\n\n return {min: yMin, max: yMax};\n};\n\nmodule.exports = Bargraph;\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/graph2d_types/bar.js","var DOMutil = require('../../../DOMutil');\n\nfunction Points(groupId, options) {\n}\n\n/**\n * draw the data points\n *\n * @param {Array} dataset\n * @param {Object} JSONcontainer\n * @param {Object} svg | SVG DOM element\n * @param {GraphGroup} group\n * @param {Number} [offset]\n */\nPoints.draw = function (dataset, group, framework, offset) {\n offset = offset || 0;\n var callback = getCallback(framework, group);\n\n for (var i = 0; i < dataset.length; i++) {\n if (!callback) {\n // draw the point the simple way.\n DOMutil.drawPoint(dataset[i].screen_x + offset, dataset[i].screen_y, getGroupTemplate(group), framework.svgElements, framework.svg, dataset[i].label);\n }\n else {\n var callbackResult = callback(dataset[i], group); // result might be true, false or an object\n if (callbackResult === true || typeof callbackResult === 'object') {\n DOMutil.drawPoint(dataset[i].screen_x + offset, dataset[i].screen_y, getGroupTemplate(group, callbackResult), framework.svgElements, framework.svg, dataset[i].label);\n }\n }\n }\n};\n\nPoints.drawIcon = function (group, x, y, iconWidth, iconHeight, framework) {\n var fillHeight = iconHeight * 0.5;\n var path, fillPath;\n\n var outline = DOMutil.getSVGElement(\"rect\", framework.svgElements, framework.svg);\n outline.setAttributeNS(null, \"x\", x);\n outline.setAttributeNS(null, \"y\", y - fillHeight);\n outline.setAttributeNS(null, \"width\", iconWidth);\n outline.setAttributeNS(null, \"height\", 2 * fillHeight);\n outline.setAttributeNS(null, \"class\", \"vis-outline\");\n\n //Don't call callback on icon\n DOMutil.drawPoint(x + 0.5 * iconWidth, y, getGroupTemplate(group), framework.svgElements, framework.svg);\n};\n\nfunction getGroupTemplate(group, callbackResult) {\n callbackResult = (typeof callbackResult === 'undefined') ? {} : callbackResult;\n return {\n style: callbackResult.style || group.options.drawPoints.style,\n styles: callbackResult.styles || group.options.drawPoints.styles,\n size: callbackResult.size || group.options.drawPoints.size,\n className: callbackResult.className || group.className\n };\n}\n\nfunction getCallback(framework, group) {\n var callback = undefined;\n // check for the graph2d onRender\n if (framework.options && framework.options.drawPoints && framework.options.drawPoints.onRender && typeof framework.options.drawPoints.onRender == 'function') {\n callback = framework.options.drawPoints.onRender;\n }\n\n // override it with the group onRender if defined\n if (group.group.options && group.group.options.drawPoints && group.group.options.drawPoints.onRender && typeof group.group.options.drawPoints.onRender == 'function') {\n callback = group.group.options.drawPoints.onRender;\n }\n return callback;\n}\n\n\nmodule.exports = Points;\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/graph2d_types/points.js","var DOMutil = require('../../../DOMutil');\n\nfunction Line(groupId, options) {\n}\n\nLine.calcPath = function (dataset, group) {\n if (dataset != null) {\n if (dataset.length > 0) {\n var d = [];\n\n // construct path from dataset\n if (group.options.interpolation.enabled == true) {\n d = Line._catmullRom(dataset, group);\n }\n else {\n d = Line._linear(dataset);\n }\n return d;\n }\n }\n}\n\nLine.drawIcon = function (group, x, y, iconWidth, iconHeight, framework) {\n var fillHeight = iconHeight * 0.5;\n var path, fillPath;\n\n var outline = DOMutil.getSVGElement(\"rect\", framework.svgElements, framework.svg);\n outline.setAttributeNS(null, \"x\", x);\n outline.setAttributeNS(null, \"y\", y - fillHeight);\n outline.setAttributeNS(null, \"width\", iconWidth);\n outline.setAttributeNS(null, \"height\", 2 * fillHeight);\n outline.setAttributeNS(null, \"class\", \"vis-outline\");\n\n path = DOMutil.getSVGElement(\"path\", framework.svgElements, framework.svg);\n path.setAttributeNS(null, \"class\", group.className);\n if (group.style !== undefined) {\n path.setAttributeNS(null, \"style\", group.style);\n }\n\n path.setAttributeNS(null, \"d\", \"M\" + x + \",\" + y + \" L\" + (x + iconWidth) + \",\" + y + \"\");\n if (group.options.shaded.enabled == true) {\n fillPath = DOMutil.getSVGElement(\"path\", framework.svgElements, framework.svg);\n if (group.options.shaded.orientation == 'top') {\n fillPath.setAttributeNS(null, \"d\", \"M\" + x + \", \" + (y - fillHeight) +\n \"L\" + x + \",\" + y + \" L\" + (x + iconWidth) + \",\" + y + \" L\" + (x + iconWidth) + \",\" + (y - fillHeight));\n }\n else {\n fillPath.setAttributeNS(null, \"d\", \"M\" + x + \",\" + y + \" \" +\n \"L\" + x + \",\" + (y + fillHeight) + \" \" +\n \"L\" + (x + iconWidth) + \",\" + (y + fillHeight) +\n \"L\" + (x + iconWidth) + \",\" + y);\n }\n fillPath.setAttributeNS(null, \"class\", group.className + \" vis-icon-fill\");\n if (group.options.shaded.style !== undefined && group.options.shaded.style !== \"\") {\n fillPath.setAttributeNS(null, \"style\", group.options.shaded.style);\n }\n }\n\n if (group.options.drawPoints.enabled == true) {\n var groupTemplate = {\n style: group.options.drawPoints.style,\n styles: group.options.drawPoints.styles,\n size: group.options.drawPoints.size,\n className: group.className\n };\n DOMutil.drawPoint(x + 0.5 * iconWidth, y, groupTemplate, framework.svgElements, framework.svg);\n }\n}\n\nLine.drawShading = function (pathArray, group, subPathArray, framework) {\n // append shading to the path\n if (group.options.shaded.enabled == true) {\n var svgHeight = Number(framework.svg.style.height.replace('px',''));\n var fillPath = DOMutil.getSVGElement('path', framework.svgElements, framework.svg);\n var type = \"L\";\n if (group.options.interpolation.enabled == true){\n type = \"C\";\n }\n var dFill;\n var zero = 0;\n if (group.options.shaded.orientation == 'top') {\n zero = 0;\n }\n else if (group.options.shaded.orientation == 'bottom') {\n zero = svgHeight;\n }\n else {\n zero = Math.min(Math.max(0, group.zeroPosition), svgHeight);\n }\n if (group.options.shaded.orientation == 'group' && (subPathArray != null && subPathArray != undefined)) {\n dFill = 'M' + pathArray[0][0]+ \",\"+pathArray[0][1] + \" \" +\n this.serializePath(pathArray,type,false) +\n ' L'+ subPathArray[subPathArray.length-1][0]+ \",\" + subPathArray[subPathArray.length-1][1] + \" \" +\n this.serializePath(subPathArray,type,true) +\n subPathArray[0][0]+ \",\"+subPathArray[0][1] + \" Z\";\n }\n else {\n dFill = 'M' + pathArray[0][0]+ \",\"+pathArray[0][1] + \" \" +\n this.serializePath(pathArray,type,false) +\n ' V' + zero + ' H'+ pathArray[0][0] + \" Z\";\n }\n\n fillPath.setAttributeNS(null, 'class', group.className + ' vis-fill');\n if (group.options.shaded.style !== undefined) {\n fillPath.setAttributeNS(null, 'style', group.options.shaded.style);\n }\n fillPath.setAttributeNS(null, 'd', dFill);\n }\n}\n\n/**\n * draw a line graph\n *\n * @param dataset\n * @param group\n */\nLine.draw = function (pathArray, group, framework) {\n if (pathArray != null && pathArray != undefined) {\n var path = DOMutil.getSVGElement('path', framework.svgElements, framework.svg);\n path.setAttributeNS(null, \"class\", group.className);\n if (group.style !== undefined) {\n path.setAttributeNS(null, \"style\", group.style);\n }\n\n var type = \"L\";\n if (group.options.interpolation.enabled == true){\n type = \"C\";\n }\n // copy properties to path for drawing.\n path.setAttributeNS(null, 'd', 'M' + pathArray[0][0]+ \",\"+pathArray[0][1] + \" \" + this.serializePath(pathArray,type,false));\n }\n};\n\nLine.serializePath = function(pathArray,type,inverse){\n if (pathArray.length < 2){\n //Too little data to create a path.\n return \"\";\n }\n var d = type;\n if (inverse){\n for (var i = pathArray.length-2; i > 0; i--){\n d += pathArray[i][0] + \",\" + pathArray[i][1] + \" \";\n }\n }\n else {\n for (var i = 1; i < pathArray.length; i++){\n d += pathArray[i][0] + \",\" + pathArray[i][1] + \" \";\n }\n }\n return d;\n}\n\n/**\n * This uses an uniform parametrization of the interpolation algorithm:\n * 'On the Parameterization of Catmull-Rom Curves' by Cem Yuksel et al.\n * @param data\n * @returns {string}\n * @private\n */\nLine._catmullRomUniform = function (data) {\n // catmull rom\n var p0, p1, p2, p3, bp1, bp2;\n var d = [];\n d.push( [ Math.round(data[0].screen_x) , Math.round(data[0].screen_y) ]);\n var normalization = 1 / 6;\n var length = data.length;\n for (var i = 0; i < length - 1; i++) {\n\n p0 = (i == 0) ? data[0] : data[i - 1];\n p1 = data[i];\n p2 = data[i + 1];\n p3 = (i + 2 < length) ? data[i + 2] : p2;\n\n\n // Catmull-Rom to Cubic Bezier conversion matrix\n // 0 1 0 0\n // -1/6 1 1/6 0\n // 0 1/6 1 -1/6\n // 0 0 1 0\n\n // bp0 = { x: p1.x, y: p1.y };\n bp1 = {\n screen_x: ((-p0.screen_x + 6 * p1.screen_x + p2.screen_x) * normalization),\n screen_y: ((-p0.screen_y + 6 * p1.screen_y + p2.screen_y) * normalization)\n };\n bp2 = {\n screen_x: (( p1.screen_x + 6 * p2.screen_x - p3.screen_x) * normalization),\n screen_y: (( p1.screen_y + 6 * p2.screen_y - p3.screen_y) * normalization)\n };\n // bp0 = { x: p2.x, y: p2.y };\n\n d.push( [ bp1.screen_x , bp1.screen_y ]);\n d.push( [ bp2.screen_x , bp2.screen_y ]);\n d.push( [ p2.screen_x , p2.screen_y ]);\n }\n\n return d;\n};\n\n/**\n * This uses either the chordal or centripetal parameterization of the catmull-rom algorithm.\n * By default, the centripetal parameterization is used because this gives the nicest results.\n * These parameterizations are relatively heavy because the distance between 4 points have to be calculated.\n *\n * One optimization can be used to reuse distances since this is a sliding window approach.\n * @param data\n * @param group\n * @returns {string}\n * @private\n */\nLine._catmullRom = function (data, group) {\n var alpha = group.options.interpolation.alpha;\n if (alpha == 0 || alpha === undefined) {\n return this._catmullRomUniform(data);\n }\n else {\n var p0, p1, p2, p3, bp1, bp2, d1, d2, d3, A, B, N, M;\n var d3powA, d2powA, d3pow2A, d2pow2A, d1pow2A, d1powA;\n var d = [];\n d.push( [ Math.round(data[0].screen_x) , Math.round(data[0].screen_y) ]);\n var length = data.length;\n for (var i = 0; i < length - 1; i++) {\n\n p0 = (i == 0) ? data[0] : data[i - 1];\n p1 = data[i];\n p2 = data[i + 1];\n p3 = (i + 2 < length) ? data[i + 2] : p2;\n\n d1 = Math.sqrt(Math.pow(p0.screen_x - p1.screen_x, 2) + Math.pow(p0.screen_y - p1.screen_y, 2));\n d2 = Math.sqrt(Math.pow(p1.screen_x - p2.screen_x, 2) + Math.pow(p1.screen_y - p2.screen_y, 2));\n d3 = Math.sqrt(Math.pow(p2.screen_x - p3.screen_x, 2) + Math.pow(p2.screen_y - p3.screen_y, 2));\n\n // Catmull-Rom to Cubic Bezier conversion matrix\n\n // A = 2d1^2a + 3d1^a * d2^a + d3^2a\n // B = 2d3^2a + 3d3^a * d2^a + d2^2a\n\n // [ 0 1 0 0 ]\n // [ -d2^2a /N A/N d1^2a /N 0 ]\n // [ 0 d3^2a /M B/M -d2^2a /M ]\n // [ 0 0 1 0 ]\n\n d3powA = Math.pow(d3, alpha);\n d3pow2A = Math.pow(d3, 2 * alpha);\n d2powA = Math.pow(d2, alpha);\n d2pow2A = Math.pow(d2, 2 * alpha);\n d1powA = Math.pow(d1, alpha);\n d1pow2A = Math.pow(d1, 2 * alpha);\n\n A = 2 * d1pow2A + 3 * d1powA * d2powA + d2pow2A;\n B = 2 * d3pow2A + 3 * d3powA * d2powA + d2pow2A;\n N = 3 * d1powA * (d1powA + d2powA);\n if (N > 0) {\n N = 1 / N;\n }\n M = 3 * d3powA * (d3powA + d2powA);\n if (M > 0) {\n M = 1 / M;\n }\n\n bp1 = {\n screen_x: ((-d2pow2A * p0.screen_x + A * p1.screen_x + d1pow2A * p2.screen_x) * N),\n screen_y: ((-d2pow2A * p0.screen_y + A * p1.screen_y + d1pow2A * p2.screen_y) * N)\n };\n\n bp2 = {\n screen_x: (( d3pow2A * p1.screen_x + B * p2.screen_x - d2pow2A * p3.screen_x) * M),\n screen_y: (( d3pow2A * p1.screen_y + B * p2.screen_y - d2pow2A * p3.screen_y) * M)\n };\n\n if (bp1.screen_x == 0 && bp1.screen_y == 0) {\n bp1 = p1;\n }\n if (bp2.screen_x == 0 && bp2.screen_y == 0) {\n bp2 = p2;\n }\n d.push( [ bp1.screen_x , bp1.screen_y ]);\n d.push( [ bp2.screen_x , bp2.screen_y ]);\n d.push( [ p2.screen_x , p2.screen_y ]);\n }\n\n return d;\n }\n};\n\n/**\n * this generates the SVG path for a linear drawing between datapoints.\n * @param data\n * @returns {string}\n * @private\n */\nLine._linear = function (data) {\n // linear\n var d = [];\n for (var i = 0; i < data.length; i++) {\n d.push([ data[i].screen_x , data[i].screen_y ]);\n }\n return d;\n};\n\nmodule.exports = Line;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/graph2d_types/line.js","var util = require('../../util');\nvar DOMutil = require('../../DOMutil');\nvar Component = require('./Component');\n\n/**\n * Legend for Graph2d\n */\nfunction Legend(body, options, side, linegraphOptions) {\n this.body = body;\n this.defaultOptions = {\n enabled: false,\n icons: true,\n iconSize: 20,\n iconSpacing: 6,\n left: {\n visible: true,\n position: 'top-left' // top/bottom - left,center,right\n },\n right: {\n visible: true,\n position: 'top-right' // top/bottom - left,center,right\n }\n }\n\n this.side = side;\n this.options = util.extend({},this.defaultOptions);\n this.linegraphOptions = linegraphOptions;\n\n this.svgElements = {};\n this.dom = {};\n this.groups = {};\n this.amountOfGroups = 0;\n this._create();\n this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups};\n\n this.setOptions(options);\n}\n\nLegend.prototype = new Component();\n\nLegend.prototype.clear = function() {\n this.groups = {};\n this.amountOfGroups = 0;\n};\n\nLegend.prototype.addGroup = function(label, graphOptions) {\n\n // Include a group only if the group option 'excludeFromLegend: false' is not set.\n if (graphOptions.options.excludeFromLegend != true) {\n if (!this.groups.hasOwnProperty(label)) {\n this.groups[label] = graphOptions;\n }\n this.amountOfGroups += 1;\n }\n};\n\nLegend.prototype.updateGroup = function(label, graphOptions) {\n this.groups[label] = graphOptions;\n};\n\nLegend.prototype.removeGroup = function(label) {\n if (this.groups.hasOwnProperty(label)) {\n delete this.groups[label];\n this.amountOfGroups -= 1;\n }\n};\n\nLegend.prototype._create = function() {\n this.dom.frame = document.createElement('div');\n this.dom.frame.className = 'vis-legend';\n this.dom.frame.style.position = \"absolute\";\n this.dom.frame.style.top = \"10px\";\n this.dom.frame.style.display = \"block\";\n\n this.dom.textArea = document.createElement('div');\n this.dom.textArea.className = 'vis-legend-text';\n this.dom.textArea.style.position = \"relative\";\n this.dom.textArea.style.top = \"0px\";\n\n this.svg = document.createElementNS('http://www.w3.org/2000/svg',\"svg\");\n this.svg.style.position = 'absolute';\n this.svg.style.top = 0 +'px';\n this.svg.style.width = this.options.iconSize + 5 + 'px';\n this.svg.style.height = '100%';\n\n this.dom.frame.appendChild(this.svg);\n this.dom.frame.appendChild(this.dom.textArea);\n};\n\n/**\n * Hide the component from the DOM\n */\nLegend.prototype.hide = function() {\n // remove the frame containing the items\n if (this.dom.frame.parentNode) {\n this.dom.frame.parentNode.removeChild(this.dom.frame);\n }\n};\n\n/**\n * Show the component in the DOM (when not already visible).\n * @return {Boolean} changed\n */\nLegend.prototype.show = function() {\n // show frame containing the items\n if (!this.dom.frame.parentNode) {\n this.body.dom.center.appendChild(this.dom.frame);\n }\n};\n\nLegend.prototype.setOptions = function(options) {\n var fields = ['enabled','orientation','icons','left','right'];\n util.selectiveDeepExtend(fields, this.options, options);\n};\n\nLegend.prototype.redraw = function() {\n var activeGroups = 0;\n var groupArray = Object.keys(this.groups);\n groupArray.sort(function (a,b) {\n return (a < b ? -1 : 1);\n })\n\n for (var i = 0; i < groupArray.length; i++) {\n var groupId = groupArray[i];\n if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) {\n activeGroups++;\n }\n }\n\n if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) {\n this.hide();\n }\n else {\n this.show();\n if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'bottom-left') {\n this.dom.frame.style.left = '4px';\n this.dom.frame.style.textAlign = \"left\";\n this.dom.textArea.style.textAlign = \"left\";\n this.dom.textArea.style.left = (this.options.iconSize + 15) + 'px';\n this.dom.textArea.style.right = '';\n this.svg.style.left = 0 +'px';\n this.svg.style.right = '';\n }\n else {\n this.dom.frame.style.right = '4px';\n this.dom.frame.style.textAlign = \"right\";\n this.dom.textArea.style.textAlign = \"right\";\n this.dom.textArea.style.right = (this.options.iconSize + 15) + 'px';\n this.dom.textArea.style.left = '';\n this.svg.style.right = 0 +'px';\n this.svg.style.left = '';\n }\n\n if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'top-right') {\n this.dom.frame.style.top = 4 - Number(this.body.dom.center.style.top.replace(\"px\",\"\")) + 'px';\n this.dom.frame.style.bottom = '';\n }\n else {\n var scrollableHeight = this.body.domProps.center.height - this.body.domProps.centerContainer.height;\n this.dom.frame.style.bottom = 4 + scrollableHeight + Number(this.body.dom.center.style.top.replace(\"px\",\"\")) + 'px';\n this.dom.frame.style.top = '';\n }\n\n if (this.options.icons == false) {\n this.dom.frame.style.width = this.dom.textArea.offsetWidth + 10 + 'px';\n this.dom.textArea.style.right = '';\n this.dom.textArea.style.left = '';\n this.svg.style.width = '0px';\n }\n else {\n this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px'\n this.drawLegendIcons();\n }\n\n var content = '';\n for (var i = 0; i < groupArray.length; i++) {\n var groupId = groupArray[i];\n if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) {\n content += this.groups[groupId].content + '
';\n }\n }\n this.dom.textArea.innerHTML = content;\n this.dom.textArea.style.lineHeight = ((0.75 * this.options.iconSize) + this.options.iconSpacing) + 'px';\n }\n};\n\nLegend.prototype.drawLegendIcons = function() {\n if (this.dom.frame.parentNode) {\n var groupArray = Object.keys(this.groups);\n groupArray.sort(function (a,b) {\n return (a < b ? -1 : 1);\n });\n\n // this resets the elements so the order is maintained\n DOMutil.resetElements(this.svgElements);\n\n var padding = window.getComputedStyle(this.dom.frame).paddingTop;\n var iconOffset = Number(padding.replace('px',''));\n var x = iconOffset;\n var iconWidth = this.options.iconSize;\n var iconHeight = 0.75 * this.options.iconSize;\n var y = iconOffset + 0.5 * iconHeight + 3;\n\n this.svg.style.width = iconWidth + 5 + iconOffset + 'px';\n\n for (var i = 0; i < groupArray.length; i++) {\n var groupId = groupArray[i];\n if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) {\n this.groups[groupId].getLegend(iconWidth, iconHeight, this.framework, x, y);\n y += iconHeight + this.options.iconSpacing;\n }\n }\n }\n};\n\nmodule.exports = Legend;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/component/Legend.js","/**\n * This object contains all possible options. It will check if the types are correct, if required if the option is one\n * of the allowed values.\n *\n * __any__ means that the name of the property does not matter.\n * __type__ is a required field for all objects and contains the allowed types of all objects\n */\nlet string = 'string';\nlet bool = 'boolean';\nlet number = 'number';\nlet array = 'array';\nlet date = 'date';\nlet object = 'object'; // should only be in a __type__ property\nlet dom = 'dom';\nlet moment = 'moment';\nlet any = 'any';\n\n\nlet allOptions = {\n configure: {\n enabled: {'boolean': bool},\n filter: {'boolean': bool,'function': 'function'},\n container: {dom},\n __type__: {object,'boolean': bool,'function': 'function'}\n },\n\n //globals :\n yAxisOrientation: {string:['left','right']},\n defaultGroup: {string},\n sort: {'boolean': bool},\n sampling: {'boolean': bool},\n stack:{'boolean': bool},\n graphHeight: {string, number},\n shaded: {\n enabled: {'boolean': bool},\n orientation: {string:['bottom','top','zero','group']}, // top, bottom, zero, group\n groupId: {object},\n __type__: {'boolean': bool,object}\n },\n style: {string:['line','bar','points']}, // line, bar\n barChart: {\n width: {number},\n minWidth: {number},\n sideBySide: {'boolean': bool},\n align: {string:['left','center','right']},\n __type__: {object}\n },\n interpolation: {\n enabled: {'boolean': bool},\n parametrization: {string:['centripetal', 'chordal','uniform']}, // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5)\n alpha: {number},\n __type__: {object,'boolean': bool}\n },\n drawPoints: {\n enabled: {'boolean': bool},\n onRender: { 'function': 'function' },\n size: {number},\n style: {string:['square','circle']}, // square, circle\n __type__: {object,'boolean': bool,'function': 'function'}\n },\n dataAxis: {\n showMinorLabels: {'boolean': bool},\n showMajorLabels: {'boolean': bool},\n icons: {'boolean': bool},\n width: {string, number},\n visible: {'boolean': bool},\n alignZeros: {'boolean': bool},\n left:{\n range: {min:{number},max:{number},__type__: {object}},\n format: {'function': 'function'},\n title: {text:{string,number},style:{string},__type__: {object}},\n __type__: {object}\n },\n right:{\n range: {min:{number},max:{number},__type__: {object}},\n format: {'function': 'function'},\n title: {text:{string,number},style:{string},__type__: {object}},\n __type__: {object}\n },\n __type__: {object}\n },\n legend: {\n enabled: {'boolean': bool},\n icons: {'boolean': bool},\n left: {\n visible: {'boolean': bool},\n position: {string:['top-right','bottom-right','top-left','bottom-left']},\n __type__: {object}\n },\n right: {\n visible: {'boolean': bool},\n position: {string:['top-right','bottom-right','top-left','bottom-left']},\n __type__: {object}\n },\n __type__: {object,'boolean': bool}\n },\n groups: {\n visibility: {any},\n __type__: {object}\n },\n\n autoResize: {'boolean': bool},\n throttleRedraw: {number}, // TODO: DEPRICATED see https://github.com/almende/vis/issues/2511\n clickToUse: {'boolean': bool},\n end: {number, date, string, moment},\n format: {\n minorLabels: {\n millisecond: {string,'undefined': 'undefined'},\n second: {string,'undefined': 'undefined'},\n minute: {string,'undefined': 'undefined'},\n hour: {string,'undefined': 'undefined'},\n weekday: {string,'undefined': 'undefined'},\n day: {string,'undefined': 'undefined'},\n month: {string,'undefined': 'undefined'},\n year: {string,'undefined': 'undefined'},\n __type__: {object}\n },\n majorLabels: {\n millisecond: {string,'undefined': 'undefined'},\n second: {string,'undefined': 'undefined'},\n minute: {string,'undefined': 'undefined'},\n hour: {string,'undefined': 'undefined'},\n weekday: {string,'undefined': 'undefined'},\n day: {string,'undefined': 'undefined'},\n month: {string,'undefined': 'undefined'},\n year: {string,'undefined': 'undefined'},\n __type__: {object}\n },\n __type__: {object}\n },\n moment: {'function': 'function'},\n height: {string, number},\n hiddenDates: {\n start: {date, number, string, moment},\n end: {date, number, string, moment},\n repeat: {string},\n __type__: {object, array}\n },\n locale:{string},\n locales:{\n __any__: {any},\n __type__: {object}\n },\n max: {date, number, string, moment},\n maxHeight: {number, string},\n maxMinorChars: {number},\n min: {date, number, string, moment},\n minHeight: {number, string},\n moveable: {'boolean': bool},\n multiselect: {'boolean': bool},\n orientation: {string},\n showCurrentTime: {'boolean': bool},\n showMajorLabels: {'boolean': bool},\n showMinorLabels: {'boolean': bool},\n start: {date, number, string, moment},\n timeAxis: {\n scale: {string,'undefined': 'undefined'},\n step: {number,'undefined': 'undefined'},\n __type__: {object}\n },\n width: {string, number},\n zoomable: {'boolean': bool},\n zoomKey: {string: ['ctrlKey', 'altKey', 'metaKey', '']},\n zoomMax: {number},\n zoomMin: {number},\n zIndex: {number},\n __type__: {object}\n};\n\nlet configureOptions = {\n global: {\n //yAxisOrientation: ['left','right'], // TDOO: enable as soon as Grahp2d doesn't crash when changing this on the fly\n sort: true,\n sampling: true,\n stack:false,\n shaded: {\n enabled: false,\n orientation: ['zero','top','bottom','group'] // zero, top, bottom\n },\n style: ['line','bar','points'], // line, bar\n barChart: {\n width: [50,5,100,5],\n minWidth: [50,5,100,5],\n sideBySide: false,\n align: ['left','center','right'] // left, center, right\n },\n interpolation: {\n enabled: true,\n parametrization: ['centripetal','chordal','uniform'] // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5)\n },\n drawPoints: {\n enabled: true,\n size: [6,2,30,1],\n style: ['square', 'circle'] // square, circle\n },\n dataAxis: {\n showMinorLabels: true,\n showMajorLabels: true,\n icons: false,\n width: [40,0,200,1],\n visible: true,\n alignZeros: true,\n left:{\n //range: {min:'undefined': 'undefined'ined,max:'undefined': 'undefined'ined},\n //format: function (value) {return value;},\n title: {text:'',style:''}\n },\n right:{\n //range: {min:'undefined': 'undefined'ined,max:'undefined': 'undefined'ined},\n //format: function (value) {return value;},\n title: {text:'',style:''}\n }\n },\n legend: {\n enabled: false,\n icons: true,\n left: {\n visible: true,\n position: ['top-right','bottom-right','top-left','bottom-left'] // top/bottom - left,right\n },\n right: {\n visible: true,\n position: ['top-right','bottom-right','top-left','bottom-left'] // top/bottom - left,right\n }\n },\n\n autoResize: true,\n clickToUse: false,\n end: '',\n format: {\n minorLabels: {\n millisecond:'SSS',\n second: 's',\n minute: 'HH:mm',\n hour: 'HH:mm',\n weekday: 'ddd D',\n day: 'D',\n month: 'MMM',\n year: 'YYYY'\n },\n majorLabels: {\n millisecond:'HH:mm:ss',\n second: 'D MMMM HH:mm',\n minute: 'ddd D MMMM',\n hour: 'ddd D MMMM',\n weekday: 'MMMM YYYY',\n day: 'MMMM YYYY',\n month: 'YYYY',\n year: ''\n }\n },\n\n height: '',\n locale: '',\n max: '',\n maxHeight: '',\n maxMinorChars: [7, 0, 20, 1],\n min: '',\n minHeight: '',\n moveable:true,\n orientation: ['both', 'bottom', 'top'],\n showCurrentTime: false,\n showMajorLabels: true,\n showMinorLabels: true,\n start: '',\n width: '100%',\n zoomable: true,\n zoomKey: ['ctrlKey', 'altKey', 'metaKey', ''],\n zoomMax: [315360000000000, 10, 315360000000000, 1],\n zoomMin: [10, 10, 315360000000000, 1],\n zIndex: 0\n }\n};\n\nexport {allOptions, configureOptions};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/timeline/optionsGraph2d.js","// utils\nexports.util = require('./lib/util');\nexports.DOMutil = require('./lib/DOMutil');\n\n// data\nexports.DataSet = require('./lib/DataSet');\nexports.DataView = require('./lib/DataView');\nexports.Queue = require('./lib/Queue');\n\n// Network\nexports.Network = require('./lib/network/Network');\nexports.network = {\n Images: require('./lib/network/Images'),\n dotparser: require('./lib/network/dotparser'),\n gephiParser: require('./lib/network/gephiParser'),\n allOptions: require('./lib/network/options')\n};\nexports.network.convertDot = function (input) {return exports.network.dotparser.DOTToGraph(input)};\nexports.network.convertGephi = function (input,options) {return exports.network.gephiParser.parseGephi(input,options)};\n\n// bundled external libraries\nexports.moment = require('./lib/module/moment');\nexports.Hammer = require('./lib/module/hammer');\nexports.keycharm = require('keycharm');\n\n\n// WEBPACK FOOTER //\n// ./index-network.js","// Load custom shapes into CanvasRenderingContext2D\nrequire('./shapes');\n\nlet Emitter = require('emitter-component');\nlet util = require('../util');\nlet DataSet = require('../DataSet');\nlet DataView = require('../DataView');\nlet dotparser = require('./dotparser');\nlet gephiParser = require('./gephiParser');\nlet Activator = require('../shared/Activator');\nlet locales = require('./locales');\n\nimport Images from './Images';\nimport Groups from './modules/Groups';\nimport NodesHandler from './modules/NodesHandler';\nimport EdgesHandler from './modules/EdgesHandler';\nimport PhysicsEngine from './modules/PhysicsEngine';\nimport ClusterEngine from './modules/Clustering';\nimport CanvasRenderer from './modules/CanvasRenderer';\nimport Canvas from './modules/Canvas';\nimport View from './modules/View';\nimport InteractionHandler from './modules/InteractionHandler';\nimport SelectionHandler from \"./modules/SelectionHandler\";\nimport LayoutEngine from \"./modules/LayoutEngine\";\nimport ManipulationSystem from \"./modules/ManipulationSystem\";\nimport Configurator from \"./../shared/Configurator\";\nimport Validator from \"./../shared/Validator\";\nimport {printStyle} from \"./../shared/Validator\";\nimport {allOptions, configureOptions} from './options.js';\nimport KamadaKawai from \"./modules/KamadaKawai.js\"\n\n\n/**\n * @constructor Network\n * Create a network visualization, displaying nodes and edges.\n *\n * @param {Element} container The DOM element in which the Network will\n * be created. Normally a div element.\n * @param {Object} data An object containing parameters\n * {Array} nodes\n * {Array} edges\n * @param {Object} options Options\n */\nfunction Network(container, data, options) {\n if (!(this instanceof Network)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n // set constant values\n this.options = {};\n this.defaultOptions = {\n locale: 'en',\n locales: locales,\n clickToUse: false\n };\n util.extend(this.options, this.defaultOptions);\n\n // containers for nodes and edges\n this.body = {\n container: container,\n nodes: {},\n nodeIndices: [],\n edges: {},\n edgeIndices: [],\n emitter: {\n on: this.on.bind(this),\n off: this.off.bind(this),\n emit: this.emit.bind(this),\n once: this.once.bind(this)\n },\n eventListeners: {\n onTap: function() {},\n onTouch: function() {},\n onDoubleTap: function() {},\n onHold: function() {},\n onDragStart: function() {},\n onDrag: function() {},\n onDragEnd: function() {},\n onMouseWheel: function() {},\n onPinch: function() {},\n onMouseMove: function() {},\n onRelease: function() {},\n onContext: function() {}\n },\n data: {\n nodes: null, // A DataSet or DataView\n edges: null // A DataSet or DataView\n },\n functions: {\n createNode: function() {},\n createEdge: function() {},\n getPointer: function() {}\n },\n modules: {},\n view: {\n scale: 1,\n translation: {x: 0, y: 0}\n }\n };\n\n\n\n // bind the event listeners\n this.bindEventListeners();\n\n // setting up all modules\n this.images = new Images(() => this.body.emitter.emit(\"_requestRedraw\")); // object with images\n this.groups = new Groups(); // object with groups\n this.canvas = new Canvas(this.body); // DOM handler\n this.selectionHandler = new SelectionHandler(this.body, this.canvas); // Selection handler\n this.interactionHandler = new InteractionHandler(this.body, this.canvas, this.selectionHandler); // Interaction handler handles all the hammer bindings (that are bound by canvas), key\n this.view = new View(this.body, this.canvas); // camera handler, does animations and zooms\n this.renderer = new CanvasRenderer(this.body, this.canvas); // renderer, starts renderloop, has events that modules can hook into\n this.physics = new PhysicsEngine(this.body); // physics engine, does all the simulations\n this.layoutEngine = new LayoutEngine(this.body); // layout engine for inital layout and hierarchical layout\n this.clustering = new ClusterEngine(this.body); // clustering api\n this.manipulation = new ManipulationSystem(this.body, this.canvas, this.selectionHandler); // data manipulation system\n\n this.nodesHandler = new NodesHandler(this.body, this.images, this.groups, this.layoutEngine); // Handle adding, deleting and updating of nodes as well as global options\n this.edgesHandler = new EdgesHandler(this.body, this.images, this.groups); // Handle adding, deleting and updating of edges as well as global options\n\n this.body.modules[\"kamadaKawai\"] = new KamadaKawai(this.body,150,0.05); // Layouting algorithm.\n this.body.modules[\"clustering\"] = this.clustering;\n\n // create the DOM elements\n this.canvas._create();\n\n // apply options\n this.setOptions(options);\n\n // load data (the disable start variable will be the same as the enabled clustering)\n this.setData(data);\n\n}\n\n// Extend Network with an Emitter mixin\nEmitter(Network.prototype);\n\n\n/**\n * Set options\n * @param {Object} options\n */\nNetwork.prototype.setOptions = function (options) {\n if (options !== undefined) {\n let errorFound = Validator.validate(options, allOptions);\n if (errorFound === true) {\n console.log('%cErrors have been found in the supplied options object.', printStyle);\n }\n\n // copy the global fields over\n let fields = ['locale','locales','clickToUse'];\n util.selectiveDeepExtend(fields,this.options, options);\n\n // the hierarchical system can adapt the edges and the physics to it's own options because not all combinations work with the hierarichical system.\n options = this.layoutEngine.setOptions(options.layout, options);\n\n this.canvas.setOptions(options); // options for canvas are in globals\n\n // pass the options to the modules\n this.groups.setOptions(options.groups);\n this.nodesHandler.setOptions(options.nodes);\n this.edgesHandler.setOptions(options.edges);\n this.physics.setOptions(options.physics);\n this.manipulation.setOptions(options.manipulation, options, this.options); // manipulation uses the locales in the globals\n\n this.interactionHandler.setOptions(options.interaction);\n this.renderer.setOptions(options.interaction); // options for rendering are in interaction\n this.selectionHandler.setOptions(options.interaction); // options for selection are in interaction\n\n // reload the settings of the nodes to apply changes in groups that are not referenced by pointer.\n if (options.groups !== undefined) {\n this.body.emitter.emit(\"refreshNodes\");\n }\n // these two do not have options at the moment, here for completeness\n //this.view.setOptions(options.view);\n //this.clustering.setOptions(options.clustering);\n\n if ('configure' in options) {\n if (!this.configurator) {\n this.configurator = new Configurator(this, this.body.container, configureOptions, this.canvas.pixelRatio);\n }\n\n this.configurator.setOptions(options.configure);\n }\n\n // if the configuration system is enabled, copy all options and put them into the config system\n if (this.configurator && this.configurator.options.enabled === true) {\n let networkOptions = {nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};\n util.deepExtend(networkOptions.nodes, this.nodesHandler.options);\n util.deepExtend(networkOptions.edges, this.edgesHandler.options);\n util.deepExtend(networkOptions.layout, this.layoutEngine.options);\n // load the selectionHandler and render default options in to the interaction group\n util.deepExtend(networkOptions.interaction, this.selectionHandler.options);\n util.deepExtend(networkOptions.interaction, this.renderer.options);\n\n util.deepExtend(networkOptions.interaction, this.interactionHandler.options);\n util.deepExtend(networkOptions.manipulation, this.manipulation.options);\n util.deepExtend(networkOptions.physics, this.physics.options);\n\n // load globals into the global object\n util.deepExtend(networkOptions.global, this.canvas.options);\n util.deepExtend(networkOptions.global, this.options);\n\n this.configurator.setModuleOptions(networkOptions);\n }\n\n // handle network global options\n if (options.clickToUse !== undefined) {\n if (options.clickToUse === true) {\n if (this.activator === undefined) {\n this.activator = new Activator(this.canvas.frame);\n this.activator.on('change', () => {this.body.emitter.emit(\"activate\")});\n }\n }\n else {\n if (this.activator !== undefined) {\n this.activator.destroy();\n delete this.activator;\n }\n this.body.emitter.emit(\"activate\");\n }\n }\n else {\n this.body.emitter.emit(\"activate\");\n }\n\n this.canvas.setSize();\n // start the physics simulation. Can be safely called multiple times.\n this.body.emitter.emit(\"startSimulation\");\n }\n};\n\n\n/**\n * Update the this.body.nodeIndices with the most recent node index list\n * @private\n */\nNetwork.prototype._updateVisibleIndices = function () {\n let nodes = this.body.nodes;\n let edges = this.body.edges;\n this.body.nodeIndices = [];\n this.body.edgeIndices = [];\n\n for (let nodeId in nodes) {\n if (nodes.hasOwnProperty(nodeId)) {\n if (nodes[nodeId].options.hidden === false) {\n this.body.nodeIndices.push(nodes[nodeId].id);\n }\n }\n }\n\n for (let edgeId in edges) {\n if (edges.hasOwnProperty(edgeId)) {\n if (edges[edgeId].options.hidden === false) {\n this.body.edgeIndices.push(edges[edgeId].id);\n }\n }\n }\n};\n\n\n/**\n * Bind all events\n */\nNetwork.prototype.bindEventListeners = function () {\n // this event will trigger a rebuilding of the cache everything. Used when nodes or edges have been added or removed.\n this.body.emitter.on(\"_dataChanged\", () => {\n // update shortcut lists\n this._updateVisibleIndices();\n this.body.emitter.emit(\"_requestRedraw\");\n // call the dataUpdated event because the only difference between the two is the updating of the indices\n this.body.emitter.emit(\"_dataUpdated\");\n });\n\n // this is called when options of EXISTING nodes or edges have changed.\n this.body.emitter.on(\"_dataUpdated\", () => {\n // update values\n this._updateValueRange(this.body.nodes);\n this._updateValueRange(this.body.edges);\n // start simulation (can be called safely, even if already running)\n this.body.emitter.emit(\"startSimulation\");\n this.body.emitter.emit(\"_requestRedraw\");\n });\n};\n\n\n/**\n * Set nodes and edges, and optionally options as well.\n *\n * @param {Object} data Object containing parameters:\n * {Array | DataSet | DataView} [nodes] Array with nodes\n * {Array | DataSet | DataView} [edges] Array with edges\n * {String} [dot] String containing data in DOT format\n * {String} [gephi] String containing data in gephi JSON format\n * {Options} [options] Object with options\n */\nNetwork.prototype.setData = function (data) {\n // reset the physics engine.\n this.body.emitter.emit(\"resetPhysics\");\n this.body.emitter.emit(\"_resetData\");\n\n // unselect all to ensure no selections from old data are carried over.\n this.selectionHandler.unselectAll();\n\n if (data && data.dot && (data.nodes || data.edges)) {\n throw new SyntaxError('Data must contain either parameter \"dot\" or ' +\n ' parameter pair \"nodes\" and \"edges\", but not both.');\n }\n\n // set options\n this.setOptions(data && data.options);\n // set all data\n if (data && data.dot) {\n console.log('The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);');\n // parse DOT file\n var dotData = dotparser.DOTToGraph(data.dot);\n this.setData(dotData);\n return;\n }\n else if (data && data.gephi) {\n // parse DOT file\n console.log('The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);');\n var gephiData = gephiParser.parseGephi(data.gephi);\n this.setData(gephiData);\n return;\n }\n else {\n this.nodesHandler.setData(data && data.nodes, true);\n this.edgesHandler.setData(data && data.edges, true);\n }\n\n // emit change in data\n this.body.emitter.emit(\"_dataChanged\");\n\n // emit data loaded\n this.body.emitter.emit(\"_dataLoaded\");\n\n // find a stable position or start animating to a stable position\n this.body.emitter.emit(\"initPhysics\");\n};\n\n\n/**\n * Cleans up all bindings of the network, removing it fully from the memory IF the variable is set to null after calling this function.\n * var network = new vis.Network(..);\n * network.destroy();\n * network = null;\n */\nNetwork.prototype.destroy = function () {\n this.body.emitter.emit(\"destroy\");\n // clear events\n this.body.emitter.off();\n this.off();\n\n // delete modules\n delete this.groups;\n delete this.canvas;\n delete this.selectionHandler;\n delete this.interactionHandler;\n delete this.view;\n delete this.renderer;\n delete this.physics;\n delete this.layoutEngine;\n delete this.clustering;\n delete this.manipulation;\n delete this.nodesHandler;\n delete this.edgesHandler;\n delete this.configurator;\n delete this.images;\n\n for (var nodeId in this.body.nodes) {\n delete this.body.nodes[nodeId];\n }\n for (var edgeId in this.body.edges) {\n delete this.body.edges[edgeId];\n }\n\n // remove the container and everything inside it recursively\n util.recursiveDOMDelete(this.body.container);\n};\n\n\n/**\n * Update the values of all object in the given array according to the current\n * value range of the objects in the array.\n * @param {Object} obj An object containing a set of Edges or Nodes\n * The objects must have a method getValue() and\n * setValueRange(min, max).\n * @private\n */\nNetwork.prototype._updateValueRange = function (obj) {\n var id;\n\n // determine the range of the objects\n var valueMin = undefined;\n var valueMax = undefined;\n var valueTotal = 0;\n for (id in obj) {\n if (obj.hasOwnProperty(id)) {\n var value = obj[id].getValue();\n if (value !== undefined) {\n valueMin = (valueMin === undefined) ? value : Math.min(value, valueMin);\n valueMax = (valueMax === undefined) ? value : Math.max(value, valueMax);\n valueTotal += value;\n }\n }\n }\n\n // adjust the range of all objects\n if (valueMin !== undefined && valueMax !== undefined) {\n for (id in obj) {\n if (obj.hasOwnProperty(id)) {\n obj[id].setValueRange(valueMin, valueMax, valueTotal);\n }\n }\n }\n};\n\n\n/**\n * Returns true when the Network is active.\n * @returns {boolean}\n */\nNetwork.prototype.isActive = function () {\n return !this.activator || this.activator.active;\n};\n\n\nNetwork.prototype.setSize = function() {return this.canvas.setSize.apply(this.canvas,arguments);};\nNetwork.prototype.canvasToDOM = function() {return this.canvas.canvasToDOM.apply(this.canvas,arguments);};\nNetwork.prototype.DOMtoCanvas = function() {return this.canvas.DOMtoCanvas.apply(this.canvas,arguments);};\nNetwork.prototype.findNode = function() {return this.clustering.findNode.apply(this.clustering,arguments);};\nNetwork.prototype.isCluster = function() {return this.clustering.isCluster.apply(this.clustering,arguments);};\nNetwork.prototype.openCluster = function() {return this.clustering.openCluster.apply(this.clustering,arguments);};\nNetwork.prototype.cluster = function() {return this.clustering.cluster.apply(this.clustering,arguments);};\nNetwork.prototype.getNodesInCluster = function() {return this.clustering.getNodesInCluster.apply(this.clustering,arguments);};\nNetwork.prototype.clusterByConnection = function() {return this.clustering.clusterByConnection.apply(this.clustering,arguments);};\nNetwork.prototype.clusterByHubsize = function() {return this.clustering.clusterByHubsize.apply(this.clustering,arguments);};\nNetwork.prototype.clusterOutliers = function() {return this.clustering.clusterOutliers.apply(this.clustering,arguments);};\nNetwork.prototype.getSeed = function() {return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments);};\nNetwork.prototype.enableEditMode = function() {return this.manipulation.enableEditMode.apply(this.manipulation,arguments);};\nNetwork.prototype.disableEditMode = function() {return this.manipulation.disableEditMode.apply(this.manipulation,arguments);};\nNetwork.prototype.addNodeMode = function() {return this.manipulation.addNodeMode.apply(this.manipulation,arguments);};\nNetwork.prototype.editNode = function() {return this.manipulation.editNode.apply(this.manipulation,arguments);};\nNetwork.prototype.editNodeMode = function() {console.log(\"Deprecated: Please use editNode instead of editNodeMode.\"); return this.manipulation.editNode.apply(this.manipulation,arguments);};\nNetwork.prototype.addEdgeMode = function() {return this.manipulation.addEdgeMode.apply(this.manipulation,arguments);};\nNetwork.prototype.editEdgeMode = function() {return this.manipulation.editEdgeMode.apply(this.manipulation,arguments);};\nNetwork.prototype.deleteSelected = function() {return this.manipulation.deleteSelected.apply(this.manipulation,arguments);};\nNetwork.prototype.getPositions = function() {return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments);};\nNetwork.prototype.storePositions = function() {return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments);};\nNetwork.prototype.moveNode = function() {return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments);};\nNetwork.prototype.getBoundingBox = function() {return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments);};\nNetwork.prototype.getConnectedNodes = function(objectId) {\n if (this.body.nodes[objectId] !== undefined) {\n return this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments);\n }\n else {\n return this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments);\n }\n};\nNetwork.prototype.getConnectedEdges = function() {return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments);};\nNetwork.prototype.startSimulation = function() {return this.physics.startSimulation.apply(this.physics,arguments);};\nNetwork.prototype.stopSimulation = function() {return this.physics.stopSimulation.apply(this.physics,arguments);};\nNetwork.prototype.stabilize = function() {return this.physics.stabilize.apply(this.physics,arguments);};\nNetwork.prototype.getSelection = function() {return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments);};\nNetwork.prototype.setSelection = function() {return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments);};\nNetwork.prototype.getSelectedNodes = function() {return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments);};\nNetwork.prototype.getSelectedEdges = function() {return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments);};\nNetwork.prototype.getNodeAt = function() {\n var node = this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);\n if (node !== undefined && node.id !== undefined) {\n return node.id;\n }\n return node;\n};\nNetwork.prototype.getEdgeAt = function() {\n var edge = this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);\n if (edge !== undefined && edge.id !== undefined) {\n return edge.id;\n }\n return edge;\n };\nNetwork.prototype.selectNodes = function() {return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments);};\nNetwork.prototype.selectEdges = function() {return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments);};\nNetwork.prototype.unselectAll = function() {\n this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments);\n this.redraw();\n};\nNetwork.prototype.redraw = function() {return this.renderer.redraw.apply(this.renderer,arguments);};\nNetwork.prototype.getScale = function() {return this.view.getScale.apply(this.view,arguments);};\nNetwork.prototype.getViewPosition = function() {return this.view.getViewPosition.apply(this.view,arguments);};\nNetwork.prototype.fit = function() {return this.view.fit.apply(this.view,arguments);};\nNetwork.prototype.moveTo = function() {return this.view.moveTo.apply(this.view,arguments);};\nNetwork.prototype.focus = function() {return this.view.focus.apply(this.view,arguments);};\nNetwork.prototype.releaseNode = function() {return this.view.releaseNode.apply(this.view,arguments);};\nNetwork.prototype.getOptionsFromConfigurator = function() {\n let options = {};\n if (this.configurator) {\n options = this.configurator.getOptions.apply(this.configurator);\n }\n return options;\n};\n\n\n\nmodule.exports = Network;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/Network.js","/**\n * @class Images\n * This class loads images and keeps them stored.\n */\nclass Images{\n constructor(callback){\n this.images = {};\n this.imageBroken = {};\n this.callback = callback;\n }\n \n /**\n * @param {string} url The Url to cache the image as \n * @return {Image} imageToLoadBrokenUrlOn The image object\n */ \n _addImageToCache (url, imageToCache) {\n // IE11 fix -- thanks dponch!\n if (imageToCache.width === 0) {\n document.body.appendChild(imageToCache);\n imageToCache.width = imageToCache.offsetWidth;\n imageToCache.height = imageToCache.offsetHeight;\n document.body.removeChild(imageToCache);\n }\n \n this.images[url] = imageToCache;\n } \n \n /**\n * @param {string} url The original Url that failed to load, if the broken image is successfully loaded it will be added to the cache using this Url as the key so that subsequent requests for this Url will return the broken image\n * @param {string} brokenUrl Url the broken image to try and load\n * @return {Image} imageToLoadBrokenUrlOn The image object\n */ \n _tryloadBrokenUrl (url, brokenUrl, imageToLoadBrokenUrlOn) {\n //If any of the parameters aren't specified then exit the function because nothing constructive can be done\n if (url === undefined || brokenUrl === undefined || imageToLoadBrokenUrlOn === undefined) return;\n \n //Clear the old subscription to the error event and put a new in place that only handle errors in loading the brokenImageUrl\n imageToLoadBrokenUrlOn.onerror = () => {\n console.error(\"Could not load brokenImage:\", brokenUrl);\n //Add an empty image to the cache so that when subsequent load calls are made for the url we don't try load the image and broken image again\n this._addImageToCache(url, new Image());\n };\n \n //Set the source of the image to the brokenUrl, this is actually what kicks off the loading of the broken image\n imageToLoadBrokenUrlOn.src = brokenUrl;\n }\n \n /**\n * @return {Image} imageToRedrawWith The images that will be passed to the callback when it is invoked\n */ \n _redrawWithImage (imageToRedrawWith) {\n if (this.callback) {\n this.callback(imageToRedrawWith);\n }\n }\n \n /**\n * @param {string} url Url of the image\n * @param {string} brokenUrl Url of an image to use if the url image is not found\n * @return {Image} img The image object\n */ \n load (url, brokenUrl, id) {\n //Try and get the image from the cache, if successful then return the cached image \n var cachedImage = this.images[url]; \n if (cachedImage) return cachedImage;\n \n //Create a new image\n var img = new Image();\n \n //Subscribe to the event that is raised if the image loads successfully \n img.onload = () => {\n //Add the image to the cache and then request a redraw\n this._addImageToCache(url, img);\n this._redrawWithImage(img);\n };\n \n //Subscribe to the event that is raised if the image fails to load\n img.onerror = () => {\n console.error(\"Could not load image:\", url);\n //Try and load the image specified by the brokenUrl using\n this._tryloadBrokenUrl(url, brokenUrl, img);\n }\n \n //Set the source of the image to the url, this is actuall what kicks off the loading of the image\n img.src = url;\n \n //Return the new image\n return img;\n } \n}\n\nexport default Images;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/Images.js","let util = require('../../util');\n\n/**\n * @class Groups\n * This class can store groups and options specific for groups.\n */\nclass Groups {\n constructor() {\n this.clear();\n this.defaultIndex = 0;\n this.groupsArray = [];\n this.groupIndex = 0;\n\n this.defaultGroups = [\n {border: \"#2B7CE9\", background: \"#97C2FC\", highlight: {border: \"#2B7CE9\", background: \"#D2E5FF\"}, hover: {border: \"#2B7CE9\", background: \"#D2E5FF\"}}, // 0: blue\n {border: \"#FFA500\", background: \"#FFFF00\", highlight: {border: \"#FFA500\", background: \"#FFFFA3\"}, hover: {border: \"#FFA500\", background: \"#FFFFA3\"}}, // 1: yellow\n {border: \"#FA0A10\", background: \"#FB7E81\", highlight: {border: \"#FA0A10\", background: \"#FFAFB1\"}, hover: {border: \"#FA0A10\", background: \"#FFAFB1\"}}, // 2: red\n {border: \"#41A906\", background: \"#7BE141\", highlight: {border: \"#41A906\", background: \"#A1EC76\"}, hover: {border: \"#41A906\", background: \"#A1EC76\"}}, // 3: green\n {border: \"#E129F0\", background: \"#EB7DF4\", highlight: {border: \"#E129F0\", background: \"#F0B3F5\"}, hover: {border: \"#E129F0\", background: \"#F0B3F5\"}}, // 4: magenta\n {border: \"#7C29F0\", background: \"#AD85E4\", highlight: {border: \"#7C29F0\", background: \"#D3BDF0\"}, hover: {border: \"#7C29F0\", background: \"#D3BDF0\"}}, // 5: purple\n {border: \"#C37F00\", background: \"#FFA807\", highlight: {border: \"#C37F00\", background: \"#FFCA66\"}, hover: {border: \"#C37F00\", background: \"#FFCA66\"}}, // 6: orange\n {border: \"#4220FB\", background: \"#6E6EFD\", highlight: {border: \"#4220FB\", background: \"#9B9BFD\"}, hover: {border: \"#4220FB\", background: \"#9B9BFD\"}}, // 7: darkblue\n {border: \"#FD5A77\", background: \"#FFC0CB\", highlight: {border: \"#FD5A77\", background: \"#FFD1D9\"}, hover: {border: \"#FD5A77\", background: \"#FFD1D9\"}}, // 8: pink\n {border: \"#4AD63A\", background: \"#C2FABC\", highlight: {border: \"#4AD63A\", background: \"#E6FFE3\"}, hover: {border: \"#4AD63A\", background: \"#E6FFE3\"}}, // 9: mint\n\n {border: \"#990000\", background: \"#EE0000\", highlight: {border: \"#BB0000\", background: \"#FF3333\"}, hover: {border: \"#BB0000\", background: \"#FF3333\"}}, // 10:bright red\n\n {border: \"#FF6000\", background: \"#FF6000\", highlight: {border: \"#FF6000\", background: \"#FF6000\"}, hover: {border: \"#FF6000\", background: \"#FF6000\"}}, // 12: real orange\n {border: \"#97C2FC\", background: \"#2B7CE9\", highlight: {border: \"#D2E5FF\", background: \"#2B7CE9\"}, hover: {border: \"#D2E5FF\", background: \"#2B7CE9\"}}, // 13: blue\n {border: \"#399605\", background: \"#255C03\", highlight: {border: \"#399605\", background: \"#255C03\"}, hover: {border: \"#399605\", background: \"#255C03\"}}, // 14: green\n {border: \"#B70054\", background: \"#FF007E\", highlight: {border: \"#B70054\", background: \"#FF007E\"}, hover: {border: \"#B70054\", background: \"#FF007E\"}}, // 15: magenta\n {border: \"#AD85E4\", background: \"#7C29F0\", highlight: {border: \"#D3BDF0\", background: \"#7C29F0\"}, hover: {border: \"#D3BDF0\", background: \"#7C29F0\"}}, // 16: purple\n {border: \"#4557FA\", background: \"#000EA1\", highlight: {border: \"#6E6EFD\", background: \"#000EA1\"}, hover: {border: \"#6E6EFD\", background: \"#000EA1\"}}, // 17: darkblue\n {border: \"#FFC0CB\", background: \"#FD5A77\", highlight: {border: \"#FFD1D9\", background: \"#FD5A77\"}, hover: {border: \"#FFD1D9\", background: \"#FD5A77\"}}, // 18: pink\n {border: \"#C2FABC\", background: \"#74D66A\", highlight: {border: \"#E6FFE3\", background: \"#74D66A\"}, hover: {border: \"#E6FFE3\", background: \"#74D66A\"}}, // 19: mint\n\n {border: \"#EE0000\", background: \"#990000\", highlight: {border: \"#FF3333\", background: \"#BB0000\"}, hover: {border: \"#FF3333\", background: \"#BB0000\"}} // 20:bright red\n ];\n\n this.options = {};\n this.defaultOptions = {\n useDefaultGroups: true\n };\n util.extend(this.options, this.defaultOptions);\n }\n\n\n setOptions(options) {\n let optionFields = ['useDefaultGroups'];\n\n if (options !== undefined) {\n for (let groupName in options) {\n if (options.hasOwnProperty(groupName)) {\n if (optionFields.indexOf(groupName) === -1) {\n let group = options[groupName];\n this.add(groupName, group);\n }\n }\n }\n }\n }\n\n \n /**\n * Clear all groups\n */\n clear() {\n this.groups = {};\n this.groupsArray = [];\n }\n \n /**\n * get group options of a groupname. If groupname is not found, a new group\n * is added.\n * @param {*} groupname Can be a number, string, Date, etc.\n * @return {Object} group The created group, containing all group options\n */\n get(groupname) {\n let group = this.groups[groupname];\n if (group === undefined) {\n if (this.options.useDefaultGroups === false && this.groupsArray.length > 0) {\n // create new group\n let index = this.groupIndex % this.groupsArray.length;\n this.groupIndex++;\n group = {};\n group.color = this.groups[this.groupsArray[index]];\n this.groups[groupname] = group;\n }\n else {\n // create new group\n let index = this.defaultIndex % this.defaultGroups.length;\n this.defaultIndex++;\n group = {};\n group.color = this.defaultGroups[index];\n this.groups[groupname] = group;\n }\n }\n \n return group;\n }\n \n /**\n * Add a custom group style\n * @param {String} groupName\n * @param {Object} style An object containing borderColor,\n * backgroundColor, etc.\n * @return {Object} group The created group object\n */\n add(groupName, style) {\n this.groups[groupName] = style;\n this.groupsArray.push(groupName);\n return style;\n }\n}\n\nexport default Groups;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/Groups.js","let util = require(\"../../util\");\nlet DataSet = require('../../DataSet');\nlet DataView = require('../../DataView');\n\nimport Node from \"./components/Node\";\nimport Label from \"./components/shared/Label\";\n\nclass NodesHandler {\n constructor(body, images, groups, layoutEngine) {\n this.body = body;\n this.images = images;\n this.groups = groups;\n this.layoutEngine = layoutEngine;\n\n // create the node API in the body container\n this.body.functions.createNode = this.create.bind(this);\n\n this.nodesListeners = {\n add: (event, params) => { this.add(params.items); },\n update: (event, params) => { this.update(params.items, params.data); },\n remove: (event, params) => { this.remove(params.items); }\n };\n\n this.options = {};\n this.defaultOptions = {\n borderWidth: 1,\n borderWidthSelected: 2,\n brokenImage: undefined,\n color: {\n border: '#2B7CE9',\n background: '#97C2FC',\n highlight: {\n border: '#2B7CE9',\n background: '#D2E5FF'\n },\n hover: {\n border: '#2B7CE9',\n background: '#D2E5FF'\n }\n },\n fixed: {\n x: false,\n y: false\n },\n font: {\n color: '#343434',\n size: 14, // px\n face: 'arial',\n background: 'none',\n strokeWidth: 0, // px\n strokeColor: '#ffffff',\n align: 'center',\n vadjust: 0,\n multi: false,\n bold: {\n mod: 'bold'\n },\n boldital: {\n mod: 'bold italic'\n },\n ital: {\n mod: 'italic'\n },\n mono: {\n mod: '',\n size: 15, // px\n face: 'courier new',\n vadjust: 2\n }\n },\n group: undefined,\n hidden: false,\n icon: {\n face: 'FontAwesome', //'FontAwesome',\n code: undefined, //'\\uf007',\n size: 50, //50,\n color: '#2B7CE9' //'#aa00ff'\n },\n image: undefined, // --> URL\n label: undefined,\n labelHighlightBold: true,\n level: undefined,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n mass: 1,\n physics: true,\n scaling: {\n min: 10,\n max: 30,\n label: {\n enabled: false,\n min: 14,\n max: 30,\n maxVisible: 30,\n drawThreshold: 5\n },\n customScalingFunction: function (min, max, total, value) {\n if (max === min) {\n return 0.5;\n }\n else {\n let scale = 1 / (max - min);\n return Math.max(0, (value - min) * scale);\n }\n }\n },\n shadow: {\n enabled: false,\n color: 'rgba(0,0,0,0.5)',\n size: 10,\n x: 5,\n y: 5\n },\n shape: 'ellipse',\n shapeProperties: {\n borderDashes: false, // only for borders\n borderRadius: 6, // only for box shape\n interpolation: true, // only for image and circularImage shapes\n useImageSize: false, // only for image and circularImage shapes\n useBorderWithImage: false // only for image shape\n },\n size: 25,\n title: undefined,\n value: undefined,\n x: undefined,\n y: undefined\n };\n util.extend(this.options, this.defaultOptions);\n\n this.bindEventListeners();\n }\n\n bindEventListeners() {\n // refresh the nodes. Used when reverting from hierarchical layout\n this.body.emitter.on('refreshNodes', this.refresh.bind(this));\n this.body.emitter.on('refresh', this.refresh.bind(this));\n this.body.emitter.on('destroy', () => {\n util.forEach(this.nodesListeners, (callback, event) => {\n if (this.body.data.nodes)\n this.body.data.nodes.off(event, callback);\n });\n delete this.body.functions.createNode;\n delete this.nodesListeners.add;\n delete this.nodesListeners.update;\n delete this.nodesListeners.remove;\n delete this.nodesListeners;\n });\n }\n\n setOptions(options) {\n this.nodeOptions = options;\n if (options !== undefined) {\n Node.parseOptions(this.options, options);\n\n // update the shape in all nodes\n if (options.shape !== undefined) {\n for (let nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n this.body.nodes[nodeId].updateShape();\n }\n }\n }\n\n // update the font in all nodes\n if (options.font !== undefined) {\n Label.parseOptions(this.options.font, options);\n for (let nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n this.body.nodes[nodeId].updateLabelModule();\n this.body.nodes[nodeId]._reset();\n }\n }\n }\n\n // update the shape size in all nodes\n if (options.size !== undefined) {\n for (let nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n this.body.nodes[nodeId]._reset();\n }\n }\n }\n\n // update the state of the letiables if needed\n if (options.hidden !== undefined || options.physics !== undefined) {\n this.body.emitter.emit('_dataChanged');\n }\n }\n }\n\n /**\n * Set a data set with nodes for the network\n * @param {Array | DataSet | DataView} nodes The data containing the nodes.\n * @private\n */\n setData(nodes, doNotEmit = false) {\n let oldNodesData = this.body.data.nodes;\n\n if (nodes instanceof DataSet || nodes instanceof DataView) {\n this.body.data.nodes = nodes;\n }\n else if (Array.isArray(nodes)) {\n this.body.data.nodes = new DataSet();\n this.body.data.nodes.add(nodes);\n }\n else if (!nodes) {\n this.body.data.nodes = new DataSet();\n }\n else {\n throw new TypeError('Array or DataSet expected');\n }\n\n if (oldNodesData) {\n // unsubscribe from old dataset\n util.forEach(this.nodesListeners, function (callback, event) {\n oldNodesData.off(event, callback);\n });\n }\n\n // remove drawn nodes\n this.body.nodes = {};\n\n if (this.body.data.nodes) {\n // subscribe to new dataset\n let me = this;\n util.forEach(this.nodesListeners, function (callback, event) {\n me.body.data.nodes.on(event, callback);\n });\n\n // draw all new nodes\n let ids = this.body.data.nodes.getIds();\n this.add(ids, true);\n }\n\n if (doNotEmit === false) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n\n\n /**\n * Add nodes\n * @param {Number[] | String[]} ids\n * @private\n */\n add(ids, doNotEmit = false) {\n let id;\n let newNodes = [];\n for (let i = 0; i < ids.length; i++) {\n id = ids[i];\n let properties = this.body.data.nodes.get(id);\n let node = this.create(properties);\n newNodes.push(node);\n this.body.nodes[id] = node; // note: this may replace an existing node\n }\n\n this.layoutEngine.positionInitially(newNodes);\n\n if (doNotEmit === false) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n\n /**\n * Update existing nodes, or create them when not yet existing\n * @param {Number[] | String[]} ids\n * @private\n */\n update(ids, changedData) {\n let nodes = this.body.nodes;\n let dataChanged = false;\n for (let i = 0; i < ids.length; i++) {\n let id = ids[i];\n let node = nodes[id];\n let data = changedData[i];\n if (node !== undefined) {\n // update node\n dataChanged = node.setOptions(data);\n }\n else {\n dataChanged = true;\n // create node\n node = this.create(data);\n nodes[id] = node;\n }\n }\n if (dataChanged === true) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n else {\n this.body.emitter.emit(\"_dataUpdated\");\n }\n }\n\n /**\n * Remove existing nodes. If nodes do not exist, the method will just ignore it.\n * @param {Number[] | String[]} ids\n * @private\n */\n remove(ids) {\n let nodes = this.body.nodes;\n\n for (let i = 0; i < ids.length; i++) {\n let id = ids[i];\n delete nodes[id];\n }\n\n this.body.emitter.emit(\"_dataChanged\");\n }\n\n\n /**\n * create a node\n * @param properties\n * @param constructorClass\n */\n create(properties, constructorClass = Node) {\n return new constructorClass(properties, this.body, this.images, this.groups, this.options, this.defaultOptions, this.nodeOptions)\n }\n\n\n refresh(clearPositions = false) {\n let nodes = this.body.nodes;\n for (let nodeId in nodes) {\n let node = undefined;\n if (nodes.hasOwnProperty(nodeId)) {\n node = nodes[nodeId];\n }\n let data = this.body.data.nodes._data[nodeId];\n if (node !== undefined && data !== undefined) {\n if (clearPositions === true) {\n node.setOptions({x:null, y:null});\n }\n node.setOptions({ fixed: false });\n node.setOptions(data);\n }\n }\n }\n\n /**\n * Returns the positions of the nodes.\n * @param ids --> optional, can be array of nodeIds, can be string\n * @returns {{}}\n */\n getPositions(ids) {\n let dataArray = {};\n if (ids !== undefined) {\n if (Array.isArray(ids) === true) {\n for (let i = 0; i < ids.length; i++) {\n if (this.body.nodes[ids[i]] !== undefined) {\n let node = this.body.nodes[ids[i]];\n dataArray[ids[i]] = { x: Math.round(node.x), y: Math.round(node.y) };\n }\n }\n }\n else {\n if (this.body.nodes[ids] !== undefined) {\n let node = this.body.nodes[ids];\n dataArray[ids] = { x: Math.round(node.x), y: Math.round(node.y) };\n }\n }\n }\n else {\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n let node = this.body.nodes[this.body.nodeIndices[i]];\n dataArray[this.body.nodeIndices[i]] = { x: Math.round(node.x), y: Math.round(node.y) };\n }\n }\n return dataArray;\n }\n\n\n /**\n * Load the XY positions of the nodes into the dataset.\n */\n storePositions() {\n // todo: add support for clusters and hierarchical.\n let dataArray = [];\n var dataset = this.body.data.nodes.getDataSet();\n\n for (let nodeId in dataset._data) {\n if (dataset._data.hasOwnProperty(nodeId)) {\n let node = this.body.nodes[nodeId];\n if (dataset._data[nodeId].x != Math.round(node.x) || dataset._data[nodeId].y != Math.round(node.y)) {\n dataArray.push({ id: node.id, x: Math.round(node.x), y: Math.round(node.y) });\n }\n }\n }\n dataset.update(dataArray);\n }\n\n /**\n * get the bounding box of a node.\n * @param nodeId\n * @returns {j|*}\n */\n getBoundingBox(nodeId) {\n if (this.body.nodes[nodeId] !== undefined) {\n return this.body.nodes[nodeId].shape.boundingBox;\n }\n }\n\n\n /**\n * Get the Ids of nodes connected to this node.\n * @param nodeId\n * @returns {Array}\n */\n getConnectedNodes(nodeId) {\n let nodeList = [];\n if (this.body.nodes[nodeId] !== undefined) {\n let node = this.body.nodes[nodeId];\n let nodeObj = {}; // used to quickly check if node already exists\n for (let i = 0; i < node.edges.length; i++) {\n let edge = node.edges[i];\n if (edge.toId == node.id) { // these are double equals since ids can be numeric or string\n if (nodeObj[edge.fromId] === undefined) {\n nodeList.push(edge.fromId);\n nodeObj[edge.fromId] = true;\n }\n }\n else if (edge.fromId == node.id) { // these are double equals since ids can be numeric or string\n if (nodeObj[edge.toId] === undefined) {\n nodeList.push(edge.toId);\n nodeObj[edge.toId] = true;\n }\n }\n }\n }\n return nodeList;\n }\n\n /**\n * Get the ids of the edges connected to this node.\n * @param nodeId\n * @returns {*}\n */\n getConnectedEdges(nodeId) {\n let edgeList = [];\n if (this.body.nodes[nodeId] !== undefined) {\n let node = this.body.nodes[nodeId];\n for (let i = 0; i < node.edges.length; i++) {\n edgeList.push(node.edges[i].id)\n }\n }\n else {\n console.log(\"NodeId provided for getConnectedEdges does not exist. Provided: \", nodeId);\n }\n return edgeList;\n }\n\n\n /**\n * Move a node.\n * @param String nodeId\n * @param Number x\n * @param Number y\n */\n moveNode(nodeId, x, y) {\n if (this.body.nodes[nodeId] !== undefined) {\n this.body.nodes[nodeId].x = Number(x);\n this.body.nodes[nodeId].y = Number(y);\n setTimeout(() => {this.body.emitter.emit(\"startSimulation\")},0);\n }\n else {\n console.log(\"Node id supplied to moveNode does not exist. Provided: \", nodeId);\n }\n }\n}\n\nexport default NodesHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/NodesHandler.js","var util = require('../../../util');\n\nimport Label from './shared/Label'\n\nimport Box from './nodes/shapes/Box'\nimport Circle from './nodes/shapes/Circle'\nimport CircularImage from './nodes/shapes/CircularImage'\nimport Database from './nodes/shapes/Database'\nimport Diamond from './nodes/shapes/Diamond'\nimport Dot from './nodes/shapes/Dot'\nimport Ellipse from './nodes/shapes/Ellipse'\nimport Icon from './nodes/shapes/Icon'\nimport Image from './nodes/shapes/Image'\nimport Square from './nodes/shapes/Square'\nimport Star from './nodes/shapes/Star'\nimport Text from './nodes/shapes/Text'\nimport Triangle from './nodes/shapes/Triangle'\nimport TriangleDown from './nodes/shapes/TriangleDown'\nimport Validator from \"../../../shared/Validator\";\nimport {printStyle} from \"../../../shared/Validator\";\n\n\n/**\n * @class Node\n * A node. A node can be connected to other nodes via one or multiple edges.\n * @param {object} options An object containing options for the node. All\n * options are optional, except for the id.\n * {number} id Id of the node. Required\n * {string} label Text label for the node\n * {number} x Horizontal position of the node\n * {number} y Vertical position of the node\n * {string} shape Node shape, available:\n * \"database\", \"circle\", \"ellipse\",\n * \"box\", \"image\", \"text\", \"dot\",\n * \"star\", \"triangle\", \"triangleDown\",\n * \"square\", \"icon\"\n * {string} image An image url\n * {string} title An title text, can be HTML\n * {anytype} group A group name or number\n * @param {Network.Images} imagelist A list with images. Only needed\n * when the node has an image\n * @param {Network.Groups} grouplist A list with groups. Needed for\n * retrieving group options\n * @param {Object} constants An object with default values for\n * example for the color\n *\n */\nclass Node {\n constructor(options, body, imagelist, grouplist, globalOptions, defaultOptions, nodeOptions) {\n this.options = util.bridgeObject(globalOptions);\n this.globalOptions = globalOptions;\n this.defaultOptions = defaultOptions;\n this.nodeOptions = nodeOptions;\n this.body = body;\n\n this.edges = []; // all edges connected to this node\n\n // set defaults for the options\n this.id = undefined;\n this.imagelist = imagelist;\n this.grouplist = grouplist;\n\n // state options\n this.x = undefined;\n this.y = undefined;\n this.baseSize = this.options.size;\n this.baseFontSize = this.options.font.size;\n this.predefinedPosition = false; // used to check if initial fit should just take the range or approximate\n this.selected = false;\n this.hover = false;\n\n this.labelModule = new Label(this.body, this.options, false /* Not edge label */);\n this.setOptions(options);\n }\n\n\n /**\n * Attach a edge to the node\n * @param {Edge} edge\n */\n attachEdge(edge) {\n if (this.edges.indexOf(edge) === -1) {\n this.edges.push(edge);\n }\n }\n\n\n /**\n * Detach a edge from the node\n * @param {Edge} edge\n */\n detachEdge(edge) {\n var index = this.edges.indexOf(edge);\n if (index != -1) {\n this.edges.splice(index, 1);\n }\n }\n\n\n /**\n * Set or overwrite options for the node\n * @param {Object} options an object with options\n * @param {Object} constants and object with default, global options\n */\n setOptions(options) {\n let currentShape = this.options.shape;\n if (!options) {\n return;\n }\n // basic options\n if (options.id !== undefined) {this.id = options.id;}\n\n if (this.id === undefined) {\n throw \"Node must have an id\";\n }\n\n\n // set these options locally\n // clear x and y positions\n if (options.x !== undefined) {\n if (options.x === null) {this.x = undefined; this.predefinedPosition = false;}\n else {this.x = parseInt(options.x); this.predefinedPosition = true;}\n }\n if (options.y !== undefined) {\n if (options.y === null) {this.y = undefined; this.predefinedPosition = false;}\n else {this.y = parseInt(options.y); this.predefinedPosition = true;}\n }\n if (options.size !== undefined) {this.baseSize = options.size;}\n if (options.value !== undefined) {options.value = parseFloat(options.value);}\n\n // copy group options\n if (typeof options.group === 'number' || (typeof options.group === 'string' && options.group != '')) {\n var groupObj = this.grouplist.get(options.group);\n util.deepExtend(this.options, groupObj);\n // the color object needs to be completely defined. Since groups can partially overwrite the colors, we parse it again, just in case.\n this.options.color = util.parseColor(this.options.color);\n }\n\n // this transforms all shorthands into fully defined options\n Node.parseOptions(this.options, options, true, this.globalOptions);\n\n this.choosify(options);\n\n // load the images\n if (this.options.image !== undefined) {\n if (this.imagelist) {\n this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage, this.id);\n }\n else {\n throw \"No imagelist provided\";\n }\n }\n\n this.updateLabelModule(options);\n this.updateShape(currentShape);\n this.labelModule.propagateFonts(this.nodeOptions, options, this.defaultOptions);\n\n if (options.hidden !== undefined || options.physics !== undefined) {\n return true;\n }\n return false;\n }\n\n\n /**\n * This process all possible shorthands in the new options and makes sure that the parentOptions are fully defined.\n * Static so it can also be used by the handler.\n * @param parentOptions\n * @param newOptions\n * @param allowDeletion\n * @param globalOptions\n */\n static parseOptions(parentOptions, newOptions, allowDeletion = false, globalOptions = {}) {\n var fields = [\n 'color',\n 'font',\n 'fixed',\n 'shadow'\n ];\n util.selectiveNotDeepExtend(fields, parentOptions, newOptions, allowDeletion);\n\n // merge the shadow options into the parent.\n util.mergeOptions(parentOptions, newOptions, 'shadow', allowDeletion, globalOptions);\n\n // individual shape newOptions\n if (newOptions.color !== undefined && newOptions.color !== null) {\n let parsedColor = util.parseColor(newOptions.color);\n util.fillIfDefined(parentOptions.color, parsedColor);\n }\n else if (allowDeletion === true && newOptions.color === null) {\n parentOptions.color = util.bridgeObject(globalOptions.color); // set the object back to the global options\n }\n\n // handle the fixed options\n if (newOptions.fixed !== undefined && newOptions.fixed !== null) {\n if (typeof newOptions.fixed === 'boolean') {\n parentOptions.fixed.x = newOptions.fixed;\n parentOptions.fixed.y = newOptions.fixed;\n }\n else {\n if (newOptions.fixed.x !== undefined && typeof newOptions.fixed.x === 'boolean') {\n parentOptions.fixed.x = newOptions.fixed.x;\n }\n if (newOptions.fixed.y !== undefined && typeof newOptions.fixed.y === 'boolean') {\n parentOptions.fixed.y = newOptions.fixed.y;\n }\n }\n }\n\n // handle the font options\n if (newOptions.font !== undefined && newOptions.font !== null) {\n Label.parseOptions(parentOptions.font, newOptions);\n }\n else if (allowDeletion === true && newOptions.font === null) {\n parentOptions.font = util.bridgeObject(globalOptions.font); // set the object back to the global options\n }\n\n // handle the scaling options, specifically the label part\n if (newOptions.scaling !== undefined) {\n util.mergeOptions(parentOptions.scaling, newOptions.scaling, 'label', allowDeletion, globalOptions.scaling);\n }\n }\n\n choosify(options) {\n this.chooser = true;\n\n let pile = [options, this.options, this.defaultOptions];\n\n let chosen = util.topMost(pile, 'chosen');\n if (typeof chosen === 'boolean') {\n this.chooser = chosen;\n } else if (typeof chosen === 'object') {\n let chosenNode = util.topMost(pile, ['chosen', 'node']);\n if ((typeof chosenNode === 'boolean') || (typeof chosenNode === 'function')) {\n this.chooser = chosenNode;\n }\n }\n }\n\n getFormattingValues() {\n let values = {\n color: this.options.color.background,\n borderWidth: this.options.borderWidth,\n borderColor: this.options.color.border,\n size: this.options.size,\n borderDashes: this.options.shapeProperties.borderDashes,\n borderRadius: this.options.shapeProperties.borderRadius,\n shadow: this.options.shadow.enabled,\n shadowColor: this.options.shadow.color,\n shadowSize: this.options.shadow.size,\n shadowX: this.options.shadow.x,\n shadowY: this.options.shadow.y\n };\n if (this.selected || this.hover) {\n if (this.chooser === true) {\n if (this.selected) {\n values.borderWidth *= 2;\n values.color = this.options.color.highlight.background;\n values.borderColor = this.options.color.highlight.border;\n values.shadow = this.options.shadow.enabled;\n } else if (this.hover) {\n values.color = this.options.color.hover.background;\n values.borderColor = this.options.color.hover.border;\n values.shadow = this.options.shadow.enabled;\n }\n } else if (typeof this.chooser === 'function') {\n this.chooser(values, this.options.id, this.selected, this.hover);\n if (values.shadow === false) {\n if ((values.shadowColor !== this.options.shadow.color) ||\n (values.shadowSize !== this.options.shadow.size) ||\n (values.shadowX !== this.options.shadow.x) ||\n (values.shadowY !== this.options.shadow.y)) {\n values.shadow = true;\n }\n }\n }\n } else {\n values.shadow = this.options.shadow.enabled;\n }\n return values;\n }\n\n\n updateLabelModule(options) {\n if (this.options.label === undefined || this.options.label === null) {\n this.options.label = '';\n }\n this.labelModule.setOptions(this.options, true);\n if (this.labelModule.baseSize !== undefined) {\n this.baseFontSize = this.labelModule.baseSize;\n }\n this.labelModule.constrain(this.nodeOptions, options, this.defaultOptions);\n this.labelModule.choosify(this.nodeOptions, options, this.defaultOptions);\n }\n\n updateShape(currentShape) {\n if (currentShape === this.options.shape && this.shape) {\n this.shape.setOptions(this.options, this.imageObj);\n }\n else {\n // choose draw method depending on the shape\n switch (this.options.shape) {\n case 'box':\n this.shape = new Box(this.options, this.body, this.labelModule);\n break;\n case 'circle':\n this.shape = new Circle(this.options, this.body, this.labelModule);\n break;\n case 'circularImage':\n this.shape = new CircularImage(this.options, this.body, this.labelModule, this.imageObj);\n break;\n case 'database':\n this.shape = new Database(this.options, this.body, this.labelModule);\n break;\n case 'diamond':\n this.shape = new Diamond(this.options, this.body, this.labelModule);\n break;\n case 'dot':\n this.shape = new Dot(this.options, this.body, this.labelModule);\n break;\n case 'ellipse':\n this.shape = new Ellipse(this.options, this.body, this.labelModule);\n break;\n case 'icon':\n this.shape = new Icon(this.options, this.body, this.labelModule);\n break;\n case 'image':\n this.shape = new Image(this.options, this.body, this.labelModule, this.imageObj);\n break;\n case 'square':\n this.shape = new Square(this.options, this.body, this.labelModule);\n break;\n case 'star':\n this.shape = new Star(this.options, this.body, this.labelModule);\n break;\n case 'text':\n this.shape = new Text(this.options, this.body, this.labelModule);\n break;\n case 'triangle':\n this.shape = new Triangle(this.options, this.body, this.labelModule);\n break;\n case 'triangleDown':\n this.shape = new TriangleDown(this.options, this.body, this.labelModule);\n break;\n default:\n this.shape = new Ellipse(this.options, this.body, this.labelModule);\n break;\n }\n }\n this._reset();\n }\n\n\n /**\n * select this node\n */\n select() {\n this.selected = true;\n this._reset();\n }\n\n\n /**\n * unselect this node\n */\n unselect() {\n this.selected = false;\n this._reset();\n }\n\n\n\n /**\n * Reset the calculated size of the node, forces it to recalculate its size\n * @private\n */\n _reset() {\n this.shape.width = undefined;\n this.shape.height = undefined;\n }\n\n\n /**\n * get the title of this node.\n * @return {string} title The title of the node, or undefined when no title\n * has been set.\n */\n getTitle() {\n return this.options.title;\n }\n\n\n /**\n * Calculate the distance to the border of the Node\n * @param {CanvasRenderingContext2D} ctx\n * @param {Number} angle Angle in radians\n * @returns {number} distance Distance to the border in pixels\n */\n distanceToBorder(ctx, angle) {\n return this.shape.distanceToBorder(ctx,angle);\n }\n\n\n /**\n * Check if this node has a fixed x and y position\n * @return {boolean} true if fixed, false if not\n */\n isFixed() {\n return (this.options.fixed.x && this.options.fixed.y);\n }\n\n\n /**\n * check if this node is selecte\n * @return {boolean} selected True if node is selected, else false\n */\n isSelected() {\n return this.selected;\n }\n\n\n /**\n * Retrieve the value of the node. Can be undefined\n * @return {Number} value\n */\n getValue() {\n return this.options.value;\n }\n\n\n /**\n * Adjust the value range of the node. The node will adjust it's size\n * based on its value.\n * @param {Number} min\n * @param {Number} max\n */\n setValueRange(min, max, total) {\n if (this.options.value !== undefined) {\n var scale = this.options.scaling.customScalingFunction(min, max, total, this.options.value);\n var sizeDiff = this.options.scaling.max - this.options.scaling.min;\n if (this.options.scaling.label.enabled === true) {\n var fontDiff = this.options.scaling.label.max - this.options.scaling.label.min;\n this.options.font.size = this.options.scaling.label.min + scale * fontDiff;\n }\n this.options.size = this.options.scaling.min + scale * sizeDiff;\n }\n else {\n this.options.size = this.baseSize;\n this.options.font.size = this.baseFontSize;\n }\n\n this.updateLabelModule();\n }\n\n\n /**\n * Draw this node in the given canvas\n * The 2d context of a HTML canvas can be retrieved by canvas.getContext(\"2d\");\n * @param {CanvasRenderingContext2D} ctx\n */\n draw(ctx) {\n let values = this.getFormattingValues();\n this.shape.draw(ctx, this.x, this.y, this.selected, this.hover, values);\n }\n\n\n /**\n * Update the bounding box of the shape\n */\n updateBoundingBox(ctx) {\n this.shape.updateBoundingBox(this.x,this.y,ctx);\n }\n\n /**\n * Recalculate the size of this node in the given canvas\n * The 2d context of a HTML canvas can be retrieved by canvas.getContext(\"2d\");\n * @param {CanvasRenderingContext2D} ctx\n */\n resize(ctx) {\n let values = this.getFormattingValues();\n this.shape.resize(ctx, this.selected, this.hover, values);\n }\n\n\n /**\n * Check if this object is overlapping with the provided object\n * @param {Object} obj an object with parameters left, top, right, bottom\n * @return {boolean} True if location is located on node\n */\n isOverlappingWith(obj) {\n return (\n this.shape.left < obj.right &&\n this.shape.left + this.shape.width > obj.left &&\n this.shape.top < obj.bottom &&\n this.shape.top + this.shape.height > obj.top\n );\n }\n\n /**\n * Check if this object is overlapping with the provided object\n * @param {Object} obj an object with parameters left, top, right, bottom\n * @return {boolean} True if location is located on node\n */\n isBoundingBoxOverlappingWith(obj) {\n return (\n this.shape.boundingBox.left < obj.right &&\n this.shape.boundingBox.right > obj.left &&\n this.shape.boundingBox.top < obj.bottom &&\n this.shape.boundingBox.bottom > obj.top\n );\n }\n}\n\nexport default Node;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/Node.js","let util = require('../../../../util');\n\nclass Label {\n constructor(body, options, edgelabel = false) {\n this.body = body;\n\n this.pointToSelf = false;\n this.baseSize = undefined;\n this.fontOptions = {};\n this.setOptions(options);\n this.size = {top: 0, left: 0, width: 0, height: 0, yLine: 0}; // could be cached\n this.isEdgeLabel = edgelabel;\n }\n\n setOptions(options, allowDeletion = false) {\n this.elementOptions = options;\n\n // We want to keep the font options seperated from the node options.\n // The node options have to mirror the globals when they are not overruled.\n this.fontOptions = util.deepExtend({},options.font, true);\n\n if (options.label !== undefined) {\n this.labelDirty = true;\n }\n\n if (options.font !== undefined) {\n Label.parseOptions(this.fontOptions, options, allowDeletion);\n if (typeof options.font === 'string') {\n this.baseSize = this.fontOptions.size;\n }\n else if (typeof options.font === 'object') {\n if (options.font.size !== undefined) {\n this.baseSize = options.font.size;\n }\n }\n }\n }\n\n static parseOptions(parentOptions, newOptions, allowDeletion = false) {\n if (typeof newOptions.font === 'string') {\n let newOptionsArray = newOptions.font.split(\" \");\n parentOptions.size = newOptionsArray[0].replace(\"px\",'');\n parentOptions.face = newOptionsArray[1];\n parentOptions.color = newOptionsArray[2];\n parentOptions.vadjust = 0;\n }\n else if (typeof newOptions.font === 'object') {\n util.fillIfDefined(parentOptions, newOptions.font, allowDeletion);\n }\n parentOptions.size = Number(parentOptions.size);\n parentOptions.vadjust = Number(parentOptions.vadjust);\n }\n\n // set the width and height constraints based on 'nearest' value\n constrain(elementOptions, options, defaultOptions) {\n this.fontOptions.constrainWidth = false;\n this.fontOptions.maxWdt = -1;\n this.fontOptions.minWdt = -1;\n\n let pile = [options, elementOptions, defaultOptions];\n\n let widthConstraint = util.topMost(pile, 'widthConstraint');\n if (typeof widthConstraint === 'number') {\n this.fontOptions.maxWdt = Number(widthConstraint);\n this.fontOptions.minWdt = Number(widthConstraint);\n } else if (typeof widthConstraint === 'object') {\n let widthConstraintMaximum = util.topMost(pile, ['widthConstraint', 'maximum']);\n if (typeof widthConstraintMaximum === 'number') {\n this.fontOptions.maxWdt = Number(widthConstraintMaximum);\n }\n let widthConstraintMinimum = util.topMost(pile, ['widthConstraint', 'minimum'])\n if (typeof widthConstraintMinimum === 'number') {\n this.fontOptions.minWdt = Number(widthConstraintMinimum);\n }\n }\n\n this.fontOptions.constrainHeight = false;\n this.fontOptions.minHgt = -1;\n this.fontOptions.valign = 'middle';\n\n let heightConstraint = util.topMost(pile, 'heightConstraint');\n if (typeof heightConstraint === 'number') {\n this.fontOptions.minHgt = Number(heightConstraint);\n } else if (typeof heightConstraint === 'object') {\n let heightConstraintMinimum = util.topMost(pile, ['heightConstraint', 'minimum']);\n if (typeof heightConstraintMinimum === 'number') {\n this.fontOptions.minHgt = Number(heightConstraintMinimum);\n }\n let heightConstraintValign = util.topMost(pile, ['heightConstraint', 'valign']);\n if (typeof heightConstraintValign === 'string') {\n if ((heightConstraintValign === 'top')||(heightConstraintValign === 'bottom')) {\n this.fontOptions.valign = heightConstraintValign;\n }\n }\n }\n }\n\n // set the selected functions based on 'nearest' value\n choosify(elementOptions, options, defaultOptions) {\n this.fontOptions.chooser = true;\n\n let pile = [options, elementOptions, defaultOptions];\n\n let chosen = util.topMost(pile, 'chosen');\n if (typeof chosen === 'boolean') {\n this.fontOptions.chooser = chosen;\n } else if (typeof chosen === 'object') {\n let chosenLabel = util.topMost(pile, ['chosen', 'label']);\n if ((typeof chosenLabel === 'boolean') || (typeof chosenLabel === 'function')) {\n this.fontOptions.chooser = chosenLabel;\n }\n }\n }\n\n // When margins are set in an element, adjust sizes is called to remove them\n // from the width/height constraints. This must be done prior to label sizing.\n adjustSizes(margins) {\n let widthBias = (margins) ? (margins.right + margins.left) : 0;\n if (this.fontOptions.constrainWidth) {\n this.fontOptions.maxWdt -= widthBias;\n this.fontOptions.minWdt -= widthBias;\n }\n let heightBias = (margins) ? (margins.top + margins.bottom) : 0;\n if (this.fontOptions.constrainHeight) {\n this.fontOptions.minHgt -= heightBias;\n }\n }\n\n propagateFonts(options, groupOptions, defaultOptions) {\n if (this.fontOptions.multi) {\n let mods = [ 'bold', 'ital', 'boldital', 'mono' ];\n for (const mod of mods) {\n let optionsFontMod;\n if (options.font) {\n optionsFontMod = options.font[mod];\n }\n if (typeof optionsFontMod === 'string') {\n let modOptionsArray = optionsFontMod.split(\" \");\n this.fontOptions[mod].size = modOptionsArray[0].replace(\"px\",\"\");\n this.fontOptions[mod].face = modOptionsArray[1];\n this.fontOptions[mod].color = modOptionsArray[2];\n this.fontOptions[mod].vadjust = this.fontOptions.vadjust;\n this.fontOptions[mod].mod = defaultOptions.font[mod].mod;\n } else {\n // We need to be crafty about loading the modded fonts. We want as\n // much 'natural' versatility as we can get, so a simple global\n // change propagates in an expected way, even if not stictly logical.\n\n // face: We want to capture any direct settings and overrides, but\n // fall back to the base font if there aren't any. We make a\n // special exception for mono, since we probably don't want to\n // sync to a the base font face.\n //\n // if the mod face is in the node's options, use it\n // else if the mod face is in the global options, use it\n // else if the face is in the global options, use it\n // else use the base font's face.\n if (optionsFontMod && optionsFontMod.hasOwnProperty('face')) {\n this.fontOptions[mod].face = optionsFontMod.face;\n } else if (groupOptions.font && groupOptions.font[mod] &&\n groupOptions.font[mod].hasOwnProperty('face')) {\n this.fontOptions[mod].face = groupOptions.font[mod].face;\n } else if (mod === 'mono') {\n this.fontOptions[mod].face = defaultOptions.font[mod].face;\n } else if (groupOptions.font &&\n groupOptions.font.hasOwnProperty('face')) {\n this.fontOptions[mod].face = groupOptions.font.face;\n } else {\n this.fontOptions[mod].face = this.fontOptions.face;\n }\n\n // color: this is handled just like the face.\n if (optionsFontMod && optionsFontMod.hasOwnProperty('color')) {\n this.fontOptions[mod].color = optionsFontMod.color;\n } else if (groupOptions.font && groupOptions.font[mod] &&\n groupOptions.font[mod].hasOwnProperty('color')) {\n this.fontOptions[mod].color = groupOptions.font[mod].color;\n } else if (groupOptions.font &&\n groupOptions.font.hasOwnProperty('color')) {\n this.fontOptions[mod].color = groupOptions.font.color;\n } else {\n this.fontOptions[mod].color = this.fontOptions.color;\n }\n\n // mod: this is handled just like the face, except we never grab the\n // base font's mod. We know they're in the defaultOptions, and unless\n // we've been steered away from them, we use the default.\n if (optionsFontMod && optionsFontMod.hasOwnProperty('mod')) {\n this.fontOptions[mod].mod = optionsFontMod.mod;\n } else if (groupOptions.font && groupOptions.font[mod] &&\n groupOptions.font[mod].hasOwnProperty('mod')) {\n this.fontOptions[mod].mod = groupOptions.font[mod].mod;\n } else if (groupOptions.font &&\n groupOptions.font.hasOwnProperty('mod')) {\n this.fontOptions[mod].mod = groupOptions.font.mod;\n } else {\n this.fontOptions[mod].mod = defaultOptions.font[mod].mod;\n }\n\n // size: It's important that we size up defaults similarly if we're\n // using default faces unless overriden. We want to preserve the\n // ratios closely - but if faces have changed, all bets are off.\n //\n // if the mod size is in the node's options, use it\n // else if the mod size is in the global options, use it\n // else if the mod face is the same as the default and the base face\n // is the same as the default, scale the mod size using the same\n // ratio\n // else if the size is in the global options, use it\n // else use the base font's size.\n if (optionsFontMod && optionsFontMod.hasOwnProperty('size')) {\n this.fontOptions[mod].size = optionsFontMod.size;\n } else if (groupOptions.font && groupOptions.font[mod] &&\n groupOptions.font[mod].hasOwnProperty('size')) {\n this.fontOptions[mod].size = groupOptions.font[mod].size;\n } else if ((this.fontOptions[mod].face === defaultOptions.font[mod].face) &&\n (this.fontOptions.face === defaultOptions.font.face)) {\n let ratio = this.fontOptions.size / Number(defaultOptions.font.size);\n this.fontOptions[mod].size = defaultOptions.font[mod].size * ratio;\n } else if (groupOptions.font &&\n groupOptions.font.hasOwnProperty('size')) {\n this.fontOptions[mod].size = groupOptions.font.size;\n } else {\n this.fontOptions[mod].size = this.fontOptions.size;\n }\n\n // vadjust: this is handled just like the size.\n if (optionsFontMod && optionsFontMod.hasOwnProperty('vadjust')) {\n this.fontOptions[mod].vadjust = optionsFontMod.vadjust;\n } else if (groupOptions.font &&\n groupOptions.font[mod] && groupOptions.font[mod].hasOwnProperty('vadjust')) {\n this.fontOptions[mod].vadjust = groupOptions.font[mod].vadjust;\n } else if ((this.fontOptions[mod].face === defaultOptions.font[mod].face) &&\n (this.fontOptions.face === defaultOptions.font.face)) {\n let ratio = this.fontOptions.size / Number(defaultOptions.font.size);\n this.fontOptions[mod].vadjust = defaultOptions.font[mod].vadjust * Math.round(ratio);\n } else if (groupOptions.font &&\n groupOptions.font.hasOwnProperty('vadjust')) {\n this.fontOptions[mod].vadjust = groupOptions.font.vadjust;\n } else {\n this.fontOptions[mod].vadjust = this.fontOptions.vadjust;\n }\n }\n this.fontOptions[mod].size = Number(this.fontOptions[mod].size);\n this.fontOptions[mod].vadjust = Number(this.fontOptions[mod].vadjust);\n }\n }\n }\n\n\n /**\n * Main function. This is called from anything that wants to draw a label.\n * @param ctx\n * @param x\n * @param y\n * @param selected\n * @param baseline\n */\n draw(ctx, x, y, selected, hover, baseline = 'middle') {\n // if no label, return\n if (this.elementOptions.label === undefined)\n return;\n\n // check if we have to render the label\n let viewFontSize = this.fontOptions.size * this.body.view.scale;\n if (this.elementOptions.label && viewFontSize < this.elementOptions.scaling.label.drawThreshold - 1)\n return;\n\n // update the size cache if required\n this.calculateLabelSize(ctx, selected, hover, x, y, baseline);\n\n // create the fontfill background\n this._drawBackground(ctx);\n // draw text\n this._drawText(ctx, selected, hover, x, y, baseline);\n }\n\n /**\n * Draws the label background\n * @param {CanvasRenderingContext2D} ctx\n * @private\n */\n _drawBackground(ctx) {\n if (this.fontOptions.background !== undefined && this.fontOptions.background !== \"none\") {\n ctx.fillStyle = this.fontOptions.background;\n\n let lineMargin = 2;\n\n if (this.isEdgeLabel) {\n switch (this.fontOptions.align) {\n case 'middle':\n ctx.fillRect(-this.size.width * 0.5, -this.size.height * 0.5, this.size.width, this.size.height);\n break;\n case 'top':\n ctx.fillRect(-this.size.width * 0.5, -(this.size.height + lineMargin), this.size.width, this.size.height);\n break;\n case 'bottom':\n ctx.fillRect(-this.size.width * 0.5, lineMargin, this.size.width, this.size.height);\n break;\n default:\n ctx.fillRect(this.size.left, this.size.top - 0.5*lineMargin, this.size.width, this.size.height);\n break;\n }\n } else {\n ctx.fillRect(this.size.left, this.size.top - 0.5*lineMargin, this.size.width, this.size.height);\n }\n }\n }\n\n\n /**\n *\n * @param ctx\n * @param x\n * @param baseline\n * @private\n */\n _drawText(ctx, selected, hover, x, y, baseline = 'middle') {\n let fontSize = this.fontOptions.size;\n let viewFontSize = fontSize * this.body.view.scale;\n // this ensures that there will not be HUGE letters on screen by setting an upper limit on the visible text size (regardless of zoomLevel)\n if (viewFontSize >= this.elementOptions.scaling.label.maxVisible) {\n fontSize = Number(this.elementOptions.scaling.label.maxVisible) / this.body.view.scale;\n }\n\n let yLine = this.size.yLine;\n [x, yLine] = this._setAlignment(ctx, x, yLine, baseline);\n\n ctx.textAlign = 'left'\n x = x - this.size.width / 2; // Shift label 1/2-distance to the left\n if ((this.fontOptions.valign) && (this.size.height > this.size.labelHeight)) {\n if (this.fontOptions.valign === 'top') {\n yLine -= (this.size.height - this.size.labelHeight) / 2;\n }\n if (this.fontOptions.valign === 'bottom') {\n yLine += (this.size.height - this.size.labelHeight) / 2;\n }\n }\n\n // draw the text\n for (let i = 0; i < this.lineCount; i++) {\n if (this.lines[i] && this.lines[i].blocks) {\n let width = 0;\n if (this.isEdgeLabel || this.fontOptions.align === 'center') {\n width += (this.size.width - this.lines[i].width) / 2\n } else if (this.fontOptions.align === 'right') {\n width += (this.size.width - this.lines[i].width)\n }\n for (let j = 0; j < this.lines[i].blocks.length; j++) {\n let block = this.lines[i].blocks[j];\n ctx.font = block.font;\n let [fontColor, strokeColor] = this._getColor(block.color, viewFontSize, block.strokeColor);\n if (block.strokeWidth > 0) {\n ctx.lineWidth = block.strokeWidth;\n ctx.strokeStyle = strokeColor;\n ctx.lineJoin = 'round';\n }\n ctx.fillStyle = fontColor;\n\n if (block.strokeWidth > 0) {\n ctx.strokeText(block.text, x + width, yLine + block.vadjust);\n }\n ctx.fillText(block.text, x + width, yLine + block.vadjust);\n width += block.width;\n }\n yLine += this.lines[i].height;\n }\n }\n }\n\n _setAlignment(ctx, x, yLine, baseline) {\n // check for label alignment (for edges)\n // TODO: make alignment for nodes\n if (this.isEdgeLabel && this.fontOptions.align !== 'horizontal' && this.pointToSelf === false) {\n x = 0;\n yLine = 0;\n\n let lineMargin = 2;\n if (this.fontOptions.align === 'top') {\n ctx.textBaseline = 'alphabetic';\n yLine -= 2 * lineMargin; // distance from edge, required because we use alphabetic. Alphabetic has less difference between browsers\n }\n else if (this.fontOptions.align === 'bottom') {\n ctx.textBaseline = 'hanging';\n yLine += 2 * lineMargin;// distance from edge, required because we use hanging. Hanging has less difference between browsers\n }\n else {\n ctx.textBaseline = 'middle';\n }\n }\n else {\n ctx.textBaseline = baseline;\n }\n return [x,yLine];\n }\n\n /**\n * fade in when relative scale is between threshold and threshold - 1.\n * If the relative scale would be smaller than threshold -1 the draw function would have returned before coming here.\n *\n * @param viewFontSize\n * @returns {*[]}\n * @private\n */\n _getColor(color, viewFontSize, initialStrokeColor) {\n let fontColor = color || '#000000';\n let strokeColor = initialStrokeColor || '#ffffff';\n if (viewFontSize <= this.elementOptions.scaling.label.drawThreshold) {\n let opacity = Math.max(0, Math.min(1, 1 - (this.elementOptions.scaling.label.drawThreshold - viewFontSize)));\n fontColor = util.overrideOpacity(fontColor, opacity);\n strokeColor = util.overrideOpacity(strokeColor, opacity);\n }\n return [fontColor, strokeColor];\n }\n\n\n /**\n *\n * @param ctx\n * @param selected\n * @returns {{width: number, height: number}}\n */\n getTextSize(ctx, selected = false, hover = false) {\n this._processLabel(ctx, selected, hover);\n return {\n width: this.size.width,\n height: this.size.height,\n lineCount: this.lineCount\n };\n }\n\n\n /**\n *\n * @param ctx\n * @param selected\n * @param x\n * @param y\n * @param baseline\n */\n calculateLabelSize(ctx, selected, hover, x = 0, y = 0, baseline = 'middle') {\n if (this.labelDirty === true) {\n this._processLabel(ctx, selected, hover);\n }\n this.size.left = x - this.size.width * 0.5;\n this.size.top = y - this.size.height * 0.5;\n this.size.yLine = y + (1 - this.lineCount) * 0.5 * this.fontOptions.size;\n if (baseline === \"hanging\") {\n this.size.top += 0.5 * this.fontOptions.size;\n this.size.top += 4; // distance from node, required because we use hanging. Hanging has less difference between browsers\n this.size.yLine += 4; // distance from node\n }\n this.labelDirty = false;\n }\n\n /**\n * normalize the markup system\n */\n decodeMarkupSystem(markupSystem) {\n let system = 'none';\n if (markupSystem === 'markdown' || markupSystem === 'md') {\n system = 'markdown';\n } else if (markupSystem === true || markupSystem === 'html') {\n system = 'html'\n }\n return system;\n }\n\n /**\n * Explodes a piece of text into single-font blocks using a given markup\n * @param text\n * @param markupSystem\n * @returns [{ text, mod }]\n */\n splitBlocks(text, markupSystem) {\n let system = this.decodeMarkupSystem(markupSystem);\n if (system === 'none') {\n return [{\n text: text,\n mod: 'normal'\n }]\n } else if (system === 'markdown') {\n return this.splitMarkdownBlocks(text);\n } else if (system === 'html') {\n return this.splitHtmlBlocks(text);\n }\n }\n\n splitMarkdownBlocks(text) {\n let blocks = [];\n let s = {\n bold: false,\n ital: false,\n mono: false,\n beginable: true,\n spacing: false,\n position: 0,\n buffer: \"\",\n modStack: []\n };\n s.mod = function() {\n return (this.modStack.length === 0) ? 'normal' : this.modStack[0];\n }\n s.modName = function() {\n if (this.modStack.length === 0)\n return 'normal';\n else if (this.modStack[0] === 'mono')\n return 'mono';\n else {\n if (s.bold && s.ital) {\n return 'boldital';\n } else if (s.bold) {\n return 'bold';\n } else if (s.ital) {\n return 'ital';\n }\n }\n }\n s.emitBlock = function(override = false) {\n if (this.spacing) {\n this.add(\" \");\n this.spacing = false;\n }\n if (this.buffer.length > 0) {\n blocks.push({ text: this.buffer, mod: this.modName() });\n this.buffer = \"\";\n }\n }\n s.add = function(text) {\n if (text === \" \") {\n s.spacing = true;\n }\n if (s.spacing) {\n this.buffer += \" \";\n this.spacing = false;\n }\n if (text != \" \") {\n this.buffer += text;\n }\n }\n while (s.position < text.length) {\n let ch = text.charAt(s.position);\n if (/[ \\t]/.test(ch)) {\n if (!s.mono) {\n s.spacing = true;\n } else {\n s.add(ch);\n }\n s.beginable = true\n } else if (/\\\\/.test(ch)) {\n if (s.position < text.length+1) {\n s.position++;\n ch = text.charAt(s.position);\n if (/ \\t/.test(ch)) {\n s.spacing = true;\n } else {\n s.add(ch);\n s.beginable = false;\n }\n }\n } else if (!s.mono && !s.bold && (s.beginable || s.spacing) && /\\*/.test(ch)) {\n s.emitBlock();\n s.bold = true;\n s.modStack.unshift(\"bold\");\n } else if (!s.mono && !s.ital && (s.beginable || s.spacing) && /\\_/.test(ch)) {\n s.emitBlock();\n s.ital = true;\n s.modStack.unshift(\"ital\");\n } else if (!s.mono && (s.beginable || s.spacing) && /`/.test(ch)) {\n s.emitBlock();\n s.mono = true;\n s.modStack.unshift(\"mono\");\n } else if (!s.mono && (s.mod() === \"bold\") && /\\*/.test(ch)) {\n if ((s.position === text.length-1) || /[.,_` \\t\\n]/.test(text.charAt(s.position+1))) {\n s.emitBlock();\n s.bold = false;\n s.modStack.shift();\n } else {\n s.add(ch);\n }\n } else if (!s.mono && (s.mod() === \"ital\") && /\\_/.test(ch)) {\n if ((s.position === text.length-1) || /[.,*` \\t\\n]/.test(text.charAt(s.position+1))) {\n s.emitBlock();\n s.ital = false;\n s.modStack.shift();\n } else {\n s.add(ch);\n }\n } else if (s.mono && (s.mod() === \"mono\") && /`/.test(ch)) {\n if ((s.position === text.length-1) || (/[.,*_ \\t\\n]/.test(text.charAt(s.position+1)))) {\n s.emitBlock();\n s.mono = false;\n s.modStack.shift();\n } else {\n s.add(ch);\n }\n } else {\n s.add(ch);\n s.beginable = false;\n }\n s.position++\n }\n s.emitBlock();\n return blocks;\n }\n\n splitHtmlBlocks(text) {\n let blocks = [];\n let s = {\n bold: false,\n ital: false,\n mono: false,\n spacing: false,\n position: 0,\n buffer: \"\",\n modStack: []\n };\n s.mod = function() {\n return (this.modStack.length === 0) ? 'normal' : this.modStack[0];\n }\n s.modName = function() {\n if (this.modStack.length === 0)\n return 'normal';\n else if (this.modStack[0] === 'mono')\n return 'mono';\n else {\n if (s.bold && s.ital) {\n return 'boldital';\n } else if (s.bold) {\n return 'bold';\n } else if (s.ital) {\n return 'ital';\n }\n }\n }\n s.emitBlock = function(override = false) {\n if (this.spacing) {\n this.add(\" \");\n this.spacing = false;\n }\n if (this.buffer.length > 0) {\n blocks.push({ text: this.buffer, mod: this.modName() });\n this.buffer = \"\";\n }\n }\n s.add = function(text) {\n if (text === \" \") {\n s.spacing = true;\n }\n if (s.spacing) {\n this.buffer += \" \";\n this.spacing = false;\n }\n if (text != \" \") {\n this.buffer += text;\n }\n }\n while (s.position < text.length) {\n let ch = text.charAt(s.position);\n if (/[ \\t]/.test(ch)) {\n if (!s.mono) {\n s.spacing = true;\n } else {\n s.add(ch);\n }\n } else if (//.test(text.substr(s.position,3))) {\n s.emitBlock();\n s.bold = true;\n s.modStack.unshift(\"bold\");\n s.position += 2;\n } else if (!s.mono && !s.ital && //.test(text.substr(s.position,3))) {\n s.emitBlock();\n s.ital = true;\n s.modStack.unshift(\"ital\");\n s.position += 2;\n } else if (!s.mono && //.test(text.substr(s.position,6))) {\n s.emitBlock();\n s.mono = true;\n s.modStack.unshift(\"mono\");\n s.position += 5;\n } else if (!s.mono && (s.mod() === 'bold') && /<\\/b>/.test(text.substr(s.position,4))) {\n s.emitBlock();\n s.bold = false;\n s.modStack.shift();\n s.position += 3;\n } else if (!s.mono && (s.mod() === 'ital') && /<\\/i>/.test(text.substr(s.position,4))) {\n s.emitBlock();\n s.ital = false;\n s.modStack.shift();\n s.position += 3;\n } else if ((s.mod() === 'mono') && /<\\/code>/.test(text.substr(s.position,7))) {\n s.emitBlock();\n s.mono = false;\n s.modStack.shift();\n s.position += 6;\n } else {\n s.add(ch);\n }\n } else if (/&/.test(ch)) {\n if (/</.test(text.substr(s.position,4))) {\n s.add(\"<\");\n s.position += 3;\n } else if (/&/.test(text.substr(s.position,5))) {\n s.add(\"&\");\n s.position += 4;\n } else {\n s.add(\"&\");\n }\n } else {\n s.add(ch);\n }\n s.position++\n }\n s.emitBlock();\n return blocks;\n }\n\n getFormattingValues(ctx, selected, hover, mod) {\n let values = {\n color: (mod === \"normal\") ? this.fontOptions.color : this.fontOptions[mod].color,\n size: (mod === \"normal\") ? this.fontOptions.size : this.fontOptions[mod].size,\n face: (mod === \"normal\") ? this.fontOptions.face : this.fontOptions[mod].face,\n mod: (mod === \"normal\") ? \"\" : this.fontOptions[mod].mod,\n vadjust: (mod === \"normal\") ? this.fontOptions.vadjust : this.fontOptions[mod].vadjust,\n strokeWidth: this.fontOptions.strokeWidth,\n strokeColor: this.fontOptions.strokeColor\n };\n if (mod === \"normal\") {\n if (selected || hover) {\n if ((this.fontOptions.chooser === true) && (this.elementOptions.labelHighlightBold)) {\n values.mod = 'bold';\n } else if (typeof this.fontOptions.chooser === 'function') {\n this.fontOptions.chooser(ctx, values, this.elementOptions.id, selected, hover);\n }\n }\n } else {\n if ((selected || hover) && (typeof this.fontOptions.chooser === 'function')) {\n this.fontOptions.chooser(ctx, values, this.elementOptions.id, selected, hover);\n }\n }\n ctx.font = (values.mod + \" \" + values.size + \"px \" + values.face).replace(/\"/g, \"\");\n values.font = ctx.font;\n values.height = values.size;\n return values;\n }\n\n differentState(selected, hover) {\n return ((selected !== this.fontOptions.selectedState) && (hover !== this.fontOptions.hoverState));\n }\n\n /**\n * This explodes the label string into lines and sets the width, height and number of lines.\n * @param ctx\n * @param selected\n * @private\n */\n _processLabel(ctx, selected, hover) {\n let width = 0;\n let height = 0;\n let nlLines = [];\n let lines = [];\n let k = 0;\n lines.add = function(l, text, font, color, width, height, vadjust, mod, strokeWidth, strokeColor) {\n if (this.length == l) {\n this[l] = { width: 0, height: 0, blocks: [] };\n }\n this[l].blocks.push({ text, font, color, width, height, vadjust, mod, strokeWidth, strokeColor });\n }\n lines.accumulate = function(l, width, height) {\n this[l].width += width;\n this[l].height = height > this[l].height ? height : this[l].height;\n }\n lines.addAndAccumulate = function(l, text, font, color, width, height, vadjust, mod, strokeWidth, strokeColor) {\n this.add(l, text, font, color, width, height, vadjust, mod, strokeWidth, strokeColor);\n this.accumulate(l, width, height);\n }\n if (this.elementOptions.label !== undefined) {\n let nlLines = String(this.elementOptions.label).split('\\n');\n let lineCount = nlLines.length;\n if (this.elementOptions.font.multi) {\n for (let i = 0; i < lineCount; i++) {\n let blocks = this.splitBlocks(nlLines[i], this.elementOptions.font.multi);\n let lineWidth = 0;\n let lineHeight = 0;\n if (blocks) {\n if (blocks.length == 0) {\n let values = this.getFormattingValues(ctx, selected, hover, \"normal\");\n lines.addAndAccumulate(k, \"\", values.font, values.color, 0, values.size, values.vadjust, \"normal\", values.strokeWidth, values.strokeColor);\n height += lines[k].height;\n k++;\n continue;\n }\n for (let j = 0; j < blocks.length; j++) {\n if (this.fontOptions.maxWdt > 0) {\n let values = this.getFormattingValues(ctx, selected, hover, blocks[j].mod);\n let words = blocks[j].text.split(\" \");\n let atStart = true\n let text = \"\";\n let measure;\n let lastMeasure;\n let w = 0;\n while (w < words.length) {\n let pre = atStart ? \"\" : \" \";\n lastMeasure = measure;\n measure = ctx.measureText(text + pre + words[w]);\n if (lineWidth + measure.width > this.fontOptions.maxWdt) {\n lineHeight = (values.height > lineHeight) ? values.height : lineHeight;\n lines.add(k, text, values.font, values.color, lastMeasure.width, values.height, values.vadjust, blocks[j].mod, values.strokeWidth, values.strokeColor);\n lines.accumulate(k, lastMeasure.width, lineHeight);\n text = \"\";\n atStart = true;\n lineWidth = 0;\n width = lines[k].width > width ? lines[k].width : width;\n height += lines[k].height;\n k++;\n } else {\n text = text + pre + words[w];\n if (w === words.length-1) {\n lineHeight = (values.height > lineHeight) ? values.height : lineHeight;\n lineWidth += measure.width;\n lines.add(k, text, values.font, values.color, measure.width, values.height, values.vadjust, blocks[j].mod, values.strokeWidth, values.strokeColor);\n lines.accumulate(k, measure.width, lineHeight);\n if (j === blocks.length-1) {\n width = lines[k].width > width ? lines[k].width : width;\n height += lines[k].height;\n k++;\n }\n }\n w++;\n atStart = false;\n }\n }\n } else {\n let values = this.getFormattingValues(ctx, selected, hover, blocks[j].mod);\n let measure = ctx.measureText(blocks[j].text);\n lines.addAndAccumulate(k, blocks[j].text, values.font, values.color, measure.width, values.height, values.vadjust, blocks[j].mod, values.strokeWidth, values.strokeColor);\n width = lines[k].width > width ? lines[k].width : width;\n if (blocks.length-1 === j) {\n height += lines[k].height;\n k++;\n }\n }\n }\n }\n }\n } else {\n for (let i = 0; i < lineCount; i++) {\n let values = this.getFormattingValues(ctx, selected, hover, \"normal\");\n if (this.fontOptions.maxWdt > 0) {\n let words = nlLines[i].split(\" \");\n let text = \"\";\n let measure;\n let lastMeasure;\n let w = 0;\n while (w < words.length) {\n let pre = (text === \"\") ? \"\" : \" \";\n lastMeasure = measure;\n measure = ctx.measureText(text + pre + words[w]);\n if (measure.width > this.fontOptions.maxWdt) {\n lines.addAndAccumulate(k, text, values.font, values.color, lastMeasure.width, values.size, values.vadjust, \"normal\", values.strokeWidth, values.strokeColor)\n width = lines[k].width > width ? lines[k].width : width;\n height += lines[k].height;\n text = \"\";\n k++;\n } else {\n text = text + pre + words[w];\n if (w === words.length-1) {\n lines.addAndAccumulate(k, text, values.font, values.color, measure.width, values.size, values.vadjust, \"normal\", values.strokeWidth, values.strokeColor)\n width = lines[k].width > width ? lines[k].width : width;\n height += lines[k].height;\n k++;\n }\n w++;\n }\n }\n } else {\n let text = nlLines[i];\n let measure = ctx.measureText(text);\n lines.addAndAccumulate(k, text, values.font, values.color, measure.width, values.size, values.vadjust, \"normal\", values.strokeWidth, values.strokeColor);\n width = lines[k].width > width ? lines[k].width : width;\n height += lines[k].height;\n k++;\n }\n }\n }\n }\n if ((this.fontOptions.minWdt > 0) && (width < this.fontOptions.minWdt)) {\n width = this.fontOptions.minWdt;\n }\n this.size.labelHeight = height;\n if ((this.fontOptions.minHgt > 0) && (height < this.fontOptions.minHgt)) {\n height = this.fontOptions.minHgt;\n }\n this.lines = lines;\n this.lineCount = lines.length;\n this.size.width = width;\n this.size.height = height;\n this.selectedState = selected;\n this.hoverState = hover;\n }\n}\n\nexport default Label;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/shared/Label.js","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/slicedToArray.js\n// module id = 161\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/is-iterable.js\n// module id = 162\n// module chunks = 0","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/is-iterable.js\n// module id = 163\n// module chunks = 0","var classof = require('./_classof')\n , ITERATOR = require('./_wks')('iterator')\n , Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function(it){\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n || Iterators.hasOwnProperty(classof(O));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/core.is-iterable.js\n// module id = 164\n// module chunks = 0","'use strict';\n\nimport NodeBase from '../util/NodeBase'\n\nclass Box extends NodeBase {\n constructor (options, body, labelModule) {\n super(options,body,labelModule);\n this._setMargins(labelModule);\n }\n\n resize(ctx, selected = this.selected, hover = this.hover) {\n if ((this.width === undefined) || this.labelModule.differentState(selected, hover)) {\n this.textSize = this.labelModule.getTextSize(ctx, selected, hover);\n this.width = this.textSize.width + this.margin.right + this.margin.left;\n this.height = this.textSize.height + this.margin.top + this.margin.bottom;\n this.radius = this.width / 2;\n }\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n\n ctx.strokeStyle = values.borderColor;\n ctx.lineWidth = values.borderWidth;\n ctx.lineWidth /= this.body.view.scale;\n ctx.lineWidth = Math.min(this.width, ctx.lineWidth);\n\n ctx.fillStyle = values.color;\n\n ctx.roundRect(this.left, this.top, this.width, this.height, values.borderRadius);\n\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n // draw the background\n ctx.fill();\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n\n //draw dashed border if enabled, save and restore is required for firefox not to crash on unix.\n ctx.save();\n // if borders are zero width, they will be drawn with width 1 by default. This prevents that\n if (values.borderWidth > 0) {\n this.enableBorderDashes(ctx, values);\n //draw the border\n ctx.stroke();\n //disable dashed border for other elements\n this.disableBorderDashes(ctx, values);\n }\n ctx.restore();\n\n this.updateBoundingBox(x, y, ctx, selected, hover);\n this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left,\n this.top + this.textSize.height / 2 + this.margin.top, selected, hover);\n }\n\n updateBoundingBox(x, y, ctx, selected, hover) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n\n let borderRadius = this.options.shapeProperties.borderRadius; // only effective for box\n this.boundingBox.left = this.left - borderRadius;\n this.boundingBox.top = this.top - borderRadius;\n this.boundingBox.bottom = this.top + this.height + borderRadius;\n this.boundingBox.right = this.left + this.width + borderRadius;\n }\n\n distanceToBorder(ctx, angle) {\n this.resize(ctx);\n let borderWidth = this.options.borderWidth;\n\n return Math.min(\n Math.abs((this.width) / 2 / Math.cos(angle)),\n Math.abs((this.height) / 2 / Math.sin(angle))) + borderWidth;\n }\n}\n\nexport default Box;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Box.js","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/get-prototype-of.js\n// module id = 166\n// module chunks = 0","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/object/get-prototype-of.js\n// module id = 167\n// module chunks = 0","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object')\n , $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function(){\n return function getPrototypeOf(it){\n return $getPrototypeOf(toObject(it));\n };\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.object.get-prototype-of.js\n// module id = 168\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/possibleConstructorReturn.js\n// module id = 169\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/inherits.js\n// module id = 170\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/set-prototype-of.js\n// module id = 171\n// module chunks = 0","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/object/set-prototype-of.js\n// module id = 172\n// module chunks = 0","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', {setPrototypeOf: require('./_set-proto').set});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.object.set-prototype-of.js\n// module id = 173\n// module chunks = 0","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object')\n , anObject = require('./_an-object');\nvar check = function(O, proto){\n anObject(O);\n if(!isObject(proto) && proto !== null)throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function(test, buggy, set){\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch(e){ buggy = true; }\n return function setPrototypeOf(O, proto){\n check(O, proto);\n if(buggy)O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_set-proto.js\n// module id = 174\n// module chunks = 0","class NodeBase {\n constructor(options, body, labelModule) {\n this.body = body;\n this.labelModule = labelModule;\n this.setOptions(options);\n this.top = undefined;\n this.left = undefined;\n this.height = undefined;\n this.width = undefined;\n this.radius = undefined;\n this.margin = undefined;\n this.boundingBox = {top: 0, left: 0, right: 0, bottom: 0};\n }\n\n setOptions(options) {\n this.options = options;\n }\n\n _setMargins(labelModule) {\n this.margin = {};\n if (this.options.margin) {\n if (typeof this.options.margin == 'object') {\n this.margin.top = this.options.margin.top;\n this.margin.right = this.options.margin.right;\n this.margin.bottom = this.options.margin.bottom;\n this.margin.left = this.options.margin.left;\n } else {\n this.margin.top = this.options.margin;\n this.margin.right = this.options.margin;\n this.margin.bottom = this.options.margin;\n this.margin.left = this.options.margin;\n }\n }\n labelModule.adjustSizes(this.margin)\n }\n\n _distanceToBorder(ctx,angle) {\n var borderWidth = this.options.borderWidth;\n this.resize(ctx);\n return Math.min(\n Math.abs(this.width / 2 / Math.cos(angle)),\n Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth;\n }\n\n enableShadow(ctx, values) {\n if (values.shadow) {\n ctx.shadowColor = values.shadowColor;\n ctx.shadowBlur = values.shadowSize;\n ctx.shadowOffsetX = values.shadowX;\n ctx.shadowOffsetY = values.shadowY;\n }\n }\n\n disableShadow(ctx, values) {\n if (values.shadow) {\n ctx.shadowColor = 'rgba(0,0,0,0)';\n ctx.shadowBlur = 0;\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n }\n }\n\n enableBorderDashes(ctx, values) {\n if (values.borderDashes !== false) {\n if (ctx.setLineDash !== undefined) {\n let dashes = values.borderDashes;\n if (dashes === true) {\n dashes = [5,15]\n }\n ctx.setLineDash(dashes);\n }\n else {\n console.warn(\"setLineDash is not supported in this browser. The dashed borders cannot be used.\");\n this.options.shapeProperties.borderDashes = false;\n values.borderDashes = false;\n }\n }\n }\n\n disableBorderDashes(ctx, values) {\n if (values.borderDashes !== false) {\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([0]);\n }\n else {\n console.warn(\"setLineDash is not supported in this browser. The dashed borders cannot be used.\");\n this.options.shapeProperties.borderDashes = false;\n values.borderDashes = false;\n }\n }\n }\n}\n\nexport default NodeBase;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/util/NodeBase.js","'use strict';\n\nimport CircleImageBase from '../util/CircleImageBase'\n\nclass Circle extends CircleImageBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule)\n this._setMargins(labelModule);\n }\n\n resize(ctx, selected = this.selected, hover = this.hover, values = { size: this.options.size}) {\n if ((this.width === undefined) || (this.labelModule.differentState(selected, hover))) {\n this.textSize = this.labelModule.getTextSize(ctx, selected, hover);\n var diameter = Math.max(this.textSize.width + this.margin.right + this.margin.left,\n this.textSize.height + this.margin.top + this.margin.bottom);\n this.options.size = diameter / 2;\n\n this.width = diameter;\n this.height = diameter;\n this.radius = this.width / 2;\n }\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n\n this._drawRawCircle(ctx, x, y, selected, hover, values);\n\n this.boundingBox.top = y - values.size;\n this.boundingBox.left = x - values.size;\n this.boundingBox.right = x + values.size;\n this.boundingBox.bottom = y + values.size;\n\n this.updateBoundingBox(x,y);\n this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left,\n this.top + this.textSize.height / 2 + this.margin.top, selected, hover);\n }\n\n updateBoundingBox(x,y) {\n this.boundingBox.top = y - this.options.size;\n this.boundingBox.left = x - this.options.size;\n this.boundingBox.right = x + this.options.size;\n this.boundingBox.bottom = y + this.options.size;\n }\n\n distanceToBorder(ctx, angle) {\n this.resize(ctx);\n return this.width * 0.5;\n }\n}\n\nexport default Circle;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Circle.js","import NodeBase from '../util/NodeBase'\n\nclass CircleImageBase extends NodeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule);\n this.labelOffset = 0;\n this.imageLoaded = false;\n }\n\n setOptions(options, imageObj) {\n this.options = options;\n if (imageObj) {\n this.imageObj = imageObj;\n }\n }\n\n /**\n * This function resizes the image by the options size when the image has not yet loaded. If the image has loaded, we\n * force the update of the size again.\n *\n * @private\n */\n _resizeImage() {\n let force = false;\n if (!this.imageObj.width || !this.imageObj.height) { // undefined or 0\n this.imageLoaded = false;\n }\n else if (this.imageLoaded === false) {\n this.imageLoaded = true;\n force = true;\n }\n\n if (!this.width || !this.height || force === true) { // undefined or 0\n var width, height, ratio;\n if (this.imageObj.width && this.imageObj.height) { // not undefined or 0\n width = 0;\n height = 0;\n }\n if (this.options.shapeProperties.useImageSize === false) {\n if (this.imageObj.width > this.imageObj.height) {\n ratio = this.imageObj.width / this.imageObj.height;\n width = this.options.size * 2 * ratio || this.imageObj.width;\n height = this.options.size * 2 || this.imageObj.height;\n }\n else {\n if (this.imageObj.width && this.imageObj.height) { // not undefined or 0\n ratio = this.imageObj.height / this.imageObj.width;\n }\n else {\n ratio = 1;\n }\n width = this.options.size * 2;\n height = this.options.size * 2 * ratio;\n }\n }\n else {\n // when not using the size property, we use the image size\n width = this.imageObj.width;\n height = this.imageObj.height;\n }\n this.width = width;\n this.height = height;\n this.radius = 0.5 * this.width;\n }\n\n }\n\n _drawRawCircle(ctx, x, y, selected, hover, values) {\n var borderWidth = values.borderWidth / this.body.view.scale;\n ctx.lineWidth = Math.min(this.width, borderWidth);\n\n ctx.strokeStyle = values.borderColor;\n ctx.fillStyle = values.color;\n ctx.circle(x, y, values.size);\n\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n // draw the background\n ctx.fill();\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n\n //draw dashed border if enabled, save and restore is required for firefox not to crash on unix.\n ctx.save();\n // if borders are zero width, they will be drawn with width 1 by default. This prevents that\n if (borderWidth > 0) {\n this.enableBorderDashes(ctx, values);\n //draw the border\n ctx.stroke();\n //disable dashed border for other elements\n this.disableBorderDashes(ctx, values);\n }\n ctx.restore();\n }\n\n _drawImageAtPosition(ctx, values) {\n if (this.imageObj.width != 0) {\n // draw the image\n ctx.globalAlpha = 1.0;\n\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n\n let factor = (this.imageObj.width / this.width) / this.body.view.scale;\n if (factor > 2 && this.options.shapeProperties.interpolation === true) {\n let w = this.imageObj.width;\n let h = this.imageObj.height;\n var can2 = document.createElement('canvas');\n can2.width = w;\n can2.height = w;\n var ctx2 = can2.getContext('2d');\n\n factor *= 0.5;\n w *= 0.5;\n h *= 0.5;\n ctx2.drawImage(this.imageObj, 0, 0, w, h);\n\n let distance = 0;\n let iterations = 1;\n while (factor > 2 && iterations < 4) {\n ctx2.drawImage(can2, distance, 0, w, h, distance+w, 0, w/2, h/2);\n distance += w;\n factor *= 0.5;\n w *= 0.5;\n h *= 0.5;\n iterations += 1;\n }\n ctx.drawImage(can2, distance, 0, w, h, this.left, this.top, this.width, this.height);\n }\n else {\n // draw image\n ctx.drawImage(this.imageObj, this.left, this.top, this.width, this.height);\n }\n\n\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n }\n }\n\n _drawImageLabel(ctx, x, y, selected, hover) {\n var yLabel;\n var offset = 0;\n\n if (this.height !== undefined) {\n offset = this.height * 0.5;\n var labelDimensions = this.labelModule.getTextSize(ctx, selected, hover);\n if (labelDimensions.lineCount >= 1) {\n offset += labelDimensions.height / 2;\n }\n }\n\n yLabel = y + offset;\n\n if (this.options.label) {\n this.labelOffset = offset;\n }\n this.labelModule.draw(ctx, x, yLabel, selected, hover, 'hanging');\n }\n}\n\nexport default CircleImageBase;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/util/CircleImageBase.js","'use strict';\n\n\nimport CircleImageBase from '../util/CircleImageBase'\n\nclass CircularImage extends CircleImageBase {\n constructor (options, body, labelModule, imageObj) {\n super(options, body, labelModule);\n this.imageObj = imageObj;\n this._swapToImageResizeWhenImageLoaded = true;\n }\n\n resize(ctx, selected = this.selected, hover = this.hover) {\n if ((this.imageObj.src === undefined) ||\n (this.imageObj.width === undefined) ||\n (this.imageObj.height === undefined) ||\n (this.labelModule.differentState(selected, hover))) {\n var diameter = this.options.size * 2;\n this.width = diameter;\n this.height = diameter;\n this._swapToImageResizeWhenImageLoaded = true;\n this.radius = 0.5*this.width;\n } else {\n if (this._swapToImageResizeWhenImageLoaded) {\n this.width = undefined;\n this.height = undefined;\n this._swapToImageResizeWhenImageLoaded = false;\n }\n this._resizeImage();\n }\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this.resize();\n\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n\n let size = Math.min(0.5*this.height, 0.5*this.width);\n\n // draw the background circle. IMPORTANT: the stroke in this method is used by the clip method below.\n this._drawRawCircle(ctx, x, y, selected, hover, values);\n\n // now we draw in the circle, we save so we can revert the clip operation after drawing.\n ctx.save();\n // clip is used to use the stroke in drawRawCircle as an area that we can draw in.\n ctx.clip();\n // draw the image\n this._drawImageAtPosition(ctx, values);\n // restore so we can again draw on the full canvas\n ctx.restore();\n\n this._drawImageLabel(ctx, x, y, selected, hover);\n\n this.updateBoundingBox(x,y);\n }\n\n updateBoundingBox(x,y) {\n this.boundingBox.top = y - this.options.size;\n this.boundingBox.left = x - this.options.size;\n this.boundingBox.right = x + this.options.size;\n this.boundingBox.bottom = y + this.options.size;\n this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left);\n this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width);\n this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelOffset);\n }\n\n\n distanceToBorder(ctx, angle) {\n this.resize(ctx);\n return this.width * 0.5;\n }\n}\n\nexport default CircularImage;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/CircularImage.js","'use strict';\n\nimport NodeBase from '../util/NodeBase'\n\nclass Database extends NodeBase {\n constructor (options, body, labelModule) {\n super(options, body, labelModule);\n this._setMargins(labelModule);\n }\n\n resize(ctx, selected, hover) {\n if ((this.width === undefined) || (this.labelModule.differentState(selected, hover))) {\n this.textSize = this.labelModule.getTextSize(ctx, selected, hover);\n var size = this.textSize.width + this.margin.right + this.margin.left;\n this.width = size;\n this.height = size;\n this.radius = this.width / 2;\n }\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n\n var borderWidth = values.borderWidth / this.body.view.scale;\n ctx.lineWidth = Math.min(this.width, borderWidth);\n\n ctx.strokeStyle = values.borderColor;\n\n ctx.fillStyle = values.color;\n ctx.database(x - this.width / 2, y - this.height / 2, this.width, this.height);\n\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n // draw the background\n ctx.fill();\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n\n //draw dashed border if enabled, save and restore is required for firefox not to crash on unix.\n ctx.save();\n // if borders are zero width, they will be drawn with width 1 by default. This prevents that\n if (borderWidth > 0) {\n this.enableBorderDashes(ctx, values);\n //draw the border\n ctx.stroke();\n //disable dashed border for other elements\n this.disableBorderDashes(ctx, values);\n }\n ctx.restore();\n\n this.updateBoundingBox(x, y, ctx, selected, hover);\n this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left,\n this.top + this.textSize.height / 2 + this.margin.top, selected, hover);\n }\n\n updateBoundingBox(x, y, ctx, selected, hover) {\n this.resize(ctx, selected, hover);\n\n this.left = x - this.width * 0.5;\n this.top = y - this.height * 0.5;\n\n this.boundingBox.left = this.left;\n this.boundingBox.top = this.top;\n this.boundingBox.bottom = this.top + this.height;\n this.boundingBox.right = this.left + this.width;\n }\n\n distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx,angle);\n }\n}\n\nexport default Database;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Database.js","'use strict';\n\nimport ShapeBase from '../util/ShapeBase'\n\nclass Diamond extends ShapeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule)\n }\n\n resize(ctx, values, selected = this.selected, hover = this.hover) {\n this._resizeShape(selected, hover, values);\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this._drawShape(ctx, 'diamond', 4, x, y, selected, hover, values);\n }\n\n distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx,angle);\n }\n}\n\nexport default Diamond;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Diamond.js","import NodeBase from '../util/NodeBase'\n\nclass ShapeBase extends NodeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule)\n }\n\n _resizeShape(selected = this.selected, hover = this.hover, values = { size: this.options.size }) {\n if ((this.width === undefined) || (this.labelModule.differentState(selected, hover))) {\n var size = 2 * values.size;\n this.width = size;\n this.height = size;\n this.radius = 0.5*this.width;\n }\n }\n\n _drawShape(ctx, shape, sizeMultiplier, x, y, selected, hover, values) {\n this._resizeShape(selected, hover, values);\n\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n\n var borderWidth = values.borderWidth / this.body.view.scale;\n ctx.lineWidth = Math.min(this.width, borderWidth);\n\n ctx.strokeStyle = values.borderColor;\n ctx.fillStyle = values.color;\n ctx[shape](x, y, values.size);\n\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n // draw the background\n ctx.fill();\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n\n //draw dashed border if enabled, save and restore is required for firefox not to crash on unix.\n ctx.save();\n // if borders are zero width, they will be drawn with width 1 by default. This prevents that\n if (borderWidth > 0) {\n this.enableBorderDashes(ctx, values);\n //draw the border\n ctx.stroke();\n //disable dashed border for other elements\n this.disableBorderDashes(ctx, values);\n }\n ctx.restore();\n\n if (this.options.label !== undefined) {\n let yLabel = y + 0.5 * this.height + 3; // the + 3 is to offset it a bit below the node.\n this.labelModule.draw(ctx, x, yLabel, selected, hover, 'hanging');\n }\n\n this.updateBoundingBox(x,y);\n }\n\n updateBoundingBox(x,y) {\n this.boundingBox.top = y - this.options.size;\n this.boundingBox.left = x - this.options.size;\n this.boundingBox.right = x + this.options.size;\n this.boundingBox.bottom = y + this.options.size;\n\n if (this.options.label !== undefined && this.labelModule.size.width > 0) {\n this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left);\n this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width);\n this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelModule.size.height + 3);\n }\n }\n\n\n\n}\n\nexport default ShapeBase;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/util/ShapeBase.js","'use strict';\n\nimport ShapeBase from '../util/ShapeBase'\n\nclass Dot extends ShapeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule)\n }\n\n resize(ctx, values, selected = this.selected, hover = this.hover) {\n this._resizeShape(selected, hover, values);\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this._drawShape(ctx, 'circle', 2, x, y, selected, hover, values);\n }\n\n distanceToBorder(ctx, angle) {\n this.resize(ctx);\n return this.options.size;\n }\n}\n\nexport default Dot;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Dot.js","'use strict';\n\nimport NodeBase from '../util/NodeBase'\n\nclass Ellipse extends NodeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule);\n }\n\n resize(ctx, selected = this.selected, hover = this.hover) {\n if ((this.width === undefined) || (this.labelModule.differentState(selected, hover))) {\n var textSize = this.labelModule.getTextSize(ctx, selected, hover);\n\n this.height = textSize.height * 2;\n this.width = textSize.width + this.height;\n this.radius = 0.5*this.width;\n }\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width * 0.5;\n this.top = y - this.height * 0.5;\n\n var borderWidth = values.borderWidth / this.body.view.scale;\n ctx.lineWidth = Math.min(this.width, borderWidth);\n\n ctx.strokeStyle = values.borderColor;\n\n ctx.fillStyle = values.color;\n ctx.ellipse(this.left, this.top, this.width, this.height);\n\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n // draw the background\n ctx.fill();\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n\n //draw dashed border if enabled, save and restore is required for firefox not to crash on unix.\n ctx.save();\n\n // if borders are zero width, they will be drawn with width 1 by default. This prevents that\n if (borderWidth > 0) {\n this.enableBorderDashes(ctx, values);\n //draw the border\n ctx.stroke();\n //disable dashed border for other elements\n this.disableBorderDashes(ctx, values);\n }\n\n ctx.restore();\n\n this.updateBoundingBox(x, y, ctx, selected, hover);\n this.labelModule.draw(ctx, x, y, selected, hover);\n }\n\n updateBoundingBox(x, y, ctx, selected, hover) {\n this.resize(ctx, selected, hover); // just in case\n\n this.left = x - this.width * 0.5;\n this.top = y - this.height * 0.5;\n\n this.boundingBox.left = this.left;\n this.boundingBox.top = this.top;\n this.boundingBox.bottom = this.top + this.height;\n this.boundingBox.right = this.left + this.width;\n }\n\n distanceToBorder(ctx, angle) {\n this.resize(ctx);\n var a = this.width * 0.5;\n var b = this.height * 0.5;\n var w = (Math.sin(angle) * a);\n var h = (Math.cos(angle) * b);\n return a * b / Math.sqrt(w * w + h * h);\n }\n}\n\nexport default Ellipse;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Ellipse.js","'use strict';\n\nimport NodeBase from '../util/NodeBase'\n\nclass Icon extends NodeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule);\n this._setMargins(labelModule);\n }\n\n resize(ctx, selected, hover) {\n if ((this.width === undefined) || (this.labelModule.differentState(selected, hover))) {\n this.iconSize = {\n width: Number(this.options.icon.size),\n height: Number(this.options.icon.size)\n };\n this.width = this.iconSize.width + this.margin.right + this.margin.left;\n this.height = this.iconSize.height + this.margin.top + this.margin.bottom;\n this.radius = 0.5*this.width;\n }\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this.resize(ctx, selected, hover);\n this.options.icon.size = this.options.icon.size || 50;\n\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n this._icon(ctx, x, y, selected, hover, values);\n\n if (this.options.label !== undefined) {\n var iconTextSpacing = 5;\n this.labelModule.draw(ctx, this.left + this.iconSize.width / 2 + this.margin.left,\n y + this.height / 2 + iconTextSpacing, selected);\n }\n\n this.updateBoundingBox(x, y)\n }\n\n updateBoundingBox(x, y) {\n this.boundingBox.top = y - this.options.icon.size * 0.5;\n this.boundingBox.left = x - this.options.icon.size * 0.5;\n this.boundingBox.right = x + this.options.icon.size * 0.5;\n this.boundingBox.bottom = y + this.options.icon.size * 0.5;\n\n if (this.options.label !== undefined && this.labelModule.size.width > 0) {\n var iconTextSpacing = 5;\n this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left);\n this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width);\n this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelModule.size.height + iconTextSpacing);\n }\n }\n\n _icon(ctx, x, y, selected, hover, values) {\n let iconSize = Number(this.options.icon.size);\n\n if (this.options.icon.code !== undefined) {\n ctx.font = (selected ? \"bold \" : \"\") + iconSize + \"px \" + this.options.icon.face;\n\n // draw icon\n ctx.fillStyle = this.options.icon.color || \"black\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n ctx.fillText(this.options.icon.code, x, y);\n\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n } else {\n console.error('When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.')\n }\n\n }\n\n distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx,angle);\n }\n}\n\nexport default Icon;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Icon.js","'use strict';\n\nimport CircleImageBase from '../util/CircleImageBase'\n\nclass Image extends CircleImageBase {\n constructor (options, body, labelModule, imageObj) {\n super(options, body, labelModule);\n this.imageObj = imageObj;\n }\n\n resize() {\n this._resizeImage();\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this.resize();\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n\n if (this.options.shapeProperties.useBorderWithImage === true) {\n var neutralborderWidth = this.options.borderWidth;\n var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth;\n var borderWidth = (selected ? selectionLineWidth : neutralborderWidth) / this.body.view.scale;\n ctx.lineWidth = Math.min(this.width, borderWidth);\n\n ctx.beginPath();\n\n // setup the line properties.\n ctx.strokeStyle = selected ? this.options.color.highlight.border : hover ? this.options.color.hover.border : this.options.color.border;\n\n // set a fillstyle\n ctx.fillStyle = selected ? this.options.color.highlight.background : hover ? this.options.color.hover.background : this.options.color.background;\n\n // draw a rectangle to form the border around. This rectangle is filled so the opacity of a picture (in future vis releases?) can be used to tint the image\n ctx.rect(this.left - 0.5 * ctx.lineWidth,\n this.top - 0.5 * ctx.lineWidth,\n this.width + ctx.lineWidth,\n this.height + ctx.lineWidth);\n ctx.fill();\n\n //draw dashed border if enabled, save and restore is required for firefox not to crash on unix.\n ctx.save();\n // if borders are zero width, they will be drawn with width 1 by default. This prevents that\n if (borderWidth > 0) {\n this.enableBorderDashes(ctx);\n //draw the border\n ctx.stroke();\n //disable dashed border for other elements\n this.disableBorderDashes(ctx);\n }\n ctx.restore();\n\n ctx.closePath();\n }\n\n this._drawImageAtPosition(ctx, values);\n\n this._drawImageLabel(ctx, x, y, selected, hover);\n\n this.updateBoundingBox(x,y);\n }\n\n updateBoundingBox(x,y) {\n this.resize();\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n\n this.boundingBox.top = this.top;\n this.boundingBox.left = this.left;\n this.boundingBox.right = this.left + this.width;\n this.boundingBox.bottom = this.top + this.height;\n\n if (this.options.label !== undefined && this.labelModule.size.width > 0) {\n this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left);\n this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width);\n this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelOffset);\n }\n }\n\n distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx,angle);\n }\n}\n\nexport default Image;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Image.js","'use strict';\n\nimport ShapeBase from '../util/ShapeBase'\n\nclass Square extends ShapeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule)\n }\n\n resize() {\n this._resizeShape();\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this._drawShape(ctx, 'square', 2, x, y, selected, hover, values);\n }\n\n distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx,angle);\n }\n}\n\nexport default Square;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Square.js","'use strict';\n\nimport ShapeBase from '../util/ShapeBase'\n\nclass Star extends ShapeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule)\n }\n\n resize(ctx, values, selected, hover) {\n this._resizeShape(selected, hover, values);\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this._drawShape(ctx, 'star', 4, x, y, selected, hover, values);\n }\n\n distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx,angle);\n }\n}\n\nexport default Star;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Star.js","'use strict';\n\nimport NodeBase from '../util/NodeBase'\n\nclass Text extends NodeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule);\n this._setMargins(labelModule);\n }\n\n resize(ctx, selected, hover) {\n if ((this.width === undefined) || this.labelModule.differentState(selected, hover)) {\n this.textSize = this.labelModule.getTextSize(ctx, selected, hover);\n this.width = this.textSize.width + this.margin.right + this.margin.left;\n this.height = this.textSize.height + this.margin.top + this.margin.bottom;\n this.radius = 0.5*this.width;\n }\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this.resize(ctx, selected, hover);\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left,\n this.top + this.textSize.height / 2 + this.margin.top, selected, hover);\n\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n\n this.updateBoundingBox(x, y, ctx, selected, hover);\n }\n\n updateBoundingBox(x, y, ctx, selected, hover) {\n this.resize(ctx, selected, hover);\n\n this.left = x - this.width / 2;\n this.top = y - this.height / 2;\n\n this.boundingBox.top = this.top;\n this.boundingBox.left = this.left;\n this.boundingBox.right = this.left + this.width;\n this.boundingBox.bottom = this.top + this.height;\n }\n\n distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx,angle);\n }\n}\n\nexport default Text;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Text.js","'use strict';\n\nimport ShapeBase from '../util/ShapeBase'\n\nclass Triangle extends ShapeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule)\n }\n\n resize(ctx) {\n this._resizeShape();\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this._drawShape(ctx, 'triangle', 3, x, y, selected, hover, values);\n }\n\n distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx,angle);\n }\n}\n\nexport default Triangle;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/Triangle.js","'use strict';\n\nimport ShapeBase from '../util/ShapeBase'\n\nclass TriangleDown extends ShapeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule)\n }\n\n resize(ctx) {\n this._resizeShape();\n }\n\n draw(ctx, x, y, selected, hover, values) {\n this._drawShape(ctx, 'triangleDown', 3, x, y, selected, hover, values);\n }\n\n distanceToBorder(ctx, angle) {\n return this._distanceToBorder(ctx,angle);\n }\n}\n\nexport default TriangleDown;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/shapes/TriangleDown.js","var util = require(\"../../util\");\nvar DataSet = require('../../DataSet');\nvar DataView = require('../../DataView');\n\nimport Edge from \"./components/Edge\"\nimport Label from \"./components/shared/Label\"\n\nclass EdgesHandler {\n constructor(body, images, groups) {\n this.body = body;\n this.images = images;\n this.groups = groups;\n\n // create the edge API in the body container\n this.body.functions.createEdge = this.create.bind(this);\n\n this.edgesListeners = {\n add: (event, params) => {this.add(params.items);},\n update: (event, params) => {this.update(params.items);},\n remove: (event, params) => {this.remove(params.items);}\n };\n\n this.options = {};\n this.defaultOptions = {\n arrows: {\n to: {enabled: false, scaleFactor:1, type: 'arrow'}, // boolean / {arrowScaleFactor:1} / {enabled: false, arrowScaleFactor:1}\n middle: {enabled: false, scaleFactor:1, type: 'arrow'},\n from: {enabled: false, scaleFactor:1, type: 'arrow'}\n },\n arrowStrikethrough: true,\n color: {\n color:'#848484',\n highlight:'#848484',\n hover: '#848484',\n inherit: 'from',\n opacity:1.0\n },\n dashes: false,\n font: {\n color: '#343434',\n size: 14, // px\n face: 'arial',\n background: 'none',\n strokeWidth: 2, // px\n strokeColor: '#ffffff',\n align:'horizontal',\n multi: false,\n vadjust: 0,\n bold: {\n mod: 'bold'\n },\n boldital: {\n mod: 'bold italic'\n },\n ital: {\n mod: 'italic'\n },\n mono: {\n mod: '',\n size: 15, // px\n face: 'courier new',\n vadjust: 2\n }\n },\n hidden: false,\n hoverWidth: 1.5,\n label: undefined,\n labelHighlightBold: true,\n length: undefined,\n physics: true,\n scaling:{\n min: 1,\n max: 15,\n label: {\n enabled: true,\n min: 14,\n max: 30,\n maxVisible: 30,\n drawThreshold: 5\n },\n customScalingFunction: function (min,max,total,value) {\n if (max === min) {\n return 0.5;\n }\n else {\n var scale = 1 / (max - min);\n return Math.max(0,(value - min)*scale);\n }\n }\n },\n selectionWidth: 1.5,\n selfReferenceSize:20,\n shadow:{\n enabled: false,\n color: 'rgba(0,0,0,0.5)',\n size:10,\n x:5,\n y:5\n },\n smooth: {\n enabled: true,\n type: \"dynamic\",\n forceDirection:'none',\n roundness: 0.5\n },\n title:undefined,\n width: 1,\n value: undefined\n };\n\n util.extend(this.options, this.defaultOptions);\n\n this.bindEventListeners();\n }\n\n bindEventListeners() {\n // this allows external modules to force all dynamic curves to turn static.\n this.body.emitter.on(\"_forceDisableDynamicCurves\", (type) => {\n if (type === 'dynamic') {\n type = 'continuous';\n }\n let emitChange = false;\n for (let edgeId in this.body.edges) {\n if (this.body.edges.hasOwnProperty(edgeId)) {\n let edge = this.body.edges[edgeId];\n let edgeData = this.body.data.edges._data[edgeId];\n\n // only forcibly remove the smooth curve if the data has been set of the edge has the smooth curves defined.\n // this is because a change in the global would not affect these curves.\n if (edgeData !== undefined) {\n let edgeOptions = edgeData.smooth;\n if (edgeOptions !== undefined) {\n if (edgeOptions.enabled === true && edgeOptions.type === 'dynamic') {\n if (type === undefined) {\n edge.setOptions({smooth: false});\n }\n else {\n edge.setOptions({smooth: {type: type}});\n }\n emitChange = true;\n }\n }\n }\n }\n }\n if (emitChange === true) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n });\n\n // this is called when options of EXISTING nodes or edges have changed.\n this.body.emitter.on(\"_dataUpdated\", () => {\n this.reconnectEdges();\n });\n\n // refresh the edges. Used when reverting from hierarchical layout\n this.body.emitter.on(\"refreshEdges\", this.refresh.bind(this));\n this.body.emitter.on(\"refresh\", this.refresh.bind(this));\n this.body.emitter.on(\"destroy\", () => {\n util.forEach(this.edgesListeners, (callback, event) => {\n if (this.body.data.edges)\n this.body.data.edges.off(event, callback);\n });\n delete this.body.functions.createEdge;\n delete this.edgesListeners.add;\n delete this.edgesListeners.update;\n delete this.edgesListeners.remove;\n delete this.edgesListeners;\n });\n\n }\n\n setOptions(options) {\n this.edgeOptions = options;\n if (options !== undefined) {\n // use the parser from the Edge class to fill in all shorthand notations\n Edge.parseOptions(this.options, options);\n\n // update smooth settings in all edges\n let dataChanged = false;\n if (options.smooth !== undefined) {\n for (let edgeId in this.body.edges) {\n if (this.body.edges.hasOwnProperty(edgeId)) {\n dataChanged = this.body.edges[edgeId].updateEdgeType() || dataChanged;\n }\n }\n }\n\n // update fonts in all edges\n if (options.font !== undefined) {\n // use the parser from the Label class to fill in all shorthand notations\n Label.parseOptions(this.options.font, options);\n for (let edgeId in this.body.edges) {\n if (this.body.edges.hasOwnProperty(edgeId)) {\n this.body.edges[edgeId].updateLabelModule();\n }\n }\n }\n\n // update the state of the variables if needed\n if (options.hidden !== undefined || options.physics !== undefined || dataChanged === true) {\n this.body.emitter.emit('_dataChanged');\n }\n }\n }\n\n\n /**\n * Load edges by reading the data table\n * @param {Array | DataSet | DataView} edges The data containing the edges.\n * @private\n * @private\n */\n setData(edges, doNotEmit = false) {\n var oldEdgesData = this.body.data.edges;\n\n if (edges instanceof DataSet || edges instanceof DataView) {\n this.body.data.edges = edges;\n }\n else if (Array.isArray(edges)) {\n this.body.data.edges = new DataSet();\n this.body.data.edges.add(edges);\n }\n else if (!edges) {\n this.body.data.edges = new DataSet();\n }\n else {\n throw new TypeError('Array or DataSet expected');\n }\n\n // TODO: is this null or undefined or false?\n if (oldEdgesData) {\n // unsubscribe from old dataset\n util.forEach(this.edgesListeners, (callback, event) => {oldEdgesData.off(event, callback);});\n }\n\n // remove drawn edges\n this.body.edges = {};\n\n // TODO: is this null or undefined or false?\n if (this.body.data.edges) {\n // subscribe to new dataset\n util.forEach(this.edgesListeners, (callback, event) => {this.body.data.edges.on(event, callback);});\n\n // draw all new nodes\n var ids = this.body.data.edges.getIds();\n this.add(ids, true);\n }\n\n if (doNotEmit === false) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n\n\n /**\n * Add edges\n * @param {Number[] | String[]} ids\n * @private\n */\n add(ids, doNotEmit = false) {\n var edges = this.body.edges;\n var edgesData = this.body.data.edges;\n\n for (let i = 0; i < ids.length; i++) {\n var id = ids[i];\n\n var oldEdge = edges[id];\n if (oldEdge) {\n oldEdge.disconnect();\n }\n\n var data = edgesData.get(id, {\"showInternalIds\" : true});\n edges[id] = this.create(data);\n }\n\n if (doNotEmit === false) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n }\n\n\n\n /**\n * Update existing edges, or create them when not yet existing\n * @param {Number[] | String[]} ids\n * @private\n */\n update(ids) {\n var edges = this.body.edges;\n var edgesData = this.body.data.edges;\n var dataChanged = false;\n for (var i = 0; i < ids.length; i++) {\n var id = ids[i];\n var data = edgesData.get(id);\n var edge = edges[id];\n if (edge !== undefined) {\n // update edge\n edge.disconnect();\n dataChanged = edge.setOptions(data) || dataChanged; // if a support node is added, data can be changed.\n edge.connect();\n }\n else {\n // create edge\n this.body.edges[id] = this.create(data);\n dataChanged = true;\n }\n }\n\n if (dataChanged === true) {\n this.body.emitter.emit(\"_dataChanged\");\n }\n else {\n this.body.emitter.emit(\"_dataUpdated\");\n }\n }\n\n\n\n /**\n * Remove existing edges. Non existing ids will be ignored\n * @param {Number[] | String[]} ids\n * @private\n */\n remove(ids) {\n var edges = this.body.edges;\n for (var i = 0; i < ids.length; i++) {\n var id = ids[i];\n var edge = edges[id];\n if (edge !== undefined) {\n edge.cleanup();\n edge.disconnect();\n delete edges[id];\n }\n }\n\n this.body.emitter.emit(\"_dataChanged\");\n }\n\n refresh() {\n let edges = this.body.edges;\n for (let edgeId in edges) {\n let edge = undefined;\n if (edges.hasOwnProperty(edgeId)) {\n edge = edges[edgeId];\n }\n let data = this.body.data.edges._data[edgeId];\n if (edge !== undefined && data !== undefined) {\n edge.setOptions(data);\n }\n }\n }\n\n create(properties) {\n return new Edge(properties, this.body, this.options, this.defaultOptions, this.edgeOptions)\n }\n\n /**\n * Reconnect all edges\n * @private\n */\n reconnectEdges() {\n var id;\n var nodes = this.body.nodes;\n var edges = this.body.edges;\n\n for (id in nodes) {\n if (nodes.hasOwnProperty(id)) {\n nodes[id].edges = [];\n }\n }\n\n for (id in edges) {\n if (edges.hasOwnProperty(id)) {\n var edge = edges[id];\n edge.from = null;\n edge.to = null;\n edge.connect();\n }\n }\n }\n\n\n getConnectedNodes(edgeId) {\n let nodeList = [];\n if (this.body.edges[edgeId] !== undefined) {\n let edge = this.body.edges[edgeId];\n if (edge.fromId) {nodeList.push(edge.fromId);}\n if (edge.toId) {nodeList.push(edge.toId);}\n }\n return nodeList;\n }\n\n}\n\nexport default EdgesHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/EdgesHandler.js","var util = require('../../../util');\n\nimport Label from './shared/Label'\nimport CubicBezierEdge from './edges/CubicBezierEdge'\nimport BezierEdgeDynamic from './edges/BezierEdgeDynamic'\nimport BezierEdgeStatic from './edges/BezierEdgeStatic'\nimport StraightEdge from './edges/StraightEdge'\n\n/**\n * @class Edge\n *\n * A edge connects two nodes\n * @param {Object} properties Object with options. Must contain\n * At least options from and to.\n * Available options: from (number),\n * to (number), label (string, color (string),\n * width (number), style (string),\n * length (number), title (string)\n * @param {Network} network A Network object, used to find and edge to\n * nodes.\n * @param {Object} constants An object with default values for\n * example for the color\n */\nclass Edge {\n constructor(options, body, globalOptions, defaultOptions, edgeOptions) {\n if (body === undefined) {\n throw \"No body provided\";\n }\n this.options = util.bridgeObject(globalOptions);\n this.globalOptions = globalOptions;\n this.defaultOptions = defaultOptions;\n this.edgeOptions = edgeOptions;\n this.body = body;\n\n // initialize variables\n this.id = undefined;\n this.fromId = undefined;\n this.toId = undefined;\n this.selected = false;\n this.hover = false;\n this.labelDirty = true;\n\n this.baseWidth = this.options.width;\n this.baseFontSize = this.options.font.size;\n\n this.from = undefined; // a node\n this.to = undefined; // a node\n\n this.edgeType = undefined;\n\n this.connected = false;\n\n this.labelModule = new Label(this.body, this.options, true /* It's an edge label */);\n this.setOptions(options);\n }\n\n\n /**\n * Set or overwrite options for the edge\n * @param {Object} options an object with options\n * @param doNotEmit\n */\n setOptions(options) {\n if (!options) {\n return;\n }\n\n Edge.parseOptions(this.options, options, true, this.globalOptions);\n\n if (options.id !== undefined) {\n this.id = options.id;\n }\n if (options.from !== undefined) {\n this.fromId = options.from;\n }\n if (options.to !== undefined) {\n this.toId = options.to;\n }\n if (options.title !== undefined) {\n this.title = options.title;\n }\n if (options.value !== undefined) {\n options.value = parseFloat(options.value);\n }\n\n this.choosify(options);\n\n // update label Module\n this.updateLabelModule(options);\n this.labelModule.propagateFonts(this.edgeOptions, options, this.defaultOptions);\n\n let dataChanged = this.updateEdgeType();\n\n // if anything has been updates, reset the selection width and the hover width\n this._setInteractionWidths();\n\n // A node is connected when it has a from and to node that both exist in the network.body.nodes.\n this.connect();\n\n if (options.hidden !== undefined || options.physics !== undefined) {\n dataChanged = true;\n }\n\n return dataChanged;\n }\n\n static parseOptions(parentOptions, newOptions, allowDeletion = false, globalOptions = {}) {\n var fields = [\n 'arrowStrikethrough',\n 'id',\n 'from',\n 'hidden',\n 'hoverWidth',\n 'label',\n 'labelHighlightBold',\n 'length',\n 'line',\n 'opacity',\n 'physics',\n 'scaling',\n 'selectionWidth',\n 'selfReferenceSize',\n 'to',\n 'title',\n 'value',\n 'width'\n ];\n\n // only deep extend the items in the field array. These do not have shorthand.\n util.selectiveDeepExtend(fields, parentOptions, newOptions, allowDeletion);\n\n util.mergeOptions(parentOptions, newOptions, 'smooth', allowDeletion, globalOptions);\n util.mergeOptions(parentOptions, newOptions, 'shadow', allowDeletion, globalOptions);\n\n if (newOptions.dashes !== undefined && newOptions.dashes !== null) {\n parentOptions.dashes = newOptions.dashes;\n }\n else if (allowDeletion === true && newOptions.dashes === null) {\n parentOptions.dashes = Object.create(globalOptions.dashes); // this sets the pointer of the option back to the global option.\n }\n\n // set the scaling newOptions\n if (newOptions.scaling !== undefined && newOptions.scaling !== null) {\n if (newOptions.scaling.min !== undefined) {parentOptions.scaling.min = newOptions.scaling.min;}\n if (newOptions.scaling.max !== undefined) {parentOptions.scaling.max = newOptions.scaling.max;}\n util.mergeOptions(parentOptions.scaling, newOptions.scaling, 'label', allowDeletion, globalOptions.scaling);\n }\n else if (allowDeletion === true && newOptions.scaling === null) {\n parentOptions.scaling = Object.create(globalOptions.scaling); // this sets the pointer of the option back to the global option.\n }\n\n // handle multiple input cases for arrows\n if (newOptions.arrows !== undefined && newOptions.arrows !== null) {\n if (typeof newOptions.arrows === 'string') {\n let arrows = newOptions.arrows.toLowerCase();\n parentOptions.arrows.to.enabled = arrows.indexOf(\"to\") != -1;\n parentOptions.arrows.middle.enabled = arrows.indexOf(\"middle\") != -1;\n parentOptions.arrows.from.enabled = arrows.indexOf(\"from\") != -1;\n }\n else if (typeof newOptions.arrows === 'object') {\n util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'to', allowDeletion, globalOptions.arrows);\n util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'middle', allowDeletion, globalOptions.arrows);\n util.mergeOptions(parentOptions.arrows, newOptions.arrows, 'from', allowDeletion, globalOptions.arrows);\n }\n else {\n throw new Error(\"The arrow newOptions can only be an object or a string. Refer to the documentation. You used:\" + JSON.stringify(newOptions.arrows));\n }\n }\n else if (allowDeletion === true && newOptions.arrows === null) {\n parentOptions.arrows = Object.create(globalOptions.arrows); // this sets the pointer of the option back to the global option.\n }\n\n // handle multiple input cases for color\n if (newOptions.color !== undefined && newOptions.color !== null) {\n // make a copy of the parent object in case this is referring to the global one (due to object create once, then update)\n parentOptions.color = util.deepExtend({}, parentOptions.color, true);\n if (util.isString(newOptions.color)) {\n parentOptions.color.color = newOptions.color;\n parentOptions.color.highlight = newOptions.color;\n parentOptions.color.hover = newOptions.color;\n parentOptions.color.inherit = false;\n }\n else {\n let colorsDefined = false;\n if (newOptions.color.color !== undefined) {parentOptions.color.color = newOptions.color.color; colorsDefined = true;}\n if (newOptions.color.highlight !== undefined) {parentOptions.color.highlight = newOptions.color.highlight; colorsDefined = true;}\n if (newOptions.color.hover !== undefined) {parentOptions.color.hover = newOptions.color.hover; colorsDefined = true;}\n if (newOptions.color.inherit !== undefined) {parentOptions.color.inherit = newOptions.color.inherit;}\n if (newOptions.color.opacity !== undefined) {parentOptions.color.opacity = Math.min(1,Math.max(0,newOptions.color.opacity));}\n\n if (newOptions.color.inherit === undefined && colorsDefined === true) {\n parentOptions.color.inherit = false;\n }\n }\n }\n else if (allowDeletion === true && newOptions.color === null) {\n parentOptions.color = util.bridgeObject(globalOptions.color); // set the object back to the global options\n }\n\n // handle the font settings\n if (newOptions.font !== undefined && newOptions.font !== null) {\n Label.parseOptions(parentOptions.font, newOptions);\n }\n else if (allowDeletion === true && newOptions.font === null) {\n parentOptions.font = util.bridgeObject(globalOptions.font); // set the object back to the global options\n }\n }\n\n choosify(options) {\n this.chooser = true;\n\n let pile = [options, this.options, this.defaultOptions];\n\n let chosen = util.topMost(pile, 'chosen');\n if (typeof chosen === 'boolean') {\n this.chooser = chosen;\n } else if (typeof chosen === 'object') {\n let chosenEdge = util.topMost(pile, ['chosen', 'edge']);\n if ((typeof chosenEdge === 'boolean') || (typeof chosenEdge === 'function')) {\n this.chooser = chosenEdge;\n }\n }\n }\n\n getFormattingValues() {\n let toArrow = (this.options.arrows.to === true) || (this.options.arrows.to.enabled === true)\n let fromArrow = (this.options.arrows.from === true) || (this.options.arrows.from.enabled === true)\n let middleArrow = (this.options.arrows.middle === true) || (this.options.arrows.middle.enabled === true)\n let inheritsColor = this.options.color.inherit;\n let values = {\n toArrow: toArrow,\n toArrowScale: this.options.arrows.to.scaleFactor,\n toArrowType: this.options.arrows.to.type,\n middleArrow: middleArrow,\n middleArrowScale: this.options.arrows.middle.scaleFactor,\n middleArrowType: this.options.arrows.middle.type,\n fromArrow: fromArrow,\n fromArrowScale: this.options.arrows.from.scaleFactor,\n fromArrowType: this.options.arrows.from.type,\n arrowStrikethrough: this.options.arrowStrikethrough,\n color: (inheritsColor? undefined : this.options.color.color),\n inheritsColor: inheritsColor,\n opacity: this.options.color.opacity,\n hidden: this.options.hidden,\n length: this.options.length,\n shadow: this.options.shadow.enabled,\n shadowColor: this.options.shadow.color,\n shadowSize: this.options.shadow.size,\n shadowX: this.options.shadow.x,\n shadowY: this.options.shadow.y,\n dashes: this.options.dashes,\n width: this.options.width\n };\n if (this.selected || this.hover) {\n if (this.chooser === true) {\n if (this.selected) {\n let selectedWidth = this.options.selectionWidth;\n if (typeof selectedWidth === 'function') {\n values.width = selectedWidth(values.width);\n } else if (typeof selectedWidth === 'number') {\n values.width += selectedWidth;\n }\n values.width = Math.max(values.width, 0.3 / this.body.view.scale);\n values.color = this.options.color.highlight;\n values.shadow = this.options.shadow.enabled;\n } else if (this.hover) {\n let hoverWidth = this.options.hoverWidth;\n if (typeof hoverWidth === 'function') {\n values.width = hoverWidth(values.width);\n } else if (typeof hoverWidth === 'number') {\n values.width += hoverWidth;\n }\n values.width = Math.max(values.width, 0.3 / this.body.view.scale);\n values.color = this.options.color.hover;\n values.shadow = this.options.shadow.enabled;\n }\n } else if (typeof this.chooser === 'function') {\n this.chooser(values, this.options.id, this.selected, this.hover);\n if (values.color !== undefined) {\n values.inheritsColor = false;\n }\n if (values.shadow === false) {\n if ((values.shadowColor !== this.options.shadow.color) ||\n (values.shadowSize !== this.options.shadow.size) ||\n (values.shadowX !== this.options.shadow.x) ||\n (values.shadowY !== this.options.shadow.y)) {\n values.shadow = true;\n }\n }\n }\n } else {\n values.shadow = this.options.shadow.enabled;\n values.width = Math.max(values.width, 0.3 / this.body.view.scale);\n }\n return values;\n }\n\n /**\n * update the options in the label module\n */\n updateLabelModule(options) {\n this.labelModule.setOptions(this.options, true);\n if (this.labelModule.baseSize !== undefined) {\n this.baseFontSize = this.labelModule.baseSize;\n }\n this.labelModule.constrain(this.edgeOptions, options, this.defaultOptions);\n this.labelModule.choosify(this.edgeOptions, options, this.defaultOptions);\n }\n\n /**\n * update the edge type, set the options\n * @returns {boolean}\n */\n updateEdgeType() {\n let smooth = this.options.smooth;\n let dataChanged = false;\n let changeInType = true;\n if (this.edgeType !== undefined) {\n if ((((this.edgeType instanceof BezierEdgeDynamic) &&\n (smooth.enabled === true) &&\n (smooth.type === 'dynamic'))) ||\n (((this.edgeType instanceof CubicBezierEdge) &&\n (smooth.enabled === true) &&\n (smooth.type === 'cubicBezier'))) ||\n (((this.edgeType instanceof BezierEdgeStatic) &&\n (smooth.enabled === true) &&\n (smooth.type !== 'dynamic') &&\n (smooth.type !== 'cubicBezier'))) ||\n (((this.edgeType instanceof StraightEdge) &&\n (smooth.type.enabled === false)))) {\n changeInType = false;\n }\n if (changeInType === true) {\n dataChanged = this.cleanup();\n }\n }\n if (changeInType === true) {\n if (smooth.enabled === true) {\n if (smooth.type === 'dynamic') {\n dataChanged = true;\n this.edgeType = new BezierEdgeDynamic(this.options, this.body, this.labelModule);\n } else if (smooth.type === 'cubicBezier') {\n this.edgeType = new CubicBezierEdge(this.options, this.body, this.labelModule);\n } else {\n this.edgeType = new BezierEdgeStatic(this.options, this.body, this.labelModule);\n }\n } else {\n this.edgeType = new StraightEdge(this.options, this.body, this.labelModule);\n }\n } else { // if nothing changes, we just set the options.\n this.edgeType.setOptions(this.options);\n }\n return dataChanged;\n }\n\n /**\n * Connect an edge to its nodes\n */\n connect() {\n this.disconnect();\n\n this.from = this.body.nodes[this.fromId] || undefined;\n this.to = this.body.nodes[this.toId] || undefined;\n this.connected = (this.from !== undefined && this.to !== undefined);\n\n if (this.connected === true) {\n this.from.attachEdge(this);\n this.to.attachEdge(this);\n }\n else {\n if (this.from) {\n this.from.detachEdge(this);\n }\n if (this.to) {\n this.to.detachEdge(this);\n }\n }\n\n this.edgeType.connect();\n }\n\n\n /**\n * Disconnect an edge from its nodes\n */\n disconnect() {\n if (this.from) {\n this.from.detachEdge(this);\n this.from = undefined;\n }\n if (this.to) {\n this.to.detachEdge(this);\n this.to = undefined;\n }\n\n this.connected = false;\n }\n\n\n /**\n * get the title of this edge.\n * @return {string} title The title of the edge, or undefined when no title\n * has been set.\n */\n getTitle() {\n return this.title;\n }\n\n\n /**\n * check if this node is selecte\n * @return {boolean} selected True if node is selected, else false\n */\n isSelected() {\n return this.selected;\n }\n\n\n\n /**\n * Retrieve the value of the edge. Can be undefined\n * @return {Number} value\n */\n getValue() {\n return this.options.value;\n }\n\n\n /**\n * Adjust the value range of the edge. The edge will adjust it's width\n * based on its value.\n * @param {Number} min\n * @param {Number} max\n * @param total\n */\n setValueRange(min, max, total) {\n if (this.options.value !== undefined) {\n var scale = this.options.scaling.customScalingFunction(min, max, total, this.options.value);\n var widthDiff = this.options.scaling.max - this.options.scaling.min;\n if (this.options.scaling.label.enabled === true) {\n var fontDiff = this.options.scaling.label.max - this.options.scaling.label.min;\n this.options.font.size = this.options.scaling.label.min + scale * fontDiff;\n }\n this.options.width = this.options.scaling.min + scale * widthDiff;\n }\n else {\n this.options.width = this.baseWidth;\n this.options.font.size = this.baseFontSize;\n }\n\n this._setInteractionWidths();\n this.updateLabelModule();\n }\n\n _setInteractionWidths() {\n if (typeof this.options.hoverWidth === 'function') {\n this.edgeType.hoverWidth = this.options.hoverWidth(this.options.width);\n } else {\n this.edgeType.hoverWidth = this.options.hoverWidth + this.options.width;\n }\n if (typeof this.options.selectionWidth === 'function') {\n this.edgeType.selectionWidth = this.options.selectionWidth(this.options.width);\n } else {\n this.edgeType.selectionWidth = this.options.selectionWidth + this.options.width;\n }\n }\n\n\n /**\n * Redraw a edge\n * Draw this edge in the given canvas\n * The 2d context of a HTML canvas can be retrieved by canvas.getContext(\"2d\");\n * @param {CanvasRenderingContext2D} ctx\n */\n draw(ctx) {\n let values = this.getFormattingValues();\n if (values.hidden) {\n return;\n }\n\n // get the via node from the edge type\n let viaNode = this.edgeType.getViaNode();\n let arrowData = {};\n\n // restore edge targets to defaults\n this.edgeType.fromPoint = this.edgeType.from;\n this.edgeType.toPoint = this.edgeType.to;\n\n // from and to arrows give a different end point for edges. we set them here\n if (values.fromArrow) {\n arrowData.from = this.edgeType.getArrowData(ctx, 'from', viaNode, this.selected, this.hover, values);\n if (values.arrowStrikethrough === false)\n this.edgeType.fromPoint = arrowData.from.core;\n }\n if (values.toArrow) {\n arrowData.to = this.edgeType.getArrowData(ctx, 'to', viaNode, this.selected, this.hover, values);\n if (values.arrowStrikethrough === false)\n this.edgeType.toPoint = arrowData.to.core;\n }\n\n // the middle arrow depends on the line, which can depend on the to and from arrows so we do this one lastly.\n if (values.middleArrow) {\n arrowData.middle = this.edgeType.getArrowData(ctx,'middle', viaNode, this.selected, this.hover, values);\n }\n\n // draw everything\n this.edgeType.drawLine(ctx, values, this.selected, this.hover, viaNode);\n this.drawArrows(ctx, arrowData, values);\n this.drawLabel (ctx, viaNode);\n }\n\n\n drawArrows(ctx, arrowData, values) {\n if (values.fromArrow) {\n this.edgeType.drawArrowHead(ctx, values, this.selected, this.hover, arrowData.from);\n }\n if (values.middleArrow) {\n this.edgeType.drawArrowHead(ctx, values, this.selected, this.hover, arrowData.middle);\n }\n if (values.toArrow) {\n this.edgeType.drawArrowHead(ctx, values, this.selected, this.hover, arrowData.to);\n }\n }\n\n\n drawLabel(ctx, viaNode) {\n if (this.options.label !== undefined) {\n // set style\n var node1 = this.from;\n var node2 = this.to;\n var selected = (this.from.selected || this.to.selected || this.selected);\n if (node1.id != node2.id) {\n this.labelModule.pointToSelf = false;\n var point = this.edgeType.getPoint(0.5, viaNode);\n ctx.save();\n\n // if the label has to be rotated:\n if (this.options.font.align !== \"horizontal\") {\n this.labelModule.calculateLabelSize(ctx, selected, this.hover, point.x, point.y);\n ctx.translate(point.x, this.labelModule.size.yLine);\n this._rotateForLabelAlignment(ctx);\n }\n\n // draw the label\n this.labelModule.draw(ctx, point.x, point.y, selected, this.hover);\n ctx.restore();\n }\n else {\n // Ignore the orientations.\n this.labelModule.pointToSelf = true;\n var x, y;\n var radius = this.options.selfReferenceSize;\n if (node1.shape.width > node1.shape.height) {\n x = node1.x + node1.shape.width * 0.5;\n y = node1.y - radius;\n }\n else {\n x = node1.x + radius;\n y = node1.y - node1.shape.height * 0.5;\n }\n point = this._pointOnCircle(x, y, radius, 0.125);\n this.labelModule.draw(ctx, point.x, point.y, selected, this.hover);\n }\n }\n }\n\n\n /**\n * Check if this object is overlapping with the provided object\n * @param {Object} obj an object with parameters left, top\n * @return {boolean} True if location is located on the edge\n */\n isOverlappingWith(obj) {\n if (this.connected) {\n var distMax = 10;\n var xFrom = this.from.x;\n var yFrom = this.from.y;\n var xTo = this.to.x;\n var yTo = this.to.y;\n var xObj = obj.left;\n var yObj = obj.top;\n\n var dist = this.edgeType.getDistanceToEdge(xFrom, yFrom, xTo, yTo, xObj, yObj);\n\n return (dist < distMax);\n }\n else {\n return false\n }\n }\n\n\n /**\n * Rotates the canvas so the text is most readable\n * @param {CanvasRenderingContext2D} ctx\n * @private\n */\n _rotateForLabelAlignment(ctx) {\n var dy = this.from.y - this.to.y;\n var dx = this.from.x - this.to.x;\n var angleInDegrees = Math.atan2(dy, dx);\n\n // rotate so label it is readable\n if ((angleInDegrees < -1 && dx < 0) || (angleInDegrees > 0 && dx < 0)) {\n angleInDegrees = angleInDegrees + Math.PI;\n }\n\n ctx.rotate(angleInDegrees);\n }\n\n\n /**\n * Get a point on a circle\n * @param {Number} x\n * @param {Number} y\n * @param {Number} radius\n * @param {Number} percentage. Value between 0 (line start) and 1 (line end)\n * @return {Object} point\n * @private\n */\n _pointOnCircle(x, y, radius, percentage) {\n var angle = percentage * 2 * Math.PI;\n return {\n x: x + radius * Math.cos(angle),\n y: y - radius * Math.sin(angle)\n }\n }\n\n\n select() {\n this.selected = true;\n }\n\n\n unselect() {\n this.selected = false;\n }\n\n\n /**\n * cleans all required things on delete\n * @returns {*}\n */\n cleanup() {\n return this.edgeType.cleanup();\n }\n}\n\nexport default Edge;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/Edge.js","import CubicBezierEdgeBase from './util/CubicBezierEdgeBase'\n\nclass CubicBezierEdge extends CubicBezierEdgeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule);\n }\n\n /**\n * Draw a line between two nodes\n * @param {CanvasRenderingContext2D} ctx\n * @private\n */\n _line(ctx, values, viaNodes) {\n // get the coordinates of the support points.\n let via1 = viaNodes[0];\n let via2 = viaNodes[1];\n\n // start drawing the line.\n ctx.beginPath();\n ctx.moveTo(this.fromPoint.x, this.fromPoint.y);\n\n // fallback to normal straight edges\n if (viaNodes === undefined || via1.x === undefined) {\n ctx.lineTo(this.toPoint.x, this.toPoint.y);\n }\n else {\n ctx.bezierCurveTo(via1.x, via1.y, via2.x, via2.y, this.toPoint.x, this.toPoint.y);\n }\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n ctx.stroke();\n this.disableShadow(ctx, values);\n }\n\n _getViaCoordinates() {\n let dx = this.from.x - this.to.x;\n let dy = this.from.y - this.to.y;\n\n let x1, y1, x2, y2;\n let roundness = this.options.smooth.roundness;\n\n // horizontal if x > y or if direction is forced or if direction is horizontal\n if ((Math.abs(dx) > Math.abs(dy) || this.options.smooth.forceDirection === true || this.options.smooth.forceDirection === 'horizontal') && this.options.smooth.forceDirection !== 'vertical') {\n y1 = this.from.y;\n y2 = this.to.y;\n x1 = this.from.x - roundness * dx;\n x2 = this.to.x + roundness * dx;\n }\n else {\n y1 = this.from.y - roundness * dy;\n y2 = this.to.y + roundness * dy;\n x1 = this.from.x;\n x2 = this.to.x;\n }\n\n return [{x: x1, y: y1},{x: x2, y: y2}];\n }\n\n getViaNode() {\n return this._getViaCoordinates();\n }\n\n _findBorderPosition(nearNode, ctx) {\n return this._findBorderPositionBezier(nearNode, ctx);\n }\n\n _getDistanceToEdge(x1, y1, x2, y2, x3, y3, [via1, via2] = this._getViaCoordinates()) { // x3,y3 is the point\n return this._getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, via1, via2);\n }\n\n /**\n * Combined function of pointOnLine and pointOnBezier. This gives the coordinates of a point on the line at a certain percentage of the way\n * @param percentage\n * @param via\n * @returns {{x: number, y: number}}\n * @private\n */\n getPoint(percentage, [via1, via2] = this._getViaCoordinates()) {\n let t = percentage;\n let vec = [];\n vec[0] = Math.pow(1 - t, 3);\n vec[1] = 3 * t * Math.pow(1 - t, 2);\n vec[2] = 3 * Math.pow(t,2) * (1 - t);\n vec[3] = Math.pow(t, 3);\n let x = vec[0] * this.fromPoint.x + vec[1] * via1.x + vec[2] * via2.x + vec[3] * this.toPoint.x;\n let y = vec[0] * this.fromPoint.y + vec[1] * via1.y + vec[2] * via2.y + vec[3] * this.toPoint.y;\n\n return {x: x, y: y};\n }\n}\n\n\nexport default CubicBezierEdge;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/edges/CubicBezierEdge.js","import BezierEdgeBase from './BezierEdgeBase'\n\nclass CubicBezierEdgeBase extends BezierEdgeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule);\n }\n\n /**\n * Calculate the distance between a point (x3,y3) and a line segment from\n * (x1,y1) to (x2,y2).\n * http://stackoverflow.com/questions/849211/shortest-distancae-between-a-point-and-a-line-segment\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n * @param {number} x1 from x\n * @param {number} y1 from y\n * @param {number} x2 to x\n * @param {number} y2 to y\n * @param {number} x3 point to check x\n * @param {number} y3 point to check y\n * @private\n */\n _getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, via1, via2) { // x3,y3 is the point\n let minDistance = 1e9;\n let distance;\n let i, t, x, y;\n let lastX = x1;\n let lastY = y1;\n let vec = [0,0,0,0]\n for (i = 1; i < 10; i++) {\n t = 0.1 * i;\n vec[0] = Math.pow(1 - t, 3);\n vec[1] = 3 * t * Math.pow(1 - t, 2);\n vec[2] = 3 * Math.pow(t,2) * (1 - t);\n vec[3] = Math.pow(t, 3);\n x = vec[0] * x1 + vec[1] * via1.x + vec[2] * via2.x + vec[3] * x2;\n y = vec[0] * y1 + vec[1] * via1.y + vec[2] * via2.y + vec[3] * y2;\n if (i > 0) {\n distance = this._getDistanceToLine(lastX, lastY, x, y, x3, y3);\n minDistance = distance < minDistance ? distance : minDistance;\n }\n lastX = x;\n lastY = y;\n }\n\n return minDistance;\n }\n}\n\nexport default CubicBezierEdgeBase;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/edges/util/CubicBezierEdgeBase.js","import EdgeBase from './EdgeBase'\n\nclass BezierEdgeBase extends EdgeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule);\n }\n\n /**\n * This function uses binary search to look for the point where the bezier curve crosses the border of the node.\n *\n * @param nearNode\n * @param ctx\n * @param viaNode\n * @param nearNode\n * @param ctx\n * @param viaNode\n * @param nearNode\n * @param ctx\n * @param viaNode\n */\n _findBorderPositionBezier(nearNode, ctx, viaNode = this._getViaCoordinates()) {\n var maxIterations = 10;\n var iteration = 0;\n var low = 0;\n var high = 1;\n var pos, angle, distanceToBorder, distanceToPoint, difference;\n var threshold = 0.2;\n var node = this.to;\n var from = false;\n if (nearNode.id === this.from.id) {\n node = this.from;\n from = true;\n }\n\n while (low <= high && iteration < maxIterations) {\n var middle = (low + high) * 0.5;\n\n pos = this.getPoint(middle, viaNode);\n angle = Math.atan2((node.y - pos.y), (node.x - pos.x));\n distanceToBorder = node.distanceToBorder(ctx, angle);\n distanceToPoint = Math.sqrt(Math.pow(pos.x - node.x, 2) + Math.pow(pos.y - node.y, 2));\n difference = distanceToBorder - distanceToPoint;\n if (Math.abs(difference) < threshold) {\n break; // found\n }\n else if (difference < 0) { // distance to nodes is larger than distance to border --> t needs to be bigger if we're looking at the to node.\n if (from === false) {\n low = middle;\n }\n else {\n high = middle;\n }\n }\n else {\n if (from === false) {\n high = middle;\n }\n else {\n low = middle;\n }\n }\n\n iteration++;\n }\n pos.t = middle;\n\n return pos;\n }\n\n\n\n /**\n * Calculate the distance between a point (x3,y3) and a line segment from\n * (x1,y1) to (x2,y2).\n * http://stackoverflow.com/questions/849211/shortest-distancae-between-a-point-and-a-line-segment\n * @param {number} x1 from x\n * @param {number} y1 from y\n * @param {number} x2 to x\n * @param {number} y2 to y\n * @param {number} x3 point to check x\n * @param {number} y3 point to check y\n * @private\n */\n _getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, via) { // x3,y3 is the point\n let minDistance = 1e9;\n let distance;\n let i, t, x, y;\n let lastX = x1;\n let lastY = y1;\n for (i = 1; i < 10; i++) {\n t = 0.1 * i;\n x = Math.pow(1 - t, 2) * x1 + (2 * t * (1 - t)) * via.x + Math.pow(t, 2) * x2;\n y = Math.pow(1 - t, 2) * y1 + (2 * t * (1 - t)) * via.y + Math.pow(t, 2) * y2;\n if (i > 0) {\n distance = this._getDistanceToLine(lastX, lastY, x, y, x3, y3);\n minDistance = distance < minDistance ? distance : minDistance;\n }\n lastX = x;\n lastY = y;\n }\n\n return minDistance;\n }\n}\n\nexport default BezierEdgeBase;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/edges/util/BezierEdgeBase.js","let util = require(\"../../../../../util\");\n\nclass EdgeBase {\n constructor(options, body, labelModule) {\n this.body = body;\n this.labelModule = labelModule;\n this.options = {};\n this.setOptions(options);\n this.colorDirty = true;\n this.color = {};\n this.selectionWidth = 2;\n this.hoverWidth = 1.5;\n this.fromPoint = this.from;\n this.toPoint = this.to;\n }\n\n connect() {\n this.from = this.body.nodes[this.options.from];\n this.to = this.body.nodes[this.options.to];\n }\n\n cleanup() {\n return false;\n }\n\n setOptions(options) {\n this.options = options;\n this.from = this.body.nodes[this.options.from];\n this.to = this.body.nodes[this.options.to];\n this.id = this.options.id;\n }\n\n /**\n * Redraw a edge as a line\n * Draw this edge in the given canvas\n * The 2d context of a HTML canvas can be retrieved by canvas.getContext(\"2d\");\n * @param {CanvasRenderingContext2D} ctx\n * @private\n */\n drawLine(ctx, values, selected, hover, viaNode) {\n // set style\n ctx.strokeStyle = this.getColor(ctx, values, selected, hover);\n ctx.lineWidth = values.width;\n\n if (values.dashes !== false) {\n this._drawDashedLine(ctx, values, viaNode);\n }\n else {\n this._drawLine(ctx, values, viaNode);\n }\n }\n\n\n _drawLine(ctx, values, viaNode, fromPoint, toPoint) {\n if (this.from != this.to) {\n // draw line\n this._line(ctx, values, viaNode, fromPoint, toPoint);\n }\n else {\n let [x,y,radius] = this._getCircleData(ctx, values);\n this._circle(ctx, values, x, y, radius);\n }\n }\n\n _drawDashedLine(ctx, values, viaNode, fromPoint, toPoint) {\n ctx.lineCap = 'round';\n let pattern = [5,5];\n if (Array.isArray(values.dashes) === true) {\n pattern = values.dashes;\n }\n\n // only firefox and chrome support this method, else we use the legacy one.\n if (ctx.setLineDash !== undefined) {\n ctx.save();\n\n // set dash settings for chrome or firefox\n ctx.setLineDash(pattern);\n ctx.lineDashOffset = 0;\n\n // draw the line\n if (this.from != this.to) {\n // draw line\n this._line(ctx, values, viaNode);\n }\n else {\n let [x,y,radius] = this._getCircleData(ctx, values);\n this._circle(ctx, values, x, y, radius);\n }\n\n // restore the dash settings.\n ctx.setLineDash([0]);\n ctx.lineDashOffset = 0;\n ctx.restore();\n }\n else { // unsupporting smooth lines\n if (this.from != this.to) {\n // draw line\n ctx.dashedLine(this.from.x, this.from.y, this.to.x, this.to.y, pattern);\n }\n else {\n let [x,y,radius] = this._getCircleData(ctx, values);\n this._circle(ctx, values, x, y, radius);\n }\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n\n ctx.stroke();\n\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n }\n }\n\n\n findBorderPosition(nearNode, ctx, options) {\n if (this.from != this.to) {\n return this._findBorderPosition(nearNode, ctx, options);\n }\n else {\n return this._findBorderPositionCircle(nearNode, ctx, options);\n }\n }\n\n findBorderPositions(ctx) {\n let from = {};\n let to = {};\n if (this.from != this.to) {\n from = this._findBorderPosition(this.from, ctx);\n to = this._findBorderPosition(this.to, ctx);\n }\n else {\n let [x,y,radius] = this._getCircleData(ctx);\n\n from = this._findBorderPositionCircle(this.from, ctx, {x, y, low:0.25, high:0.6, direction:-1});\n to = this._findBorderPositionCircle(this.from, ctx, {x, y, low:0.6, high:0.8, direction:1});\n }\n return {from, to};\n }\n\n _getCircleData(ctx) {\n let x, y;\n let node = this.from;\n let radius = this.options.selfReferenceSize;\n\n if (ctx !== undefined) {\n if (node.shape.width === undefined) {\n node.shape.resize(ctx);\n }\n }\n\n // get circle coordinates\n if (node.shape.width > node.shape.height) {\n x = node.x + node.shape.width * 0.5;\n y = node.y - radius;\n }\n else {\n x = node.x + radius;\n y = node.y - node.shape.height * 0.5;\n }\n return [x,y,radius];\n }\n\n /**\n * Get a point on a circle\n * @param {Number} x\n * @param {Number} y\n * @param {Number} radius\n * @param {Number} percentage. Value between 0 (line start) and 1 (line end)\n * @return {Object} point\n * @private\n */\n _pointOnCircle(x, y, radius, percentage) {\n let angle = percentage * 2 * Math.PI;\n return {\n x: x + radius * Math.cos(angle),\n y: y - radius * Math.sin(angle)\n }\n }\n\n /**\n * This function uses binary search to look for the point where the circle crosses the border of the node.\n * @param node\n * @param ctx\n * @param options\n * @returns {*}\n * @private\n */\n _findBorderPositionCircle(node, ctx, options) {\n let x = options.x;\n let y = options.y;\n let low = options.low;\n let high = options.high;\n let direction = options.direction;\n\n let maxIterations = 10;\n let iteration = 0;\n let radius = this.options.selfReferenceSize;\n let pos, angle, distanceToBorder, distanceToPoint, difference;\n let threshold = 0.05;\n let middle = (low + high) * 0.5;\n\n while (low <= high && iteration < maxIterations) {\n middle = (low + high) * 0.5;\n\n pos = this._pointOnCircle(x, y, radius, middle);\n angle = Math.atan2((node.y - pos.y), (node.x - pos.x));\n distanceToBorder = node.distanceToBorder(ctx, angle);\n distanceToPoint = Math.sqrt(Math.pow(pos.x - node.x, 2) + Math.pow(pos.y - node.y, 2));\n difference = distanceToBorder - distanceToPoint;\n if (Math.abs(difference) < threshold) {\n break; // found\n }\n else if (difference > 0) { // distance to nodes is larger than distance to border --> t needs to be bigger if we're looking at the to node.\n if (direction > 0) {\n low = middle;\n }\n else {\n high = middle;\n }\n }\n else {\n if (direction > 0) {\n high = middle;\n }\n else {\n low = middle;\n }\n }\n iteration++;\n\n }\n pos.t = middle;\n\n return pos;\n }\n\n /**\n * Get the line width of the edge. Depends on width and whether one of the\n * connected nodes is selected.\n * @return {Number} width\n * @private\n */\n getLineWidth(selected, hover) {\n if (selected === true) {\n return Math.max(this.selectionWidth, 0.3 / this.body.view.scale);\n }\n else {\n if (hover === true) {\n return Math.max(this.hoverWidth, 0.3 / this.body.view.scale);\n }\n else {\n return Math.max(this.options.width, 0.3 / this.body.view.scale);\n }\n }\n }\n\n\n getColor(ctx, values, selected, hover) {\n if (values.inheritsColor !== false) {\n // when this is a loop edge, just use the 'from' method\n if ((values.inheritsColor === 'both') && (this.from.id !== this.to.id)) {\n let grd = ctx.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y);\n let fromColor, toColor;\n fromColor = this.from.options.color.highlight.border;\n toColor = this.to.options.color.highlight.border;\n\n if ((this.from.selected === false) && (this.to.selected === false)) {\n fromColor = util.overrideOpacity(this.from.options.color.border, values.opacity);\n toColor = util.overrideOpacity(this.to.options.color.border, values.opacity);\n }\n else if ((this.from.selected === true) && (this.to.selected === false)) {\n toColor = this.to.options.color.border;\n }\n else if ((this.from.selected === false) && (this.to.selected === true)) {\n fromColor = this.from.options.color.border;\n }\n grd.addColorStop(0, fromColor);\n grd.addColorStop(1, toColor);\n\n // -------------------- this returns -------------------- //\n return grd;\n }\n\n if (values.inheritsColor === \"to\") {\n return util.overrideOpacity(this.to.options.color.border, values.opacity);\n } else { // \"from\"\n return util.overrideOpacity(this.from.options.color.border, values.opacity);\n }\n } else {\n return util.overrideOpacity(values.color, values.opacity);\n }\n }\n\n /**\n * Draw a line from a node to itself, a circle\n * @param {CanvasRenderingContext2D} ctx\n * @param {Number} x\n * @param {Number} y\n * @param {Number} radius\n * @private\n */\n _circle(ctx, values, x, y, radius) {\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n\n // draw a circle\n ctx.beginPath();\n ctx.arc(x, y, radius, 0, 2 * Math.PI, false);\n ctx.stroke();\n\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n }\n\n\n /**\n * Calculate the distance between a point (x3,y3) and a line segment from\n * (x1,y1) to (x2,y2).\n * http://stackoverflow.com/questions/849211/shortest-distancae-between-a-point-and-a-line-segment\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @private\n */\n getDistanceToEdge(x1, y1, x2, y2, x3, y3, via, values) { // x3,y3 is the point\n let returnValue = 0;\n if (this.from != this.to) {\n returnValue = this._getDistanceToEdge(x1, y1, x2, y2, x3, y3, via)\n }\n else {\n let [x,y,radius] = this._getCircleData(undefined, values);\n let dx = x - x3;\n let dy = y - y3;\n returnValue = Math.abs(Math.sqrt(dx * dx + dy * dy) - radius);\n }\n\n if (this.labelModule.size.left < x3 &&\n this.labelModule.size.left + this.labelModule.size.width > x3 &&\n this.labelModule.size.top < y3 &&\n this.labelModule.size.top + this.labelModule.size.height > y3) {\n return 0;\n }\n else {\n return returnValue;\n }\n }\n\n _getDistanceToLine(x1, y1, x2, y2, x3, y3) {\n let px = x2 - x1;\n let py = y2 - y1;\n let something = px * px + py * py;\n let u = ((x3 - x1) * px + (y3 - y1) * py) / something;\n\n if (u > 1) {\n u = 1;\n }\n else if (u < 0) {\n u = 0;\n }\n\n let x = x1 + u * px;\n let y = y1 + u * py;\n let dx = x - x3;\n let dy = y - y3;\n\n //# Note: If the actual distance does not matter,\n //# if you only want to compare what this function\n //# returns to other results of this function, you\n //# can just return the squared distance instead\n //# (i.e. remove the sqrt) to gain a little performance\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n\n /**\n *\n * @param ctx\n * @param position\n * @param viaNode\n */\n getArrowData(ctx, position, viaNode, selected, hover, values) {\n // set lets\n let angle;\n let arrowPoint;\n let node1;\n let node2;\n let guideOffset;\n let scaleFactor;\n let type;\n let lineWidth = values.width;\n\n if (position === 'from') {\n node1 = this.from;\n node2 = this.to;\n guideOffset = 0.1;\n scaleFactor = values.fromArrowScale;\n type = values.fromArrowType;\n }\n else if (position === 'to') {\n node1 = this.to;\n node2 = this.from;\n guideOffset = -0.1;\n scaleFactor = values.toArrowScale;\n type = values.toArrowType;\n }\n else {\n node1 = this.to;\n node2 = this.from;\n scaleFactor = values.middleArrowScale;\n type = values.middleArrowType;\n }\n\n // if not connected to itself\n if (node1 != node2) {\n if (position !== 'middle') {\n // draw arrow head\n if (this.options.smooth.enabled === true) {\n arrowPoint = this.findBorderPosition(node1, ctx, { via: viaNode });\n let guidePos = this.getPoint(Math.max(0.0, Math.min(1.0, arrowPoint.t + guideOffset)), viaNode);\n angle = Math.atan2((arrowPoint.y - guidePos.y), (arrowPoint.x - guidePos.x));\n } else {\n angle = Math.atan2((node1.y - node2.y), (node1.x - node2.x));\n arrowPoint = this.findBorderPosition(node1, ctx);\n }\n } else {\n angle = Math.atan2((node1.y - node2.y), (node1.x - node2.x));\n arrowPoint = this.getPoint(0.5, viaNode); // this is 0.6 to account for the size of the arrow.\n }\n } else {\n // draw circle\n let [x,y,radius] = this._getCircleData(ctx);\n\n if (position === 'from') {\n arrowPoint = this.findBorderPosition(this.from, ctx, { x, y, low: 0.25, high: 0.6, direction: -1 });\n angle = arrowPoint.t * -2 * Math.PI + 1.5 * Math.PI + 0.1 * Math.PI;\n } else if (position === 'to') {\n arrowPoint = this.findBorderPosition(this.from, ctx, { x, y, low: 0.6, high: 1.0, direction: 1 });\n angle = arrowPoint.t * -2 * Math.PI + 1.5 * Math.PI - 1.1 * Math.PI;\n } else {\n arrowPoint = this._pointOnCircle(x, y, radius, 0.175);\n angle = 3.9269908169872414; // === 0.175 * -2 * Math.PI + 1.5 * Math.PI + 0.1 * Math.PI;\n }\n }\n\n let length = 15 * scaleFactor + 3 * lineWidth; // 3* lineWidth is the width of the edge.\n\n var xi = arrowPoint.x - length * 0.9 * Math.cos(angle);\n var yi = arrowPoint.y - length * 0.9 * Math.sin(angle);\n let arrowCore = { x: xi, y: yi };\n\n return { point: arrowPoint, core: arrowCore, angle: angle, length: length, type: type };\n }\n\n /**\n *\n * @param ctx\n * @param selected\n * @param hover\n * @param arrowData\n */\n drawArrowHead(ctx, values, selected, hover, arrowData) {\n // set style\n ctx.strokeStyle = this.getColor(ctx, values, selected, hover);\n ctx.fillStyle = ctx.strokeStyle;\n ctx.lineWidth = values.width;\n\n if (arrowData.type && arrowData.type.toLowerCase() === 'circle') {\n // draw circle at the end of the line\n ctx.circleEndpoint(arrowData.point.x, arrowData.point.y, arrowData.angle, arrowData.length);\n } else {\n // draw arrow at the end of the line\n ctx.arrowEndpoint(arrowData.point.x, arrowData.point.y, arrowData.angle, arrowData.length);\n }\n\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n ctx.fill();\n // disable shadows for other elements.\n this.disableShadow(ctx, values);\n }\n\n\n enableShadow(ctx, values) {\n if (values.shadow === true) {\n ctx.shadowColor = values.shadowColor;\n ctx.shadowBlur = values.shadowSize;\n ctx.shadowOffsetX = values.shadowX;\n ctx.shadowOffsetY = values.shadowY;\n }\n }\n\n disableShadow(ctx, values) {\n if (values.shadow === true) {\n ctx.shadowColor = 'rgba(0,0,0,0)';\n ctx.shadowBlur = 0;\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n }\n }\n}\n\nexport default EdgeBase;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/edges/util/EdgeBase.js","import BezierEdgeBase from './util/BezierEdgeBase'\n\nclass BezierEdgeDynamic extends BezierEdgeBase {\n constructor(options, body, labelModule) {\n //this.via = undefined; // Here for completeness but not allowed to defined before super() is invoked.\n super(options, body, labelModule); // --> this calls the setOptions below\n this._boundFunction = () => {this.positionBezierNode();};\n this.body.emitter.on(\"_repositionBezierNodes\", this._boundFunction);\n }\n\n setOptions(options) {\n // check if the physics has changed.\n let physicsChange = false;\n if (this.options.physics !== options.physics) {\n physicsChange = true;\n }\n\n // set the options and the to and from nodes\n this.options = options;\n this.id = this.options.id;\n this.from = this.body.nodes[this.options.from];\n this.to = this.body.nodes[this.options.to];\n\n // setup the support node and connect\n this.setupSupportNode();\n this.connect();\n\n // when we change the physics state of the edge, we reposition the support node.\n if (physicsChange === true) {\n this.via.setOptions({physics: this.options.physics})\n this.positionBezierNode();\n }\n }\n\n connect() {\n this.from = this.body.nodes[this.options.from];\n this.to = this.body.nodes[this.options.to];\n if (this.from === undefined || this.to === undefined || this.options.physics === false) {\n this.via.setOptions({physics:false})\n }\n else {\n // fix weird behaviour where a self referencing node has physics enabled\n if (this.from.id === this.to.id) {\n this.via.setOptions({physics: false})\n }\n else {\n this.via.setOptions({physics: true})\n }\n }\n }\n\n /**\n * remove the support nodes\n * @returns {boolean}\n */\n cleanup() {\n this.body.emitter.off(\"_repositionBezierNodes\", this._boundFunction);\n if (this.via !== undefined) {\n delete this.body.nodes[this.via.id];\n this.via = undefined;\n return true;\n }\n return false;\n }\n\n /**\n * Bezier curves require an anchor point to calculate the smooth flow. These points are nodes. These nodes are invisible but\n * are used for the force calculation.\n *\n * The changed data is not called, if needed, it is returned by the main edge constructor.\n * @private\n */\n setupSupportNode() {\n if (this.via === undefined) {\n var nodeId = \"edgeId:\" + this.id;\n var node = this.body.functions.createNode({\n id: nodeId,\n shape: 'circle',\n physics:true,\n hidden:true\n });\n this.body.nodes[nodeId] = node;\n this.via = node;\n this.via.parentEdgeId = this.id;\n this.positionBezierNode();\n }\n }\n\n positionBezierNode() {\n if (this.via !== undefined && this.from !== undefined && this.to !== undefined) {\n this.via.x = 0.5 * (this.from.x + this.to.x);\n this.via.y = 0.5 * (this.from.y + this.to.y);\n }\n else if (this.via !== undefined) {\n this.via.x = 0;\n this.via.y = 0;\n }\n }\n\n /**\n * Draw a line between two nodes\n * @param {CanvasRenderingContext2D} ctx\n * @private\n */\n _line(ctx, values, viaNode) {\n // draw a straight line\n ctx.beginPath();\n ctx.moveTo(this.fromPoint.x, this.fromPoint.y);\n // fallback to normal straight edges\n if (viaNode.x === undefined) {\n ctx.lineTo(this.toPoint.x, this.toPoint.y);\n }\n else {\n ctx.quadraticCurveTo(viaNode.x, viaNode.y, this.toPoint.x, this.toPoint.y);\n }\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n ctx.stroke();\n this.disableShadow(ctx, values);\n }\n\n getViaNode() {\n return this.via;\n }\n\n\n /**\n * Combined function of pointOnLine and pointOnBezier. This gives the coordinates of a point on the line at a certain percentage of the way\n * @param percentage\n * @param viaNode\n * @returns {{x: number, y: number}}\n * @private\n */\n getPoint(percentage, viaNode = this.via) {\n let t = percentage;\n let x, y;\n if (this.from === this.to){\n let [cx,cy,cr] = this._getCircleData(this.from)\n let a = 2 * Math.PI * (1 - t);\n x = cx + cr * Math.sin(a);\n y = cy + cr - cr * (1 - Math.cos(a));\n } else {\n x = Math.pow(1 - t, 2) * this.fromPoint.x + 2 * t * (1 - t) * viaNode.x + Math.pow(t, 2) * this.toPoint.x;\n y = Math.pow(1 - t, 2) * this.fromPoint.y + 2 * t * (1 - t) * viaNode.y + Math.pow(t, 2) * this.toPoint.y;\n }\n\n return {x: x, y: y};\n }\n\n _findBorderPosition(nearNode, ctx) {\n return this._findBorderPositionBezier(nearNode, ctx, this.via);\n }\n\n _getDistanceToEdge(x1, y1, x2, y2, x3, y3) { // x3,y3 is the point\n return this._getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, this.via);\n }\n\n\n}\n\n\nexport default BezierEdgeDynamic;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/edges/BezierEdgeDynamic.js","import BezierEdgeBase from './util/BezierEdgeBase'\n\nclass BezierEdgeStatic extends BezierEdgeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule);\n }\n\n /**\n * Draw a line between two nodes\n * @param {CanvasRenderingContext2D} ctx\n * @private\n */\n _line(ctx, values, viaNode) {\n // draw a straight line\n ctx.beginPath();\n ctx.moveTo(this.fromPoint.x, this.fromPoint.y);\n\n // fallback to normal straight edges\n if (viaNode.x === undefined) {\n ctx.lineTo(this.toPoint.x, this.toPoint.y);\n }\n else {\n ctx.quadraticCurveTo(viaNode.x, viaNode.y, this.toPoint.x, this.toPoint.y);\n }\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n ctx.stroke();\n this.disableShadow(ctx, values);\n }\n\n getViaNode() {\n return this._getViaCoordinates();\n }\n\n\n /**\n * We do not use the to and fromPoints here to make the via nodes the same as edges without arrows.\n * @returns {{x: undefined, y: undefined}}\n * @private\n */\n _getViaCoordinates() {\n let xVia = undefined;\n let yVia = undefined;\n let factor = this.options.smooth.roundness;\n let type = this.options.smooth.type;\n let dx = Math.abs(this.from.x - this.to.x);\n let dy = Math.abs(this.from.y - this.to.y);\n if (type === 'discrete' || type === 'diagonalCross') {\n if (Math.abs(this.from.x - this.to.x) <= Math.abs(this.from.y - this.to.y)) {\n if (this.from.y >= this.to.y) {\n if (this.from.x <= this.to.x) {\n xVia = this.from.x + factor * dy;\n yVia = this.from.y - factor * dy;\n }\n else if (this.from.x > this.to.x) {\n xVia = this.from.x - factor * dy;\n yVia = this.from.y - factor * dy;\n }\n }\n else if (this.from.y < this.to.y) {\n if (this.from.x <= this.to.x) {\n xVia = this.from.x + factor * dy;\n yVia = this.from.y + factor * dy;\n }\n else if (this.from.x > this.to.x) {\n xVia = this.from.x - factor * dy;\n yVia = this.from.y + factor * dy;\n }\n }\n if (type === \"discrete\") {\n xVia = dx < factor * dy ? this.from.x : xVia;\n }\n }\n else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) {\n if (this.from.y >= this.to.y) {\n if (this.from.x <= this.to.x) {\n xVia = this.from.x + factor * dx;\n yVia = this.from.y - factor * dx;\n }\n else if (this.from.x > this.to.x) {\n xVia = this.from.x - factor * dx;\n yVia = this.from.y - factor * dx;\n }\n }\n else if (this.from.y < this.to.y) {\n if (this.from.x <= this.to.x) {\n xVia = this.from.x + factor * dx;\n yVia = this.from.y + factor * dx;\n }\n else if (this.from.x > this.to.x) {\n xVia = this.from.x - factor * dx;\n yVia = this.from.y + factor * dx;\n }\n }\n if (type === \"discrete\") {\n yVia = dy < factor * dx ? this.from.y : yVia;\n }\n }\n }\n else if (type === \"straightCross\") {\n if (Math.abs(this.from.x - this.to.x) <= Math.abs(this.from.y - this.to.y)) { // up - down\n xVia = this.from.x;\n if (this.from.y < this.to.y) {\n yVia = this.to.y - (1 - factor) * dy;\n }\n else {\n yVia = this.to.y + (1 - factor) * dy;\n }\n }\n else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { // left - right\n if (this.from.x < this.to.x) {\n xVia = this.to.x - (1 - factor) * dx;\n }\n else {\n xVia = this.to.x + (1 - factor) * dx;\n }\n yVia = this.from.y;\n }\n }\n else if (type === 'horizontal') {\n if (this.from.x < this.to.x) {\n xVia = this.to.x - (1 - factor) * dx;\n }\n else {\n xVia = this.to.x + (1 - factor) * dx;\n }\n yVia = this.from.y;\n }\n else if (type === 'vertical') {\n xVia = this.from.x;\n if (this.from.y < this.to.y) {\n yVia = this.to.y - (1 - factor) * dy;\n }\n else {\n yVia = this.to.y + (1 - factor) * dy;\n }\n }\n else if (type === 'curvedCW') {\n dx = this.to.x - this.from.x;\n dy = this.from.y - this.to.y;\n let radius = Math.sqrt(dx * dx + dy * dy);\n let pi = Math.PI;\n\n let originalAngle = Math.atan2(dy, dx);\n let myAngle = (originalAngle + ((factor * 0.5) + 0.5) * pi) % (2 * pi);\n\n xVia = this.from.x + (factor * 0.5 + 0.5) * radius * Math.sin(myAngle);\n yVia = this.from.y + (factor * 0.5 + 0.5) * radius * Math.cos(myAngle);\n }\n else if (type === 'curvedCCW') {\n dx = this.to.x - this.from.x;\n dy = this.from.y - this.to.y;\n let radius = Math.sqrt(dx * dx + dy * dy);\n let pi = Math.PI;\n\n let originalAngle = Math.atan2(dy, dx);\n let myAngle = (originalAngle + ((-factor * 0.5) + 0.5) * pi) % (2 * pi);\n\n xVia = this.from.x + (factor * 0.5 + 0.5) * radius * Math.sin(myAngle);\n yVia = this.from.y + (factor * 0.5 + 0.5) * radius * Math.cos(myAngle);\n }\n else { // continuous\n if (Math.abs(this.from.x - this.to.x) <= Math.abs(this.from.y - this.to.y)) {\n if (this.from.y >= this.to.y) {\n if (this.from.x <= this.to.x) {\n xVia = this.from.x + factor * dy;\n yVia = this.from.y - factor * dy;\n xVia = this.to.x < xVia ? this.to.x : xVia;\n }\n else if (this.from.x > this.to.x) {\n xVia = this.from.x - factor * dy;\n yVia = this.from.y - factor * dy;\n xVia = this.to.x > xVia ? this.to.x : xVia;\n }\n }\n else if (this.from.y < this.to.y) {\n if (this.from.x <= this.to.x) {\n xVia = this.from.x + factor * dy;\n yVia = this.from.y + factor * dy;\n xVia = this.to.x < xVia ? this.to.x : xVia;\n }\n else if (this.from.x > this.to.x) {\n xVia = this.from.x - factor * dy;\n yVia = this.from.y + factor * dy;\n xVia = this.to.x > xVia ? this.to.x : xVia;\n }\n }\n }\n else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) {\n if (this.from.y >= this.to.y) {\n if (this.from.x <= this.to.x) {\n xVia = this.from.x + factor * dx;\n yVia = this.from.y - factor * dx;\n yVia = this.to.y > yVia ? this.to.y : yVia;\n }\n else if (this.from.x > this.to.x) {\n xVia = this.from.x - factor * dx;\n yVia = this.from.y - factor * dx;\n yVia = this.to.y > yVia ? this.to.y : yVia;\n }\n }\n else if (this.from.y < this.to.y) {\n if (this.from.x <= this.to.x) {\n xVia = this.from.x + factor * dx;\n yVia = this.from.y + factor * dx;\n yVia = this.to.y < yVia ? this.to.y : yVia;\n }\n else if (this.from.x > this.to.x) {\n xVia = this.from.x - factor * dx;\n yVia = this.from.y + factor * dx;\n yVia = this.to.y < yVia ? this.to.y : yVia;\n }\n }\n }\n }\n return {x: xVia, y: yVia};\n }\n\n _findBorderPosition(nearNode, ctx, options = {}) {\n return this._findBorderPositionBezier(nearNode, ctx, options.via);\n }\n\n _getDistanceToEdge(x1, y1, x2, y2, x3, y3, viaNode = this._getViaCoordinates()) { // x3,y3 is the point\n return this._getDistanceToBezierEdge(x1, y1, x2, y2, x3, y3, viaNode);\n }\n\n /**\n * Combined function of pointOnLine and pointOnBezier. This gives the coordinates of a point on the line at a certain percentage of the way\n * @param percentage\n * @param viaNode\n * @returns {{x: number, y: number}}\n * @private\n */\n getPoint(percentage, viaNode = this._getViaCoordinates()) {\n var t = percentage;\n var x = Math.pow(1 - t, 2) * this.fromPoint.x + (2 * t * (1 - t)) * viaNode.x + Math.pow(t, 2) * this.toPoint.x;\n var y = Math.pow(1 - t, 2) * this.fromPoint.y + (2 * t * (1 - t)) * viaNode.y + Math.pow(t, 2) * this.toPoint.y;\n\n return {x: x, y: y};\n }\n}\n\n\nexport default BezierEdgeStatic;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/edges/BezierEdgeStatic.js","import EdgeBase from './util/EdgeBase'\n\nclass StraightEdge extends EdgeBase {\n constructor(options, body, labelModule) {\n super(options, body, labelModule);\n }\n\n /**\n * Draw a line between two nodes\n * @param {CanvasRenderingContext2D} ctx\n * @private\n */\n _line(ctx, values) {\n // draw a straight line\n ctx.beginPath();\n ctx.moveTo(this.fromPoint.x, this.fromPoint.y);\n ctx.lineTo(this.toPoint.x, this.toPoint.y);\n // draw shadow if enabled\n this.enableShadow(ctx, values);\n ctx.stroke();\n this.disableShadow(ctx, values);\n }\n\n getViaNode() {\n return undefined;\n }\n\n /**\n * Combined function of pointOnLine and pointOnBezier. This gives the coordinates of a point on the line at a certain percentage of the way\n * @param percentage\n * @param via\n * @returns {{x: number, y: number}}\n * @private\n */\n getPoint(percentage) {\n return {\n x: (1 - percentage) * this.fromPoint.x + percentage * this.toPoint.x,\n y: (1 - percentage) * this.fromPoint.y + percentage * this.toPoint.y\n }\n }\n\n _findBorderPosition(nearNode, ctx) {\n let node1 = this.to;\n let node2 = this.from;\n if (nearNode.id === this.from.id) {\n node1 = this.from;\n node2 = this.to;\n }\n\n let angle = Math.atan2((node1.y - node2.y), (node1.x - node2.x));\n let dx = (node1.x - node2.x);\n let dy = (node1.y - node2.y);\n let edgeSegmentLength = Math.sqrt(dx * dx + dy * dy);\n let toBorderDist = nearNode.distanceToBorder(ctx, angle);\n let toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength;\n\n let borderPos = {};\n borderPos.x = (1 - toBorderPoint) * node2.x + toBorderPoint * node1.x;\n borderPos.y = (1 - toBorderPoint) * node2.y + toBorderPoint * node1.y;\n\n return borderPos;\n }\n\n _getDistanceToEdge(x1, y1, x2, y2, x3, y3) { // x3,y3 is the point\n return this._getDistanceToLine(x1, y1, x2, y2, x3, y3);\n }\n\n}\n\nexport default StraightEdge;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/edges/StraightEdge.js","import BarnesHutSolver from './components/physics/BarnesHutSolver';\nimport Repulsion from './components/physics/RepulsionSolver';\nimport HierarchicalRepulsion from './components/physics/HierarchicalRepulsionSolver';\nimport SpringSolver from './components/physics/SpringSolver';\nimport HierarchicalSpringSolver from './components/physics/HierarchicalSpringSolver';\nimport CentralGravitySolver from './components/physics/CentralGravitySolver';\nimport ForceAtlas2BasedRepulsionSolver from './components/physics/FA2BasedRepulsionSolver';\nimport ForceAtlas2BasedCentralGravitySolver from './components/physics/FA2BasedCentralGravitySolver';\n\nvar util = require('../../util');\n\n\nclass PhysicsEngine {\n constructor(body) {\n this.body = body;\n this.physicsBody = {physicsNodeIndices:[], physicsEdgeIndices:[], forces: {}, velocities: {}};\n\n this.physicsEnabled = true;\n this.simulationInterval = 1000 / 60;\n this.requiresTimeout = true;\n this.previousStates = {};\n this.referenceState = {};\n this.freezeCache = {};\n this.renderTimer = undefined;\n\n // parameters for the adaptive timestep\n this.adaptiveTimestep = false;\n this.adaptiveTimestepEnabled = false;\n this.adaptiveCounter = 0;\n this.adaptiveInterval = 3;\n\n this.stabilized = false;\n this.startedStabilization = false;\n this.stabilizationIterations = 0;\n this.ready = false; // will be set to true if the stabilize\n\n // default options\n this.options = {};\n this.defaultOptions = {\n enabled: true,\n barnesHut: {\n theta: 0.5,\n gravitationalConstant: -2000,\n centralGravity: 0.3,\n springLength: 95,\n springConstant: 0.04,\n damping: 0.09,\n avoidOverlap: 0\n },\n forceAtlas2Based: {\n theta: 0.5,\n gravitationalConstant: -50,\n centralGravity: 0.01,\n springConstant: 0.08,\n springLength: 100,\n damping: 0.4,\n avoidOverlap: 0\n },\n repulsion: {\n centralGravity: 0.2,\n springLength: 200,\n springConstant: 0.05,\n nodeDistance: 100,\n damping: 0.09,\n avoidOverlap: 0\n },\n hierarchicalRepulsion: {\n centralGravity: 0.0,\n springLength: 100,\n springConstant: 0.01,\n nodeDistance: 120,\n damping: 0.09\n },\n maxVelocity: 50,\n minVelocity: 0.75, // px/s\n solver: 'barnesHut',\n stabilization: {\n enabled: true,\n iterations: 1000, // maximum number of iteration to stabilize\n updateInterval: 50,\n onlyDynamicEdges: false,\n fit: true\n },\n timestep: 0.5,\n adaptiveTimestep: true\n };\n util.extend(this.options, this.defaultOptions);\n this.timestep = 0.5;\n this.layoutFailed = false;\n\n this.bindEventListeners();\n }\n\n bindEventListeners() {\n this.body.emitter.on('initPhysics', () => {this.initPhysics();});\n this.body.emitter.on('_layoutFailed', () => {this.layoutFailed = true;});\n this.body.emitter.on('resetPhysics', () => {this.stopSimulation(); this.ready = false;});\n this.body.emitter.on('disablePhysics', () => {this.physicsEnabled = false; this.stopSimulation();});\n this.body.emitter.on('restorePhysics', () => {\n this.setOptions(this.options);\n if (this.ready === true) {\n this.startSimulation();\n }\n });\n this.body.emitter.on('startSimulation', () => {\n if (this.ready === true) {\n this.startSimulation();\n }\n });\n this.body.emitter.on('stopSimulation', () => {this.stopSimulation();});\n this.body.emitter.on('destroy', () => {\n this.stopSimulation(false);\n this.body.emitter.off();\n });\n // this event will trigger a rebuilding of the cache everything. Used when nodes or edges have been added or removed.\n this.body.emitter.on(\"_dataChanged\", () => {\n // update shortcut lists\n this.updatePhysicsData();\n });\n\n // debug: show forces\n // this.body.emitter.on(\"afterDrawing\", (ctx) => {this._drawForces(ctx);});\n }\n\n\n /**\n * set the physics options\n * @param options\n */\n setOptions(options) {\n if (options !== undefined) {\n if (options === false) {\n this.options.enabled = false;\n this.physicsEnabled = false;\n this.stopSimulation();\n }\n else {\n this.physicsEnabled = true;\n util.selectiveNotDeepExtend(['stabilization'], this.options, options);\n util.mergeOptions(this.options, options, 'stabilization');\n\n if (options.enabled === undefined) {\n this.options.enabled = true;\n }\n\n if (this.options.enabled === false) {\n this.physicsEnabled = false;\n this.stopSimulation();\n }\n\n // set the timestep\n this.timestep = this.options.timestep;\n }\n }\n this.init();\n }\n\n\n /**\n * configure the engine.\n */\n init() {\n var options;\n if (this.options.solver === 'forceAtlas2Based') {\n options = this.options.forceAtlas2Based;\n this.nodesSolver = new ForceAtlas2BasedRepulsionSolver(this.body, this.physicsBody, options);\n this.edgesSolver = new SpringSolver(this.body, this.physicsBody, options);\n this.gravitySolver = new ForceAtlas2BasedCentralGravitySolver(this.body, this.physicsBody, options);\n }\n else if (this.options.solver === 'repulsion') {\n options = this.options.repulsion;\n this.nodesSolver = new Repulsion(this.body, this.physicsBody, options);\n this.edgesSolver = new SpringSolver(this.body, this.physicsBody, options);\n this.gravitySolver = new CentralGravitySolver(this.body, this.physicsBody, options);\n }\n else if (this.options.solver === 'hierarchicalRepulsion') {\n options = this.options.hierarchicalRepulsion;\n this.nodesSolver = new HierarchicalRepulsion(this.body, this.physicsBody, options);\n this.edgesSolver = new HierarchicalSpringSolver(this.body, this.physicsBody, options);\n this.gravitySolver = new CentralGravitySolver(this.body, this.physicsBody, options);\n }\n else { // barnesHut\n options = this.options.barnesHut;\n this.nodesSolver = new BarnesHutSolver(this.body, this.physicsBody, options);\n this.edgesSolver = new SpringSolver(this.body, this.physicsBody, options);\n this.gravitySolver = new CentralGravitySolver(this.body, this.physicsBody, options);\n }\n\n this.modelOptions = options;\n }\n\n\n /**\n * initialize the engine\n */\n initPhysics() {\n if (this.physicsEnabled === true && this.options.enabled === true) {\n if (this.options.stabilization.enabled === true) {\n this.stabilize();\n }\n else {\n this.stabilized = false;\n this.ready = true;\n this.body.emitter.emit('fit', {}, this.layoutFailed); // if the layout failed, we use the approximation for the zoom\n this.startSimulation();\n }\n }\n else {\n this.ready = true;\n this.body.emitter.emit('fit');\n }\n }\n\n /**\n * Start the simulation\n */\n startSimulation() {\n if (this.physicsEnabled === true && this.options.enabled === true) {\n this.stabilized = false;\n\n // when visible, adaptivity is disabled.\n this.adaptiveTimestep = false;\n\n // this sets the width of all nodes initially which could be required for the avoidOverlap\n this.body.emitter.emit(\"_resizeNodes\");\n if (this.viewFunction === undefined) {\n this.viewFunction = this.simulationStep.bind(this);\n this.body.emitter.on('initRedraw', this.viewFunction);\n this.body.emitter.emit('_startRendering');\n }\n }\n else {\n this.body.emitter.emit('_redraw');\n }\n }\n\n\n /**\n * Stop the simulation, force stabilization.\n */\n stopSimulation(emit = true) {\n this.stabilized = true;\n if (emit === true) {\n this._emitStabilized();\n }\n if (this.viewFunction !== undefined) {\n this.body.emitter.off('initRedraw', this.viewFunction);\n this.viewFunction = undefined;\n if (emit === true) {\n this.body.emitter.emit('_stopRendering');\n }\n }\n }\n\n\n /**\n * The viewFunction inserts this step into each render loop. It calls the physics tick and handles the cleanup at stabilized.\n *\n */\n simulationStep() {\n // check if the physics have settled\n var startTime = Date.now();\n this.physicsTick();\n var physicsTime = Date.now() - startTime;\n\n // run double speed if it is a little graph\n if ((physicsTime < 0.4 * this.simulationInterval || this.runDoubleSpeed === true) && this.stabilized === false) {\n this.physicsTick();\n\n // this makes sure there is no jitter. The decision is taken once to run it at double speed.\n this.runDoubleSpeed = true;\n }\n\n if (this.stabilized === true) {\n this.stopSimulation();\n }\n }\n\n\n /**\n * trigger the stabilized event.\n * @private\n */\n _emitStabilized(amountOfIterations = this.stabilizationIterations) {\n if (this.stabilizationIterations > 1 || this.startedStabilization === true) {\n setTimeout(() => {\n this.body.emitter.emit('stabilized', {iterations: amountOfIterations});\n this.startedStabilization = false;\n this.stabilizationIterations = 0;\n }, 0);\n }\n }\n\n /**\n * A single simulation step (or 'tick') in the physics simulation\n *\n * @private\n */\n physicsTick() {\n // this is here to ensure that there is no start event when the network is already stable.\n if (this.startedStabilization === false) {\n this.body.emitter.emit('startStabilizing');\n this.startedStabilization = true;\n }\n\n if (this.stabilized === false) {\n // adaptivity means the timestep adapts to the situation, only applicable for stabilization\n if (this.adaptiveTimestep === true && this.adaptiveTimestepEnabled === true) {\n // this is the factor for increasing the timestep on success.\n let factor = 1.2;\n\n // we assume the adaptive interval is\n if (this.adaptiveCounter % this.adaptiveInterval === 0) { // we leave the timestep stable for \"interval\" iterations.\n // first the big step and revert. Revert saves the reference state.\n this.timestep = 2 * this.timestep;\n this.calculateForces();\n this.moveNodes();\n this.revert();\n\n // now the normal step. Since this is the last step, it is the more stable one and we will take this.\n this.timestep = 0.5 * this.timestep;\n\n // since it's half the step, we do it twice.\n this.calculateForces();\n this.moveNodes();\n this.calculateForces();\n this.moveNodes();\n\n // we compare the two steps. if it is acceptable we double the step.\n if (this._evaluateStepQuality() === true) {\n this.timestep = factor * this.timestep;\n }\n else {\n // if not, we decrease the step to a minimum of the options timestep.\n // if the decreased timestep is smaller than the options step, we do not reset the counter\n // we assume that the options timestep is stable enough.\n if (this.timestep/factor < this.options.timestep) {\n this.timestep = this.options.timestep;\n }\n else {\n // if the timestep was larger than 2 times the option one we check the adaptivity again to ensure\n // that large instabilities do not form.\n this.adaptiveCounter = -1; // check again next iteration\n this.timestep = Math.max(this.options.timestep, this.timestep/factor);\n }\n }\n }\n else {\n // normal step, keeping timestep constant\n this.calculateForces();\n this.moveNodes();\n }\n\n // increment the counter\n this.adaptiveCounter += 1;\n }\n else {\n // case for the static timestep, we reset it to the one in options and take a normal step.\n this.timestep = this.options.timestep;\n this.calculateForces();\n this.moveNodes();\n }\n\n // determine if the network has stabilzied\n if (this.stabilized === true) {\n this.revert();\n }\n\n this.stabilizationIterations++;\n }\n }\n\n /**\n * Nodes and edges can have the physics toggles on or off. A collection of indices is created here so we can skip the check all the time.\n *\n * @private\n */\n updatePhysicsData() {\n this.physicsBody.forces = {};\n this.physicsBody.physicsNodeIndices = [];\n this.physicsBody.physicsEdgeIndices = [];\n let nodes = this.body.nodes;\n let edges = this.body.edges;\n\n // get node indices for physics\n for (let nodeId in nodes) {\n if (nodes.hasOwnProperty(nodeId)) {\n if (nodes[nodeId].options.physics === true) {\n this.physicsBody.physicsNodeIndices.push(nodes[nodeId].id);\n }\n }\n }\n\n // get edge indices for physics\n for (let edgeId in edges) {\n if (edges.hasOwnProperty(edgeId)) {\n if (edges[edgeId].options.physics === true) {\n this.physicsBody.physicsEdgeIndices.push(edges[edgeId].id);\n }\n }\n }\n\n // get the velocity and the forces vector\n for (let i = 0; i < this.physicsBody.physicsNodeIndices.length; i++) {\n let nodeId = this.physicsBody.physicsNodeIndices[i];\n this.physicsBody.forces[nodeId] = {x:0,y:0};\n\n // forces can be reset because they are recalculated. Velocities have to persist.\n if (this.physicsBody.velocities[nodeId] === undefined) {\n this.physicsBody.velocities[nodeId] = {x:0,y:0};\n }\n }\n\n // clean deleted nodes from the velocity vector\n for (let nodeId in this.physicsBody.velocities) {\n if (nodes[nodeId] === undefined) {\n delete this.physicsBody.velocities[nodeId];\n }\n }\n }\n\n\n /**\n * Revert the simulation one step. This is done so after stabilization, every new start of the simulation will also say stabilized.\n */\n revert() {\n var nodeIds = Object.keys(this.previousStates);\n var nodes = this.body.nodes;\n var velocities = this.physicsBody.velocities;\n this.referenceState = {};\n\n for (let i = 0; i < nodeIds.length; i++) {\n let nodeId = nodeIds[i];\n if (nodes[nodeId] !== undefined) {\n if (nodes[nodeId].options.physics === true) {\n this.referenceState[nodeId] = {\n positions: {x:nodes[nodeId].x, y:nodes[nodeId].y}\n };\n velocities[nodeId].x = this.previousStates[nodeId].vx;\n velocities[nodeId].y = this.previousStates[nodeId].vy;\n nodes[nodeId].x = this.previousStates[nodeId].x;\n nodes[nodeId].y = this.previousStates[nodeId].y;\n }\n }\n else {\n delete this.previousStates[nodeId];\n }\n }\n }\n\n /**\n * This compares the reference state to the current state\n */\n _evaluateStepQuality() {\n let dx, dy, dpos;\n let nodes = this.body.nodes;\n let reference = this.referenceState;\n let posThreshold = 0.3;\n\n for (let nodeId in this.referenceState) {\n if (this.referenceState.hasOwnProperty(nodeId) && nodes[nodeId] !== undefined) {\n dx = nodes[nodeId].x - reference[nodeId].positions.x;\n dy = nodes[nodeId].y - reference[nodeId].positions.y;\n\n dpos = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2))\n\n if (dpos > posThreshold) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * move the nodes one timestep and check if they are stabilized\n * @returns {boolean}\n */\n moveNodes() {\n var nodeIndices = this.physicsBody.physicsNodeIndices;\n var maxVelocity = this.options.maxVelocity ? this.options.maxVelocity : 1e9;\n var maxNodeVelocity = 0;\n var averageNodeVelocity = 0;\n\n // the velocity threshold (energy in the system) for the adaptivity toggle\n var velocityAdaptiveThreshold = 5;\n\n for (let i = 0; i < nodeIndices.length; i++) {\n let nodeId = nodeIndices[i];\n let nodeVelocity = this._performStep(nodeId, maxVelocity);\n // stabilized is true if stabilized is true and velocity is smaller than vmin --> all nodes must be stabilized\n maxNodeVelocity = Math.max(maxNodeVelocity,nodeVelocity);\n averageNodeVelocity += nodeVelocity;\n }\n\n // evaluating the stabilized and adaptiveTimestepEnabled conditions\n this.adaptiveTimestepEnabled = (averageNodeVelocity/nodeIndices.length) < velocityAdaptiveThreshold;\n this.stabilized = maxNodeVelocity < this.options.minVelocity;\n }\n\n\n /**\n * Perform the actual step\n *\n * @param nodeId\n * @param maxVelocity\n * @returns {number}\n * @private\n */\n _performStep(nodeId,maxVelocity) {\n let node = this.body.nodes[nodeId];\n let timestep = this.timestep;\n let forces = this.physicsBody.forces;\n let velocities = this.physicsBody.velocities;\n\n // store the state so we can revert\n this.previousStates[nodeId] = {x:node.x, y:node.y, vx:velocities[nodeId].x, vy:velocities[nodeId].y};\n\n if (node.options.fixed.x === false) {\n let dx = this.modelOptions.damping * velocities[nodeId].x; // damping force\n let ax = (forces[nodeId].x - dx) / node.options.mass; // acceleration\n velocities[nodeId].x += ax * timestep; // velocity\n velocities[nodeId].x = (Math.abs(velocities[nodeId].x) > maxVelocity) ? ((velocities[nodeId].x > 0) ? maxVelocity : -maxVelocity) : velocities[nodeId].x;\n node.x += velocities[nodeId].x * timestep; // position\n }\n else {\n forces[nodeId].x = 0;\n velocities[nodeId].x = 0;\n }\n\n if (node.options.fixed.y === false) {\n let dy = this.modelOptions.damping * velocities[nodeId].y; // damping force\n let ay = (forces[nodeId].y - dy) / node.options.mass; // acceleration\n velocities[nodeId].y += ay * timestep; // velocity\n velocities[nodeId].y = (Math.abs(velocities[nodeId].y) > maxVelocity) ? ((velocities[nodeId].y > 0) ? maxVelocity : -maxVelocity) : velocities[nodeId].y;\n node.y += velocities[nodeId].y * timestep; // position\n }\n else {\n forces[nodeId].y = 0;\n velocities[nodeId].y = 0;\n }\n\n let totalVelocity = Math.sqrt(Math.pow(velocities[nodeId].x,2) + Math.pow(velocities[nodeId].y,2));\n return totalVelocity;\n }\n\n\n /**\n * calculate the forces for one physics iteration.\n */\n calculateForces() {\n this.gravitySolver.solve();\n this.nodesSolver.solve();\n this.edgesSolver.solve();\n }\n\n\n\n /**\n * When initializing and stabilizing, we can freeze nodes with a predefined position. This greatly speeds up stabilization\n * because only the supportnodes for the smoothCurves have to settle.\n *\n * @private\n */\n _freezeNodes() {\n var nodes = this.body.nodes;\n for (var id in nodes) {\n if (nodes.hasOwnProperty(id)) {\n if (nodes[id].x && nodes[id].y) {\n this.freezeCache[id] = {x:nodes[id].options.fixed.x,y:nodes[id].options.fixed.y};\n nodes[id].options.fixed.x = true;\n nodes[id].options.fixed.y = true;\n }\n }\n }\n }\n\n /**\n * Unfreezes the nodes that have been frozen by _freezeDefinedNodes.\n *\n * @private\n */\n _restoreFrozenNodes() {\n var nodes = this.body.nodes;\n for (var id in nodes) {\n if (nodes.hasOwnProperty(id)) {\n if (this.freezeCache[id] !== undefined) {\n nodes[id].options.fixed.x = this.freezeCache[id].x;\n nodes[id].options.fixed.y = this.freezeCache[id].y;\n }\n }\n }\n this.freezeCache = {};\n }\n\n /**\n * Find a stable position for all nodes\n */\n stabilize(iterations = this.options.stabilization.iterations) {\n if (typeof iterations !== 'number') {\n console.log('The stabilize method needs a numeric amount of iterations. Switching to default: ', this.options.stabilization.iterations);\n iterations = this.options.stabilization.iterations;\n }\n\n if (this.physicsBody.physicsNodeIndices.length === 0) {\n this.ready = true;\n return;\n }\n\n // enable adaptive timesteps\n this.adaptiveTimestep = true && this.options.adaptiveTimestep;\n\n // this sets the width of all nodes initially which could be required for the avoidOverlap\n this.body.emitter.emit(\"_resizeNodes\");\n\n // stop the render loop\n this.stopSimulation();\n\n // set stabilze to false\n this.stabilized = false;\n\n // block redraw requests\n this.body.emitter.emit('_blockRedraw');\n this.targetIterations = iterations;\n\n // start the stabilization\n if (this.options.stabilization.onlyDynamicEdges === true) {\n this._freezeNodes();\n }\n this.stabilizationIterations = 0;\n\n setTimeout(() => this._stabilizationBatch(),0);\n }\n\n\n /**\n * One batch of stabilization\n * @private\n */\n _stabilizationBatch() {\n // this is here to ensure that there is at least one start event.\n if (this.startedStabilization === false) {\n this.body.emitter.emit('startStabilizing');\n this.startedStabilization = true;\n }\n\n var count = 0;\n while (this.stabilized === false && count < this.options.stabilization.updateInterval && this.stabilizationIterations < this.targetIterations) {\n this.physicsTick();\n count++;\n }\n\n if (this.stabilized === false && this.stabilizationIterations < this.targetIterations) {\n this.body.emitter.emit('stabilizationProgress', {iterations: this.stabilizationIterations, total: this.targetIterations});\n setTimeout(this._stabilizationBatch.bind(this),0);\n }\n else {\n this._finalizeStabilization();\n }\n }\n\n\n /**\n * Wrap up the stabilization, fit and emit the events.\n * @private\n */\n _finalizeStabilization() {\n this.body.emitter.emit('_allowRedraw');\n if (this.options.stabilization.fit === true) {\n this.body.emitter.emit('fit');\n }\n\n if (this.options.stabilization.onlyDynamicEdges === true) {\n this._restoreFrozenNodes();\n }\n\n this.body.emitter.emit('stabilizationIterationsDone');\n this.body.emitter.emit('_requestRedraw');\n\n if (this.stabilized === true) {\n this._emitStabilized();\n }\n else {\n this.startSimulation();\n }\n\n this.ready = true;\n }\n\n\n _drawForces(ctx) {\n for (var i = 0; i < this.physicsBody.physicsNodeIndices.length; i++) {\n let node = this.body.nodes[this.physicsBody.physicsNodeIndices[i]];\n let force = this.physicsBody.forces[this.physicsBody.physicsNodeIndices[i]];\n let factor = 20;\n let colorFactor = 0.03;\n let forceSize = Math.sqrt(Math.pow(force.x,2) + Math.pow(force.x,2));\n\n let size = Math.min(Math.max(5,forceSize),15);\n let arrowSize = 3*size;\n\n let color = util.HSVToHex((180 - Math.min(1,Math.max(0,colorFactor*forceSize))*180) / 360,1,1);\n\n ctx.lineWidth = size;\n ctx.strokeStyle = color;\n ctx.beginPath();\n ctx.moveTo(node.x,node.y);\n ctx.lineTo(node.x+factor*force.x, node.y+factor*force.y);\n ctx.stroke();\n\n let angle = Math.atan2(force.y, force.x);\n ctx.fillStyle = color;\n ctx.arrowEndpoint(node.x + factor*force.x + Math.cos(angle)*arrowSize, node.y + factor*force.y+Math.sin(angle)*arrowSize, angle, arrowSize);\n ctx.fill();\n }\n }\n\n}\n\nexport default PhysicsEngine;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/PhysicsEngine.js","\nclass BarnesHutSolver {\n constructor(body, physicsBody, options) {\n this.body = body;\n this.physicsBody = physicsBody;\n this.barnesHutTree;\n this.setOptions(options);\n this.randomSeed = 5;\n\n // debug: show grid\n //this.body.emitter.on(\"afterDrawing\", (ctx) => {this._debug(ctx,'#ff0000')})\n }\n\n setOptions(options) {\n this.options = options;\n this.thetaInversed = 1 / this.options.theta;\n this.overlapAvoidanceFactor = 1 - Math.max(0, Math.min(1,this.options.avoidOverlap)); // if 1 then min distance = 0.5, if 0.5 then min distance = 0.5 + 0.5*node.shape.radius\n }\n\n seededRandom() {\n var x = Math.sin(this.randomSeed++) * 10000;\n return x - Math.floor(x);\n }\n\n\n /**\n * This function calculates the forces the nodes apply on each other based on a gravitational model.\n * The Barnes Hut method is used to speed up this N-body simulation.\n *\n * @private\n */\n solve() {\n if (this.options.gravitationalConstant !== 0 && this.physicsBody.physicsNodeIndices.length > 0) {\n let node;\n let nodes = this.body.nodes;\n let nodeIndices = this.physicsBody.physicsNodeIndices;\n let nodeCount = nodeIndices.length;\n\n // create the tree\n let barnesHutTree = this._formBarnesHutTree(nodes, nodeIndices);\n\n // for debugging\n this.barnesHutTree = barnesHutTree;\n\n // place the nodes one by one recursively\n for (let i = 0; i < nodeCount; i++) {\n node = nodes[nodeIndices[i]];\n if (node.options.mass > 0) {\n // starting with root is irrelevant, it never passes the BarnesHutSolver condition\n this._getForceContribution(barnesHutTree.root.children.NW, node);\n this._getForceContribution(barnesHutTree.root.children.NE, node);\n this._getForceContribution(barnesHutTree.root.children.SW, node);\n this._getForceContribution(barnesHutTree.root.children.SE, node);\n }\n }\n }\n }\n\n\n /**\n * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass.\n * If a region contains a single node, we check if it is not itself, then we apply the force.\n *\n * @param parentBranch\n * @param node\n * @private\n */\n _getForceContribution(parentBranch, node) {\n // we get no force contribution from an empty region\n if (parentBranch.childrenCount > 0) {\n let dx, dy, distance;\n\n // get the distance from the center of mass to the node.\n dx = parentBranch.centerOfMass.x - node.x;\n dy = parentBranch.centerOfMass.y - node.y;\n distance = Math.sqrt(dx * dx + dy * dy);\n\n // BarnesHutSolver condition\n // original condition : s/d < theta = passed === d/s > 1/theta = passed\n // calcSize = 1/s --> d * 1/s > 1/theta = passed\n if (distance * parentBranch.calcSize > this.thetaInversed) {\n this._calculateForces(distance, dx, dy, node, parentBranch);\n }\n else {\n // Did not pass the condition, go into children if available\n if (parentBranch.childrenCount === 4) {\n this._getForceContribution(parentBranch.children.NW, node);\n this._getForceContribution(parentBranch.children.NE, node);\n this._getForceContribution(parentBranch.children.SW, node);\n this._getForceContribution(parentBranch.children.SE, node);\n }\n else { // parentBranch must have only one node, if it was empty we wouldnt be here\n if (parentBranch.children.data.id != node.id) { // if it is not self\n this._calculateForces(distance, dx, dy, node, parentBranch);\n }\n }\n }\n }\n }\n\n\n /**\n * Calculate the forces based on the distance.\n *\n * @param distance\n * @param dx\n * @param dy\n * @param node\n * @param parentBranch\n * @private\n */\n _calculateForces(distance, dx, dy, node, parentBranch) {\n if (distance === 0) {\n distance = 0.1;\n dx = distance;\n }\n\n if (this.overlapAvoidanceFactor < 1 && node.shape.radius) {\n distance = Math.max(0.1 + (this.overlapAvoidanceFactor * node.shape.radius), distance - node.shape.radius);\n }\n\n // the dividing by the distance cubed instead of squared allows us to get the fx and fy components without sines and cosines\n // it is shorthand for gravityforce with distance squared and fx = dx/distance * gravityForce\n let gravityForce = this.options.gravitationalConstant * parentBranch.mass * node.options.mass / Math.pow(distance,3);\n let fx = dx * gravityForce;\n let fy = dy * gravityForce;\n\n this.physicsBody.forces[node.id].x += fx;\n this.physicsBody.forces[node.id].y += fy;\n }\n\n\n /**\n * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes.\n *\n * @param nodes\n * @param nodeIndices\n * @private\n */\n _formBarnesHutTree(nodes, nodeIndices) {\n let node;\n let nodeCount = nodeIndices.length;\n\n let minX = nodes[nodeIndices[0]].x;\n let minY = nodes[nodeIndices[0]].y;\n let maxX = nodes[nodeIndices[0]].x;\n let maxY = nodes[nodeIndices[0]].y;\n\n // get the range of the nodes\n for (let i = 1; i < nodeCount; i++) {\n let x = nodes[nodeIndices[i]].x;\n let y = nodes[nodeIndices[i]].y;\n if (nodes[nodeIndices[i]].options.mass > 0) {\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n }\n // make the range a square\n let sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y\n if (sizeDiff > 0) {\n minY -= 0.5 * sizeDiff;\n maxY += 0.5 * sizeDiff;\n } // xSize > ySize\n else {\n minX += 0.5 * sizeDiff;\n maxX -= 0.5 * sizeDiff;\n } // xSize < ySize\n\n\n let minimumTreeSize = 1e-5;\n let rootSize = Math.max(minimumTreeSize, Math.abs(maxX - minX));\n let halfRootSize = 0.5 * rootSize;\n let centerX = 0.5 * (minX + maxX), centerY = 0.5 * (minY + maxY);\n\n // construct the barnesHutTree\n let barnesHutTree = {\n root: {\n centerOfMass: {x: 0, y: 0},\n mass: 0,\n range: {\n minX: centerX - halfRootSize, maxX: centerX + halfRootSize,\n minY: centerY - halfRootSize, maxY: centerY + halfRootSize\n },\n size: rootSize,\n calcSize: 1 / rootSize,\n children: {data: null},\n maxWidth: 0,\n level: 0,\n childrenCount: 4\n }\n };\n this._splitBranch(barnesHutTree.root);\n\n // place the nodes one by one recursively\n for (let i = 0; i < nodeCount; i++) {\n node = nodes[nodeIndices[i]];\n if (node.options.mass > 0) {\n this._placeInTree(barnesHutTree.root, node);\n }\n }\n\n // make global\n return barnesHutTree\n }\n\n\n /**\n * this updates the mass of a branch. this is increased by adding a node.\n *\n * @param parentBranch\n * @param node\n * @private\n */\n _updateBranchMass(parentBranch, node) {\n let totalMass = parentBranch.mass + node.options.mass;\n let totalMassInv = 1 / totalMass;\n\n parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.options.mass;\n parentBranch.centerOfMass.x *= totalMassInv;\n\n parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.options.mass;\n parentBranch.centerOfMass.y *= totalMassInv;\n\n parentBranch.mass = totalMass;\n let biggestSize = Math.max(Math.max(node.height, node.radius), node.width);\n parentBranch.maxWidth = (parentBranch.maxWidth < biggestSize) ? biggestSize : parentBranch.maxWidth;\n\n }\n\n\n /**\n * determine in which branch the node will be placed.\n *\n * @param parentBranch\n * @param node\n * @param skipMassUpdate\n * @private\n */\n _placeInTree(parentBranch, node, skipMassUpdate) {\n if (skipMassUpdate != true || skipMassUpdate === undefined) {\n // update the mass of the branch.\n this._updateBranchMass(parentBranch, node);\n }\n\n if (parentBranch.children.NW.range.maxX > node.x) { // in NW or SW\n if (parentBranch.children.NW.range.maxY > node.y) { // in NW\n this._placeInRegion(parentBranch, node, \"NW\");\n }\n else { // in SW\n this._placeInRegion(parentBranch, node, \"SW\");\n }\n }\n else { // in NE or SE\n if (parentBranch.children.NW.range.maxY > node.y) { // in NE\n this._placeInRegion(parentBranch, node, \"NE\");\n }\n else { // in SE\n this._placeInRegion(parentBranch, node, \"SE\");\n }\n }\n }\n\n\n /**\n * actually place the node in a region (or branch)\n *\n * @param parentBranch\n * @param node\n * @param region\n * @private\n */\n _placeInRegion(parentBranch, node, region) {\n switch (parentBranch.children[region].childrenCount) {\n case 0: // place node here\n parentBranch.children[region].children.data = node;\n parentBranch.children[region].childrenCount = 1;\n this._updateBranchMass(parentBranch.children[region], node);\n break;\n case 1: // convert into children\n // if there are two nodes exactly overlapping (on init, on opening of cluster etc.)\n // we move one node a little bit and we do not put it in the tree.\n if (parentBranch.children[region].children.data.x === node.x &&\n parentBranch.children[region].children.data.y === node.y) {\n node.x += this.seededRandom();\n node.y += this.seededRandom();\n }\n else {\n this._splitBranch(parentBranch.children[region]);\n this._placeInTree(parentBranch.children[region], node);\n }\n break;\n case 4: // place in branch\n this._placeInTree(parentBranch.children[region], node);\n break;\n }\n }\n\n\n /**\n * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch\n * after the split is complete.\n *\n * @param parentBranch\n * @private\n */\n _splitBranch(parentBranch) {\n // if the branch is shaded with a node, replace the node in the new subset.\n let containedNode = null;\n if (parentBranch.childrenCount === 1) {\n containedNode = parentBranch.children.data;\n parentBranch.mass = 0;\n parentBranch.centerOfMass.x = 0;\n parentBranch.centerOfMass.y = 0;\n }\n parentBranch.childrenCount = 4;\n parentBranch.children.data = null;\n this._insertRegion(parentBranch, \"NW\");\n this._insertRegion(parentBranch, \"NE\");\n this._insertRegion(parentBranch, \"SW\");\n this._insertRegion(parentBranch, \"SE\");\n\n if (containedNode != null) {\n this._placeInTree(parentBranch, containedNode);\n }\n }\n\n\n /**\n * This function subdivides the region into four new segments.\n * Specifically, this inserts a single new segment.\n * It fills the children section of the parentBranch\n *\n * @param parentBranch\n * @param region\n * @param parentRange\n * @private\n */\n _insertRegion(parentBranch, region) {\n let minX, maxX, minY, maxY;\n let childSize = 0.5 * parentBranch.size;\n switch (region) {\n case \"NW\":\n minX = parentBranch.range.minX;\n maxX = parentBranch.range.minX + childSize;\n minY = parentBranch.range.minY;\n maxY = parentBranch.range.minY + childSize;\n break;\n case \"NE\":\n minX = parentBranch.range.minX + childSize;\n maxX = parentBranch.range.maxX;\n minY = parentBranch.range.minY;\n maxY = parentBranch.range.minY + childSize;\n break;\n case \"SW\":\n minX = parentBranch.range.minX;\n maxX = parentBranch.range.minX + childSize;\n minY = parentBranch.range.minY + childSize;\n maxY = parentBranch.range.maxY;\n break;\n case \"SE\":\n minX = parentBranch.range.minX + childSize;\n maxX = parentBranch.range.maxX;\n minY = parentBranch.range.minY + childSize;\n maxY = parentBranch.range.maxY;\n break;\n }\n\n\n parentBranch.children[region] = {\n centerOfMass: {x: 0, y: 0},\n mass: 0,\n range: {minX: minX, maxX: maxX, minY: minY, maxY: maxY},\n size: 0.5 * parentBranch.size,\n calcSize: 2 * parentBranch.calcSize,\n children: {data: null},\n maxWidth: 0,\n level: parentBranch.level + 1,\n childrenCount: 0\n };\n }\n\n\n\n\n //--------------------------- DEBUGGING BELOW ---------------------------//\n\n\n /**\n * This function is for debugging purposed, it draws the tree.\n *\n * @param ctx\n * @param color\n * @private\n */\n _debug(ctx, color) {\n if (this.barnesHutTree !== undefined) {\n\n ctx.lineWidth = 1;\n\n this._drawBranch(this.barnesHutTree.root, ctx, color);\n }\n }\n\n\n /**\n * This function is for debugging purposes. It draws the branches recursively.\n *\n * @param branch\n * @param ctx\n * @param color\n * @private\n */\n _drawBranch(branch, ctx, color) {\n if (color === undefined) {\n color = \"#FF0000\";\n }\n\n if (branch.childrenCount === 4) {\n this._drawBranch(branch.children.NW, ctx);\n this._drawBranch(branch.children.NE, ctx);\n this._drawBranch(branch.children.SE, ctx);\n this._drawBranch(branch.children.SW, ctx);\n }\n ctx.strokeStyle = color;\n ctx.beginPath();\n ctx.moveTo(branch.range.minX, branch.range.minY);\n ctx.lineTo(branch.range.maxX, branch.range.minY);\n ctx.stroke();\n\n ctx.beginPath();\n ctx.moveTo(branch.range.maxX, branch.range.minY);\n ctx.lineTo(branch.range.maxX, branch.range.maxY);\n ctx.stroke();\n\n ctx.beginPath();\n ctx.moveTo(branch.range.maxX, branch.range.maxY);\n ctx.lineTo(branch.range.minX, branch.range.maxY);\n ctx.stroke();\n\n ctx.beginPath();\n ctx.moveTo(branch.range.minX, branch.range.maxY);\n ctx.lineTo(branch.range.minX, branch.range.minY);\n ctx.stroke();\n\n /*\n if (branch.mass > 0) {\n ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass);\n ctx.stroke();\n }\n */\n }\n}\n\n\nexport default BarnesHutSolver;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/physics/BarnesHutSolver.js","class RepulsionSolver {\n constructor(body, physicsBody, options) {\n this.body = body;\n this.physicsBody = physicsBody;\n this.setOptions(options);\n }\n\n setOptions(options) {\n this.options = options;\n }\n /**\n * Calculate the forces the nodes apply on each other based on a repulsion field.\n * This field is linearly approximated.\n *\n * @private\n */\n solve() {\n var dx, dy, distance, fx, fy, repulsingForce, node1, node2;\n\n var nodes = this.body.nodes;\n var nodeIndices = this.physicsBody.physicsNodeIndices;\n var forces = this.physicsBody.forces;\n\n // repulsing forces between nodes\n var nodeDistance = this.options.nodeDistance;\n\n // approximation constants\n var a = (-2 / 3) / nodeDistance;\n var b = 4 / 3;\n\n // we loop from i over all but the last entree in the array\n // j loops from i+1 to the last. This way we do not double count any of the indices, nor i === j\n for (let i = 0; i < nodeIndices.length - 1; i++) {\n node1 = nodes[nodeIndices[i]];\n for (let j = i + 1; j < nodeIndices.length; j++) {\n node2 = nodes[nodeIndices[j]];\n\n dx = node2.x - node1.x;\n dy = node2.y - node1.y;\n distance = Math.sqrt(dx * dx + dy * dy);\n\n // same condition as BarnesHutSolver, making sure nodes are never 100% overlapping.\n if (distance === 0) {\n distance = 0.1*Math.random();\n dx = distance;\n }\n\n if (distance < 2 * nodeDistance) {\n if (distance < 0.5 * nodeDistance) {\n repulsingForce = 1.0;\n }\n else {\n repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / nodeDistance - 1) * steepness))\n }\n repulsingForce = repulsingForce / distance;\n\n fx = dx * repulsingForce;\n fy = dy * repulsingForce;\n\n forces[node1.id].x -= fx;\n forces[node1.id].y -= fy;\n forces[node2.id].x += fx;\n forces[node2.id].y += fy;\n }\n }\n }\n }\n}\n\n\nexport default RepulsionSolver;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/physics/RepulsionSolver.js","class HierarchicalRepulsionSolver {\n constructor(body, physicsBody, options) {\n this.body = body;\n this.physicsBody = physicsBody;\n this.setOptions(options);\n }\n\n setOptions(options) {\n this.options = options;\n }\n\n /**\n * Calculate the forces the nodes apply on each other based on a repulsion field.\n * This field is linearly approximated.\n *\n * @private\n */\n solve() {\n var dx, dy, distance, fx, fy, repulsingForce, node1, node2, i, j;\n\n var nodes = this.body.nodes;\n var nodeIndices = this.physicsBody.physicsNodeIndices;\n var forces = this.physicsBody.forces;\n\n // repulsing forces between nodes\n var nodeDistance = this.options.nodeDistance;\n\n // we loop from i over all but the last entree in the array\n // j loops from i+1 to the last. This way we do not double count any of the indices, nor i === j\n for (i = 0; i < nodeIndices.length - 1; i++) {\n node1 = nodes[nodeIndices[i]];\n for (j = i + 1; j < nodeIndices.length; j++) {\n node2 = nodes[nodeIndices[j]];\n\n // nodes only affect nodes on their level\n if (node1.level === node2.level) {\n dx = node2.x - node1.x;\n dy = node2.y - node1.y;\n distance = Math.sqrt(dx * dx + dy * dy);\n\n var steepness = 0.05;\n if (distance < nodeDistance) {\n repulsingForce = -Math.pow(steepness * distance, 2) + Math.pow(steepness * nodeDistance, 2);\n }\n else {\n repulsingForce = 0;\n }\n // normalize force with\n if (distance === 0) {\n distance = 0.01;\n }\n else {\n repulsingForce = repulsingForce / distance;\n }\n fx = dx * repulsingForce;\n fy = dy * repulsingForce;\n\n forces[node1.id].x -= fx;\n forces[node1.id].y -= fy;\n forces[node2.id].x += fx;\n forces[node2.id].y += fy;\n }\n }\n }\n }\n}\n\n\nexport default HierarchicalRepulsionSolver;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/physics/HierarchicalRepulsionSolver.js","class SpringSolver {\n constructor(body, physicsBody, options) {\n this.body = body;\n this.physicsBody = physicsBody;\n this.setOptions(options);\n }\n\n setOptions(options) {\n this.options = options;\n }\n\n /**\n * This function calculates the springforces on the nodes, accounting for the support nodes.\n *\n * @private\n */\n solve() {\n let edgeLength, edge;\n let edgeIndices = this.physicsBody.physicsEdgeIndices;\n let edges = this.body.edges;\n let node1, node2, node3;\n\n // forces caused by the edges, modelled as springs\n for (let i = 0; i < edgeIndices.length; i++) {\n edge = edges[edgeIndices[i]];\n if (edge.connected === true && edge.toId !== edge.fromId) {\n // only calculate forces if nodes are in the same sector\n if (this.body.nodes[edge.toId] !== undefined && this.body.nodes[edge.fromId] !== undefined) {\n if (edge.edgeType.via !== undefined) {\n edgeLength = edge.options.length === undefined ? this.options.springLength : edge.options.length;\n node1 = edge.to;\n node2 = edge.edgeType.via;\n node3 = edge.from;\n\n this._calculateSpringForce(node1, node2, 0.5 * edgeLength);\n this._calculateSpringForce(node2, node3, 0.5 * edgeLength);\n }\n else {\n // the * 1.5 is here so the edge looks as large as a smooth edge. It does not initially because the smooth edges use\n // the support nodes which exert a repulsive force on the to and from nodes, making the edge appear larger.\n edgeLength = edge.options.length === undefined ? this.options.springLength * 1.5: edge.options.length;\n this._calculateSpringForce(edge.from, edge.to, edgeLength);\n }\n }\n }\n }\n }\n\n\n /**\n * This is the code actually performing the calculation for the function above.\n *\n * @param node1\n * @param node2\n * @param edgeLength\n * @private\n */\n _calculateSpringForce(node1, node2, edgeLength) {\n let dx = (node1.x - node2.x);\n let dy = (node1.y - node2.y);\n let distance = Math.max(Math.sqrt(dx * dx + dy * dy),0.01);\n\n // the 1/distance is so the fx and fy can be calculated without sine or cosine.\n let springForce = this.options.springConstant * (edgeLength - distance) / distance;\n\n let fx = dx * springForce;\n let fy = dy * springForce;\n\n // handle the case where one node is not part of the physcis\n if (this.physicsBody.forces[node1.id] !== undefined) {\n this.physicsBody.forces[node1.id].x += fx;\n this.physicsBody.forces[node1.id].y += fy;\n }\n\n if (this.physicsBody.forces[node2.id] !== undefined) {\n this.physicsBody.forces[node2.id].x -= fx;\n this.physicsBody.forces[node2.id].y -= fy;\n }\n }\n}\n\nexport default SpringSolver;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/physics/SpringSolver.js","class HierarchicalSpringSolver {\n constructor(body, physicsBody, options) {\n this.body = body;\n this.physicsBody = physicsBody;\n this.setOptions(options);\n }\n\n setOptions(options) {\n this.options = options;\n }\n\n /**\n * This function calculates the springforces on the nodes, accounting for the support nodes.\n *\n * @private\n */\n solve() {\n var edgeLength, edge;\n var dx, dy, fx, fy, springForce, distance;\n var edges = this.body.edges;\n var factor = 0.5;\n\n var edgeIndices = this.physicsBody.physicsEdgeIndices;\n var nodeIndices = this.physicsBody.physicsNodeIndices;\n var forces = this.physicsBody.forces;\n\n // initialize the spring force counters\n for (let i = 0; i < nodeIndices.length; i++) {\n let nodeId = nodeIndices[i];\n forces[nodeId].springFx = 0;\n forces[nodeId].springFy = 0;\n }\n\n\n // forces caused by the edges, modelled as springs\n for (let i = 0; i < edgeIndices.length; i++) {\n edge = edges[edgeIndices[i]];\n if (edge.connected === true) {\n edgeLength = edge.options.length === undefined ? this.options.springLength : edge.options.length;\n\n dx = (edge.from.x - edge.to.x);\n dy = (edge.from.y - edge.to.y);\n distance = Math.sqrt(dx * dx + dy * dy);\n distance = distance === 0 ? 0.01 : distance;\n\n // the 1/distance is so the fx and fy can be calculated without sine or cosine.\n springForce = this.options.springConstant * (edgeLength - distance) / distance;\n\n fx = dx * springForce;\n fy = dy * springForce;\n\n if (edge.to.level != edge.from.level) {\n if (forces[edge.toId] !== undefined) {\n forces[edge.toId].springFx -= fx;\n forces[edge.toId].springFy -= fy;\n }\n if (forces[edge.fromId] !== undefined) {\n forces[edge.fromId].springFx += fx;\n forces[edge.fromId].springFy += fy;\n }\n }\n else {\n if (forces[edge.toId] !== undefined) {\n forces[edge.toId].x -= factor * fx;\n forces[edge.toId].y -= factor * fy;\n }\n if (forces[edge.fromId] !== undefined) {\n forces[edge.fromId].x += factor * fx;\n forces[edge.fromId].y += factor * fy;\n }\n }\n }\n }\n\n // normalize spring forces\n var springForce = 1;\n var springFx, springFy;\n for (let i = 0; i < nodeIndices.length; i++) {\n let nodeId = nodeIndices[i];\n springFx = Math.min(springForce,Math.max(-springForce,forces[nodeId].springFx));\n springFy = Math.min(springForce,Math.max(-springForce,forces[nodeId].springFy));\n\n forces[nodeId].x += springFx;\n forces[nodeId].y += springFy;\n }\n\n // retain energy balance\n var totalFx = 0;\n var totalFy = 0;\n for (let i = 0; i < nodeIndices.length; i++) {\n let nodeId = nodeIndices[i];\n totalFx += forces[nodeId].x;\n totalFy += forces[nodeId].y;\n }\n var correctionFx = totalFx / nodeIndices.length;\n var correctionFy = totalFy / nodeIndices.length;\n\n for (let i = 0; i < nodeIndices.length; i++) {\n let nodeId = nodeIndices[i];\n forces[nodeId].x -= correctionFx;\n forces[nodeId].y -= correctionFy;\n }\n }\n\n}\n\nexport default HierarchicalSpringSolver;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/physics/HierarchicalSpringSolver.js","class CentralGravitySolver {\n constructor(body, physicsBody, options) {\n this.body = body;\n this.physicsBody = physicsBody;\n this.setOptions(options);\n }\n\n setOptions(options) {\n this.options = options;\n }\n\n solve() {\n let dx, dy, distance, node;\n let nodes = this.body.nodes;\n let nodeIndices = this.physicsBody.physicsNodeIndices;\n let forces = this.physicsBody.forces;\n\n for (let i = 0; i < nodeIndices.length; i++) {\n let nodeId = nodeIndices[i];\n node = nodes[nodeId];\n dx = -node.x;\n dy = -node.y;\n distance = Math.sqrt(dx * dx + dy * dy);\n\n this._calculateForces(distance, dx, dy, forces, node);\n }\n }\n\n /**\n * Calculate the forces based on the distance.\n * @private\n */\n _calculateForces(distance, dx, dy, forces, node) {\n let gravityForce = (distance === 0) ? 0 : (this.options.centralGravity / distance);\n forces[node.id].x = dx * gravityForce;\n forces[node.id].y = dy * gravityForce;\n }\n}\n\n\nexport default CentralGravitySolver;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/physics/CentralGravitySolver.js","import BarnesHutSolver from \"./BarnesHutSolver\"\n\nclass ForceAtlas2BasedRepulsionSolver extends BarnesHutSolver {\n constructor(body, physicsBody, options) {\n super(body, physicsBody, options);\n }\n\n /**\n * Calculate the forces based on the distance.\n *\n * @param distance\n * @param dx\n * @param dy\n * @param node\n * @param parentBranch\n * @private\n */\n _calculateForces(distance, dx, dy, node, parentBranch) {\n if (distance === 0) {\n distance = 0.1 * Math.random();\n dx = distance;\n }\n\n if (this.overlapAvoidanceFactor < 1 && node.shape.radius) {\n distance = Math.max(0.1 + (this.overlapAvoidanceFactor * node.shape.radius), distance - node.shape.radius);\n }\n\n let degree = (node.edges.length + 1);\n // the dividing by the distance cubed instead of squared allows us to get the fx and fy components without sines and cosines\n // it is shorthand for gravityforce with distance squared and fx = dx/distance * gravityForce\n let gravityForce = this.options.gravitationalConstant * parentBranch.mass * node.options.mass * degree / Math.pow(distance,2);\n let fx = dx * gravityForce;\n let fy = dy * gravityForce;\n\n this.physicsBody.forces[node.id].x += fx;\n this.physicsBody.forces[node.id].y += fy;\n }\n}\n\nexport default ForceAtlas2BasedRepulsionSolver;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/physics/FA2BasedRepulsionSolver.js","import CentralGravitySolver from \"./CentralGravitySolver\"\n\nclass ForceAtlas2BasedCentralGravitySolver extends CentralGravitySolver {\n constructor(body, physicsBody, options) {\n super(body, physicsBody, options);\n }\n\n\n /**\n * Calculate the forces based on the distance.\n * @private\n */\n _calculateForces(distance, dx, dy, forces, node) {\n if (distance > 0) {\n let degree = (node.edges.length + 1);\n let gravityForce = this.options.centralGravity * degree * node.options.mass;\n forces[node.id].x = dx * gravityForce;\n forces[node.id].y = dy * gravityForce;\n }\n }\n}\n\nexport default ForceAtlas2BasedCentralGravitySolver;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/physics/FA2BasedCentralGravitySolver.js","let util = require(\"../../util\");\nimport NetworkUtil from '../NetworkUtil';\nimport Cluster from './components/nodes/Cluster'\n\nclass ClusterEngine {\n constructor(body) {\n this.body = body;\n this.clusteredNodes = {};\n this.clusteredEdges = {};\n\n this.options = {};\n this.defaultOptions = {};\n util.extend(this.options, this.defaultOptions);\n\n this.body.emitter.on('_resetData', () => {this.clusteredNodes = {}; this.clusteredEdges = {};})\n }\n\n /**\n *\n * @param hubsize\n * @param options\n */\n clusterByHubsize(hubsize, options) {\n if (hubsize === undefined) {\n hubsize = this._getHubSize();\n }\n else if (typeof(hubsize) === \"object\") {\n options = this._checkOptions(hubsize);\n hubsize = this._getHubSize();\n }\n\n let nodesToCluster = [];\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n let node = this.body.nodes[this.body.nodeIndices[i]];\n if (node.edges.length >= hubsize) {\n nodesToCluster.push(node.id);\n }\n }\n\n for (let i = 0; i < nodesToCluster.length; i++) {\n this.clusterByConnection(nodesToCluster[i],options,true);\n }\n\n this.body.emitter.emit('_dataChanged');\n }\n\n\n /**\n * loop over all nodes, check if they adhere to the condition and cluster if needed.\n * @param options\n * @param refreshData\n */\n cluster(options = {}, refreshData = true) {\n if (options.joinCondition === undefined) {throw new Error(\"Cannot call clusterByNodeData without a joinCondition function in the options.\");}\n\n // check if the options object is fine, append if needed\n options = this._checkOptions(options);\n\n let childNodesObj = {};\n let childEdgesObj = {};\n\n // collect the nodes that will be in the cluster\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n let nodeId = this.body.nodeIndices[i];\n let node = this.body.nodes[nodeId];\n let clonedOptions = NetworkUtil.cloneOptions(node);\n if (options.joinCondition(clonedOptions) === true) {\n childNodesObj[nodeId] = this.body.nodes[nodeId];\n\n // collect the nodes that will be in the cluster\n for (let i = 0; i < node.edges.length; i++) {\n let edge = node.edges[i];\n if (this.clusteredEdges[edge.id] === undefined) {\n childEdgesObj[edge.id] = edge;\n }\n }\n }\n }\n\n this._cluster(childNodesObj, childEdgesObj, options, refreshData);\n }\n\n\n /**\n * Cluster all nodes in the network that have only X edges\n * @param edgeCount\n * @param options\n * @param refreshData\n */\n clusterByEdgeCount(edgeCount, options, refreshData = true) {\n options = this._checkOptions(options);\n let clusters = [];\n let usedNodes = {};\n let edge, edges, node, nodeId, relevantEdgeCount;\n // collect the nodes that will be in the cluster\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n let childNodesObj = {};\n let childEdgesObj = {};\n nodeId = this.body.nodeIndices[i];\n\n // if this node is already used in another cluster this session, we do not have to re-evaluate it.\n if (usedNodes[nodeId] === undefined) {\n relevantEdgeCount = 0;\n node = this.body.nodes[nodeId];\n edges = [];\n for (let j = 0; j < node.edges.length; j++) {\n edge = node.edges[j];\n if (this.clusteredEdges[edge.id] === undefined) {\n if (edge.toId !== edge.fromId) {\n relevantEdgeCount++;\n }\n edges.push(edge);\n }\n }\n\n // this node qualifies, we collect its neighbours to start the clustering process.\n if (relevantEdgeCount === edgeCount) {\n let gatheringSuccessful = true;\n for (let j = 0; j < edges.length; j++) {\n edge = edges[j];\n let childNodeId = this._getConnectedId(edge, nodeId);\n // add the nodes to the list by the join condition.\n if (options.joinCondition === undefined) {\n childEdgesObj[edge.id] = edge;\n childNodesObj[nodeId] = this.body.nodes[nodeId];\n childNodesObj[childNodeId] = this.body.nodes[childNodeId];\n usedNodes[nodeId] = true;\n }\n else {\n let clonedOptions = NetworkUtil.cloneOptions(this.body.nodes[nodeId]);\n if (options.joinCondition(clonedOptions) === true) {\n childEdgesObj[edge.id] = edge;\n childNodesObj[nodeId] = this.body.nodes[nodeId];\n usedNodes[nodeId] = true;\n }\n else {\n // this node does not qualify after all.\n gatheringSuccessful = false;\n break;\n }\n }\n }\n\n // add to the cluster queue\n if (Object.keys(childNodesObj).length > 0 && Object.keys(childEdgesObj).length > 0 && gatheringSuccessful === true) {\n clusters.push({nodes: childNodesObj, edges: childEdgesObj})\n }\n }\n }\n }\n\n for (let i = 0; i < clusters.length; i++) {\n this._cluster(clusters[i].nodes, clusters[i].edges, options, false)\n }\n\n if (refreshData === true) {\n this.body.emitter.emit('_dataChanged');\n }\n }\n\n /**\n * Cluster all nodes in the network that have only 1 edge\n * @param options\n * @param refreshData\n */\n clusterOutliers(options, refreshData = true) {\n this.clusterByEdgeCount(1,options,refreshData);\n }\n\n /**\n * Cluster all nodes in the network that have only 2 edge\n * @param options\n * @param refreshData\n */\n clusterBridges(options, refreshData = true) {\n this.clusterByEdgeCount(2,options,refreshData);\n }\n\n\n\n /**\n * suck all connected nodes of a node into the node.\n * @param nodeId\n * @param options\n * @param refreshData\n */\n clusterByConnection(nodeId, options, refreshData = true) {\n // kill conditions\n if (nodeId === undefined) {throw new Error(\"No nodeId supplied to clusterByConnection!\");}\n if (this.body.nodes[nodeId] === undefined) {throw new Error(\"The nodeId given to clusterByConnection does not exist!\");}\n\n let node = this.body.nodes[nodeId];\n options = this._checkOptions(options, node);\n if (options.clusterNodeProperties.x === undefined) {options.clusterNodeProperties.x = node.x;}\n if (options.clusterNodeProperties.y === undefined) {options.clusterNodeProperties.y = node.y;}\n if (options.clusterNodeProperties.fixed === undefined) {\n options.clusterNodeProperties.fixed = {};\n options.clusterNodeProperties.fixed.x = node.options.fixed.x;\n options.clusterNodeProperties.fixed.y = node.options.fixed.y;\n }\n\n\n let childNodesObj = {};\n let childEdgesObj = {};\n let parentNodeId = node.id;\n let parentClonedOptions = NetworkUtil.cloneOptions(node);\n childNodesObj[parentNodeId] = node;\n\n // collect the nodes that will be in the cluster\n for (let i = 0; i < node.edges.length; i++) {\n let edge = node.edges[i];\n if (this.clusteredEdges[edge.id] === undefined) {\n let childNodeId = this._getConnectedId(edge, parentNodeId);\n\n // if the child node is not in a cluster\n if (this.clusteredNodes[childNodeId] === undefined) {\n if (childNodeId !== parentNodeId) {\n if (options.joinCondition === undefined) {\n childEdgesObj[edge.id] = edge;\n childNodesObj[childNodeId] = this.body.nodes[childNodeId];\n }\n else {\n // clone the options and insert some additional parameters that could be interesting.\n let childClonedOptions = NetworkUtil.cloneOptions(this.body.nodes[childNodeId]);\n if (options.joinCondition(parentClonedOptions, childClonedOptions) === true) {\n childEdgesObj[edge.id] = edge;\n childNodesObj[childNodeId] = this.body.nodes[childNodeId];\n }\n }\n }\n else {\n // swallow the edge if it is self-referencing.\n childEdgesObj[edge.id] = edge;\n }\n }\n }\n }\n var childNodeIDs = Object.keys(childNodesObj).map(function(childNode){\n return childNodesObj[childNode].id;\n })\n\n for (childNode in childNodesObj) {\n var childNode = childNodesObj[childNode];\n for (var y=0; y < childNode.edges.length; y++){\n var childEdge = childNode.edges[y];\n if (childNodeIDs.indexOf(this._getConnectedId(childEdge,childNode.id)) > -1){\n childEdgesObj[childEdge.id] = childEdge;\n }\n }\n }\n this._cluster(childNodesObj, childEdgesObj, options, refreshData);\n }\n\n\n /**\n * This function creates the edges that will be attached to the cluster\n * It looks for edges that are connected to the nodes from the \"outside' of the cluster.\n *\n * @param childNodesObj\n * @param childEdgesObj\n * @param clusterNodeProperties\n * @param clusterEdgeProperties\n * @private\n */\n _createClusterEdges (childNodesObj, childEdgesObj, clusterNodeProperties, clusterEdgeProperties) {\n let edge, childNodeId, childNode, toId, fromId, otherNodeId;\n\n // loop over all child nodes and their edges to find edges going out of the cluster\n // these edges will be replaced by clusterEdges.\n let childKeys = Object.keys(childNodesObj);\n let createEdges = [];\n for (let i = 0; i < childKeys.length; i++) {\n childNodeId = childKeys[i];\n childNode = childNodesObj[childNodeId];\n\n // construct new edges from the cluster to others\n for (let j = 0; j < childNode.edges.length; j++) {\n edge = childNode.edges[j];\n // we only handle edges that are visible to the system, not the disabled ones from the clustering process.\n if (this.clusteredEdges[edge.id] === undefined) {\n // self-referencing edges will be added to the \"hidden\" list\n if (edge.toId == edge.fromId) {\n childEdgesObj[edge.id] = edge;\n }\n else {\n // set up the from and to.\n if (edge.toId == childNodeId) { // this is a double equals because ints and strings can be interchanged here.\n toId = clusterNodeProperties.id;\n fromId = edge.fromId;\n otherNodeId = fromId;\n }\n else {\n toId = edge.toId;\n fromId = clusterNodeProperties.id;\n otherNodeId = toId;\n }\n }\n\n // Only edges from the cluster outwards are being replaced.\n if (childNodesObj[otherNodeId] === undefined) {\n createEdges.push({edge: edge, fromId: fromId, toId: toId});\n }\n }\n }\n }\n\n // here we actually create the replacement edges. We could not do this in the loop above as the creation process\n // would add an edge to the edges array we are iterating over.\n for (let j = 0; j < createEdges.length; j++) {\n let edge = createEdges[j].edge;\n // copy the options of the edge we will replace\n let clonedOptions = NetworkUtil.cloneOptions(edge, 'edge');\n // make sure the properties of clusterEdges are superimposed on it\n util.deepExtend(clonedOptions, clusterEdgeProperties);\n\n // set up the edge\n clonedOptions.from = createEdges[j].fromId;\n clonedOptions.to = createEdges[j].toId;\n clonedOptions.id = 'clusterEdge:' + util.randomUUID();\n //clonedOptions.id = '(cf: ' + createEdges[j].fromId + \" to: \" + createEdges[j].toId + \")\" + Math.random();\n\n // create the edge and give a reference to the one it replaced.\n let newEdge = this.body.functions.createEdge(clonedOptions);\n newEdge.clusteringEdgeReplacingId = edge.id;\n\n // also reference the new edge in the old edge\n this.body.edges[edge.id].edgeReplacedById = newEdge.id;\n\n // connect the edge.\n this.body.edges[newEdge.id] = newEdge;\n newEdge.connect();\n\n // hide the replaced edge\n this._backupEdgeOptions(edge);\n edge.setOptions({physics:false, hidden:true});\n }\n\n }\n\n /**\n * This function checks the options that can be supplied to the different cluster functions\n * for certain fields and inserts defaults if needed\n * @param options\n * @returns {*}\n * @private\n */\n _checkOptions(options = {}) {\n if (options.clusterEdgeProperties === undefined) {options.clusterEdgeProperties = {};}\n if (options.clusterNodeProperties === undefined) {options.clusterNodeProperties = {};}\n\n return options;\n }\n\n /**\n *\n * @param {Object} childNodesObj | object with node objects, id as keys, same as childNodes except it also contains a source node\n * @param {Object} childEdgesObj | object with edge objects, id as keys\n * @param {Array} options | object with {clusterNodeProperties, clusterEdgeProperties, processProperties}\n * @param {Boolean} refreshData | when true, do not wrap up\n * @private\n */\n _cluster(childNodesObj, childEdgesObj, options, refreshData = true) {\n // kill condition: no nodes don't bother\n if (Object.keys(childNodesObj).length == 0) {return;}\n\n // allow clusters of 1 if options allow\n if (Object.keys(childNodesObj).length == 1 && options.clusterNodeProperties.allowSingleNodeCluster != true) {return;}\n\n // check if this cluster call is not trying to cluster anything that is in another cluster.\n for (let nodeId in childNodesObj) {\n if (childNodesObj.hasOwnProperty(nodeId)) {\n if (this.clusteredNodes[nodeId] !== undefined) {\n return;\n }\n }\n }\n\n let clusterNodeProperties = util.deepExtend({},options.clusterNodeProperties);\n\n // construct the clusterNodeProperties\n if (options.processProperties !== undefined) {\n // get the childNode options\n let childNodesOptions = [];\n for (let nodeId in childNodesObj) {\n if (childNodesObj.hasOwnProperty(nodeId)) {\n let clonedOptions = NetworkUtil.cloneOptions(childNodesObj[nodeId]);\n childNodesOptions.push(clonedOptions);\n }\n }\n\n // get cluster properties based on childNodes\n let childEdgesOptions = [];\n for (let edgeId in childEdgesObj) {\n if (childEdgesObj.hasOwnProperty(edgeId)) {\n // these cluster edges will be removed on creation of the cluster.\n if (edgeId.substr(0, 12) !== \"clusterEdge:\") {\n let clonedOptions = NetworkUtil.cloneOptions(childEdgesObj[edgeId], 'edge');\n childEdgesOptions.push(clonedOptions);\n }\n }\n }\n\n clusterNodeProperties = options.processProperties(clusterNodeProperties, childNodesOptions, childEdgesOptions);\n if (!clusterNodeProperties) {\n throw new Error(\"The processProperties function does not return properties!\");\n }\n }\n\n // check if we have an unique id;\n if (clusterNodeProperties.id === undefined) {clusterNodeProperties.id = 'cluster:' + util.randomUUID();}\n let clusterId = clusterNodeProperties.id;\n\n if (clusterNodeProperties.label === undefined) {\n clusterNodeProperties.label = 'cluster';\n }\n\n\n // give the clusterNode a position if it does not have one.\n let pos = undefined;\n if (clusterNodeProperties.x === undefined) {\n pos = this._getClusterPosition(childNodesObj);\n clusterNodeProperties.x = pos.x;\n }\n if (clusterNodeProperties.y === undefined) {\n if (pos === undefined) {pos = this._getClusterPosition(childNodesObj);}\n clusterNodeProperties.y = pos.y;\n }\n\n // force the ID to remain the same\n clusterNodeProperties.id = clusterId;\n\n // create the clusterNode\n let clusterNode = this.body.functions.createNode(clusterNodeProperties, Cluster);\n clusterNode.isCluster = true;\n clusterNode.containedNodes = childNodesObj;\n clusterNode.containedEdges = childEdgesObj;\n // cache a copy from the cluster edge properties if we have to reconnect others later on\n clusterNode.clusterEdgeProperties = options.clusterEdgeProperties;\n\n // finally put the cluster node into global\n this.body.nodes[clusterNodeProperties.id] = clusterNode;\n\n // create the new edges that will connect to the cluster, all self-referencing edges will be added to childEdgesObject here.\n this._createClusterEdges(childNodesObj, childEdgesObj, clusterNodeProperties, options.clusterEdgeProperties);\n\n // disable the childEdges\n for (let edgeId in childEdgesObj) {\n if (childEdgesObj.hasOwnProperty(edgeId)) {\n if (this.body.edges[edgeId] !== undefined) {\n let edge = this.body.edges[edgeId];\n // cache the options before changing\n this._backupEdgeOptions(edge);\n // disable physics and hide the edge\n edge.setOptions({physics:false, hidden:true});\n }\n }\n }\n\n // disable the childNodes\n for (let nodeId in childNodesObj) {\n if (childNodesObj.hasOwnProperty(nodeId)) {\n this.clusteredNodes[nodeId] = {clusterId:clusterNodeProperties.id, node: this.body.nodes[nodeId]};\n this.body.nodes[nodeId].setOptions({hidden:true, physics:false});\n }\n }\n\n // set ID to undefined so no duplicates arise\n clusterNodeProperties.id = undefined;\n\n // wrap up\n if (refreshData === true) {\n this.body.emitter.emit('_dataChanged');\n }\n }\n\n _backupEdgeOptions(edge) {\n if (this.clusteredEdges[edge.id] === undefined) {\n this.clusteredEdges[edge.id] = {physics: edge.options.physics, hidden: edge.options.hidden};\n }\n }\n\n _restoreEdge(edge) {\n let originalOptions = this.clusteredEdges[edge.id];\n if (originalOptions !== undefined) {\n edge.setOptions({physics: originalOptions.physics, hidden: originalOptions.hidden});\n delete this.clusteredEdges[edge.id];\n }\n }\n\n\n /**\n * Check if a node is a cluster.\n * @param nodeId\n * @returns {*}\n */\n isCluster(nodeId) {\n if (this.body.nodes[nodeId] !== undefined) {\n return this.body.nodes[nodeId].isCluster === true;\n }\n else {\n console.log(\"Node does not exist.\");\n return false;\n }\n }\n\n /**\n * get the position of the cluster node based on what's inside\n * @param {object} childNodesObj | object with node objects, id as keys\n * @returns {{x: number, y: number}}\n * @private\n */\n _getClusterPosition(childNodesObj) {\n let childKeys = Object.keys(childNodesObj);\n let minX = childNodesObj[childKeys[0]].x;\n let maxX = childNodesObj[childKeys[0]].x;\n let minY = childNodesObj[childKeys[0]].y;\n let maxY = childNodesObj[childKeys[0]].y;\n let node;\n for (let i = 1; i < childKeys.length; i++) {\n node = childNodesObj[childKeys[i]];\n minX = node.x < minX ? node.x : minX;\n maxX = node.x > maxX ? node.x : maxX;\n minY = node.y < minY ? node.y : minY;\n maxY = node.y > maxY ? node.y : maxY;\n }\n\n\n return {x: 0.5*(minX + maxX), y: 0.5*(minY + maxY)};\n }\n\n\n\n /**\n * Open a cluster by calling this function.\n * @param {String} clusterNodeId | the ID of the cluster node\n * @param {Boolean} refreshData | wrap up afterwards if not true\n */\n openCluster(clusterNodeId, options, refreshData = true) {\n // kill conditions\n if (clusterNodeId === undefined) {throw new Error(\"No clusterNodeId supplied to openCluster.\");}\n if (this.body.nodes[clusterNodeId] === undefined) {throw new Error(\"The clusterNodeId supplied to openCluster does not exist.\");}\n if (this.body.nodes[clusterNodeId].containedNodes === undefined) {\n console.log(\"The node:\" + clusterNodeId + \" is not a cluster.\");\n return\n }\n let clusterNode = this.body.nodes[clusterNodeId];\n let containedNodes = clusterNode.containedNodes;\n let containedEdges = clusterNode.containedEdges;\n\n // allow the user to position the nodes after release.\n if (options !== undefined && options.releaseFunction !== undefined && typeof options.releaseFunction === 'function') {\n let positions = {};\n let clusterPosition = {x:clusterNode.x, y:clusterNode.y};\n for (let nodeId in containedNodes) {\n if (containedNodes.hasOwnProperty(nodeId)) {\n let containedNode = this.body.nodes[nodeId];\n positions[nodeId] = {x: containedNode.x, y: containedNode.y};\n }\n }\n let newPositions = options.releaseFunction(clusterPosition, positions);\n\n for (let nodeId in containedNodes) {\n if (containedNodes.hasOwnProperty(nodeId)) {\n let containedNode = this.body.nodes[nodeId];\n if (newPositions[nodeId] !== undefined) {\n containedNode.x = (newPositions[nodeId].x === undefined ? clusterNode.x : newPositions[nodeId].x);\n containedNode.y = (newPositions[nodeId].y === undefined ? clusterNode.y : newPositions[nodeId].y);\n }\n }\n }\n }\n else {\n // copy the position from the cluster\n for (let nodeId in containedNodes) {\n if (containedNodes.hasOwnProperty(nodeId)) {\n let containedNode = this.body.nodes[nodeId];\n containedNode = containedNodes[nodeId];\n // inherit position\n if (containedNode.options.fixed.x === false) {containedNode.x = clusterNode.x;}\n if (containedNode.options.fixed.y === false) {containedNode.y = clusterNode.y;}\n }\n }\n }\n\n // release nodes\n for (let nodeId in containedNodes) {\n if (containedNodes.hasOwnProperty(nodeId)) {\n let containedNode = this.body.nodes[nodeId];\n\n // inherit speed\n containedNode.vx = clusterNode.vx;\n containedNode.vy = clusterNode.vy;\n\n // we use these methods to avoid re-instantiating the shape, which happens with setOptions.\n containedNode.setOptions({hidden:false, physics:true});\n\n delete this.clusteredNodes[nodeId];\n }\n }\n\n // copy the clusterNode edges because we cannot iterate over an object that we add or remove from.\n let edgesToBeDeleted = [];\n for (let i = 0; i < clusterNode.edges.length; i++) {\n edgesToBeDeleted.push(clusterNode.edges[i]);\n }\n\n // actually handling the deleting.\n for (let i = 0; i < edgesToBeDeleted.length; i++) {\n let edge = edgesToBeDeleted[i];\n\n let otherNodeId = this._getConnectedId(edge, clusterNodeId);\n // if the other node is in another cluster, we transfer ownership of this edge to the other cluster\n if (this.clusteredNodes[otherNodeId] !== undefined) {\n // transfer ownership:\n let otherCluster = this.body.nodes[this.clusteredNodes[otherNodeId].clusterId];\n let transferEdge = this.body.edges[edge.clusteringEdgeReplacingId];\n if (transferEdge !== undefined) {\n otherCluster.containedEdges[transferEdge.id] = transferEdge;\n\n // delete local reference\n delete containedEdges[transferEdge.id];\n\n // create new cluster edge from the otherCluster:\n // get to and from\n let fromId = transferEdge.fromId;\n let toId = transferEdge.toId;\n if (transferEdge.toId == otherNodeId) {\n toId = this.clusteredNodes[otherNodeId].clusterId;\n }\n else {\n fromId = this.clusteredNodes[otherNodeId].clusterId;\n }\n\n // clone the options and apply the cluster options to them\n let clonedOptions = NetworkUtil.cloneOptions(transferEdge, 'edge');\n util.deepExtend(clonedOptions, otherCluster.clusterEdgeProperties);\n\n // apply the edge specific options to it.\n let id = 'clusterEdge:' + util.randomUUID();\n util.deepExtend(clonedOptions, {from: fromId, to: toId, hidden: false, physics: true, id: id});\n\n // create it\n let newEdge = this.body.functions.createEdge(clonedOptions);\n newEdge.clusteringEdgeReplacingId = transferEdge.id;\n this.body.edges[id] = newEdge;\n this.body.edges[id].connect();\n }\n }\n else {\n let replacedEdge = this.body.edges[edge.clusteringEdgeReplacingId];\n if (replacedEdge !== undefined) {\n this._restoreEdge(replacedEdge);\n }\n }\n edge.cleanup();\n // this removes the edge from node.edges, which is why edgeIds is formed\n edge.disconnect();\n delete this.body.edges[edge.id];\n }\n\n // handle the releasing of the edges\n for (let edgeId in containedEdges) {\n if (containedEdges.hasOwnProperty(edgeId)) {\n this._restoreEdge(containedEdges[edgeId]);\n }\n }\n\n // remove clusterNode\n delete this.body.nodes[clusterNodeId];\n\n if (refreshData === true) {\n this.body.emitter.emit('_dataChanged');\n }\n }\n\n getNodesInCluster(clusterId) {\n let nodesArray = [];\n if (this.isCluster(clusterId) === true) {\n let containedNodes = this.body.nodes[clusterId].containedNodes;\n for (let nodeId in containedNodes) {\n if (containedNodes.hasOwnProperty(nodeId)) {\n nodesArray.push(this.body.nodes[nodeId].id)\n }\n }\n }\n\n return nodesArray;\n }\n\n /**\n * Get the stack clusterId's that a certain node resides in. cluster A -> cluster B -> cluster C -> node\n * @param nodeId\n * @returns {Array}\n */\n findNode(nodeId) {\n let stack = [];\n let max = 100;\n let counter = 0;\n\n while (this.clusteredNodes[nodeId] !== undefined && counter < max) {\n stack.push(this.body.nodes[nodeId].id);\n nodeId = this.clusteredNodes[nodeId].clusterId;\n counter++;\n }\n stack.push(this.body.nodes[nodeId].id);\n stack.reverse();\n\n return stack;\n }\n\n /**\n * Using a clustered nodeId, update with the new options\n * @param clusteredNodeId\n * @param {object} newOptions\n */\n updateClusteredNode(clusteredNodeId, newOptions) {\n if (clusteredNodeId === undefined) {throw new Error(\"No clusteredNodeId supplied to updateClusteredNode.\");}\n if (newOptions === undefined) {throw new Error(\"No newOptions supplied to updateClusteredNode.\");}\n if (this.body.nodes[clusteredNodeId] === undefined) {throw new Error(\"The clusteredNodeId supplied to updateClusteredNode does not exist.\");}\n\n this.body.nodes[clusteredNodeId].setOptions(newOptions);\n this.body.emitter.emit('_dataChanged');\n }\n\n /**\n * Using a base edgeId, update all related clustered edges with the new options\n * @param startEdgeId\n * @param {object} newOptions\n */\n updateEdge(startEdgeId, newOptions) {\n if (startEdgeId === undefined) {throw new Error(\"No startEdgeId supplied to updateEdge.\");}\n if (newOptions === undefined) {throw new Error(\"No newOptions supplied to updateEdge.\");}\n if (this.body.edges[startEdgeId] === undefined) {throw new Error(\"The startEdgeId supplied to updateEdge does not exist.\");}\n\n let allEdgeIds = this.getClusteredEdges(startEdgeId);\n for (let i = 0; i < allEdgeIds.length; i++) {\n var edge = this.body.edges[allEdgeIds[i]];\n edge.setOptions(newOptions);\n }\n this.body.emitter.emit('_dataChanged');\n }\n\n /**\n * Get a stack of clusterEdgeId's (+base edgeid) that a base edge is the same as. cluster edge C -> cluster edge B -> cluster edge A -> base edge(edgeId)\n * @param edgeId\n * @returns {Array}\n */\n getClusteredEdges(edgeId) {\n let stack = [];\n let max = 100;\n let counter = 0;\n\n while (edgeId !== undefined && this.body.edges[edgeId] !== undefined && counter < max) {\n stack.push(this.body.edges[edgeId].id);\n edgeId = this.body.edges[edgeId].edgeReplacedById;\n counter++;\n }\n stack.reverse();\n return stack;\n }\n\n /**\n * Get the base edge id of clusterEdgeId. cluster edge (clusteredEdgeId) -> cluster edge B -> cluster edge C -> base edge\n * @param clusteredEdgeId\n * @returns baseEdgeId\n */\n getBaseEdge(clusteredEdgeId) {\n let baseEdgeId = clusteredEdgeId;\n let max = 100;\n let counter = 0;\n\n while (clusteredEdgeId !== undefined && this.body.edges[clusteredEdgeId] !== undefined && counter < max) {\n clusteredEdgeId = this.body.edges[clusteredEdgeId].clusteringEdgeReplacingId;\n counter++;\n if (clusteredEdgeId !== undefined) {\n baseEdgeId = clusteredEdgeId;\n }\n }\n return baseEdgeId;\n }\n\n /**\n * Get the Id the node is connected to\n * @param edge\n * @param nodeId\n * @returns {*}\n * @private\n */\n _getConnectedId(edge, nodeId) {\n if (edge.toId != nodeId) {\n return edge.toId;\n }\n else if (edge.fromId != nodeId) {\n return edge.fromId;\n }\n else {\n return edge.fromId;\n }\n }\n\n /**\n * We determine how many connections denote an important hub.\n * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%)\n *\n * @private\n */\n _getHubSize() {\n let average = 0;\n let averageSquared = 0;\n let hubCounter = 0;\n let largestHub = 0;\n\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n let node = this.body.nodes[this.body.nodeIndices[i]];\n if (node.edges.length > largestHub) {\n largestHub = node.edges.length;\n }\n average += node.edges.length;\n averageSquared += Math.pow(node.edges.length,2);\n hubCounter += 1;\n }\n average = average / hubCounter;\n averageSquared = averageSquared / hubCounter;\n\n let variance = averageSquared - Math.pow(average,2);\n let standardDeviation = Math.sqrt(variance);\n\n let hubThreshold = Math.floor(average + 2*standardDeviation);\n\n // always have at least one to cluster\n if (hubThreshold > largestHub) {\n hubThreshold = largestHub;\n }\n\n return hubThreshold;\n };\n\n}\n\n\nexport default ClusterEngine;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/Clustering.js","let util = require(\"../util\");\nclass NetworkUtil {\n constructor() {}\n\n /**\n * Find the center position of the network considering the bounding boxes\n */\n static getRange(allNodes, specificNodes = []) {\n var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node;\n if (specificNodes.length > 0) {\n for (var i = 0; i < specificNodes.length; i++) {\n node = allNodes[specificNodes[i]];\n if (minX > node.shape.boundingBox.left) {\n minX = node.shape.boundingBox.left;\n }\n if (maxX < node.shape.boundingBox.right) {\n maxX = node.shape.boundingBox.right;\n }\n if (minY > node.shape.boundingBox.top) {\n minY = node.shape.boundingBox.top;\n } // top is negative, bottom is positive\n if (maxY < node.shape.boundingBox.bottom) {\n maxY = node.shape.boundingBox.bottom;\n } // top is negative, bottom is positive\n }\n }\n\n if (minX === 1e9 && maxX === -1e9 && minY === 1e9 && maxY === -1e9) {\n minY = 0, maxY = 0, minX = 0, maxX = 0;\n }\n return {minX: minX, maxX: maxX, minY: minY, maxY: maxY};\n }\n\n /**\n * Find the center position of the network\n */\n static getRangeCore(allNodes, specificNodes = []) {\n var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node;\n if (specificNodes.length > 0) {\n for (var i = 0; i < specificNodes.length; i++) {\n node = allNodes[specificNodes[i]];\n if (minX > node.x) {\n minX = node.x;\n }\n if (maxX < node.x) {\n maxX = node.x;\n }\n if (minY > node.y) {\n minY = node.y;\n } // top is negative, bottom is positive\n if (maxY < node.y) {\n maxY = node.y;\n } // top is negative, bottom is positive\n }\n }\n\n if (minX === 1e9 && maxX === -1e9 && minY === 1e9 && maxY === -1e9) {\n minY = 0, maxY = 0, minX = 0, maxX = 0;\n }\n return {minX: minX, maxX: maxX, minY: minY, maxY: maxY};\n }\n\n\n /**\n * @param {object} range = {minX: minX, maxX: maxX, minY: minY, maxY: maxY};\n * @returns {{x: number, y: number}}\n */\n static findCenter(range) {\n return {x: (0.5 * (range.maxX + range.minX)),\n y: (0.5 * (range.maxY + range.minY))};\n }\n\n\n /**\n * This returns a clone of the options or options of the edge or node to be used for construction of new edges or check functions for new nodes.\n * @param item\n * @param type\n * @returns {{}}\n */\n static cloneOptions(item, type) {\n let clonedOptions = {};\n if (type === undefined || type === 'node') {\n util.deepExtend(clonedOptions, item.options, true);\n clonedOptions.x = item.x;\n clonedOptions.y = item.y;\n clonedOptions.amountOfConnections = item.edges.length;\n }\n else {\n util.deepExtend(clonedOptions, item.options, true);\n }\n return clonedOptions;\n }\n\n}\n\nexport default NetworkUtil;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/NetworkUtil.js","import Node from '../Node'\n\n/**\n *\n */\nclass Cluster extends Node {\n constructor(options, body, imagelist, grouplist, globalOptions) {\n super(options, body, imagelist, grouplist, globalOptions);\n\n this.isCluster = true;\n this.containedNodes = {};\n this.containedEdges = {};\n }\n}\n\nexport default Cluster;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/nodes/Cluster.js","if (typeof window !== 'undefined') {\n window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;\n}\n\nlet util = require('../../util');\n\n\nclass CanvasRenderer {\n constructor(body, canvas) {\n this.body = body;\n this.canvas = canvas;\n\n this.redrawRequested = false;\n this.renderTimer = undefined;\n this.requiresTimeout = true;\n this.renderingActive = false;\n this.renderRequests = 0;\n this.pixelRatio = undefined;\n this.allowRedraw = true;\n\n this.dragging = false;\n this.options = {};\n this.defaultOptions = {\n hideEdgesOnDrag: false,\n hideNodesOnDrag: false\n };\n util.extend(this.options, this.defaultOptions);\n\n this._determineBrowserMethod();\n this.bindEventListeners();\n }\n\n bindEventListeners() {\n this.body.emitter.on(\"dragStart\", () => { this.dragging = true; });\n this.body.emitter.on(\"dragEnd\", () => { this.dragging = false; });\n this.body.emitter.on(\"_resizeNodes\", () => { this._resizeNodes(); });\n this.body.emitter.on(\"_redraw\", () => {\n if (this.renderingActive === false) {\n this._redraw();\n }\n });\n this.body.emitter.on(\"_blockRedraw\", () => {this.allowRedraw = false;});\n this.body.emitter.on(\"_allowRedraw\", () => {this.allowRedraw = true; this.redrawRequested = false;});\n this.body.emitter.on(\"_requestRedraw\", this._requestRedraw.bind(this));\n this.body.emitter.on(\"_startRendering\", () => {\n this.renderRequests += 1;\n this.renderingActive = true;\n this._startRendering();\n });\n this.body.emitter.on(\"_stopRendering\", () => {\n this.renderRequests -= 1;\n this.renderingActive = this.renderRequests > 0;\n this.renderTimer = undefined;\n });\n this.body.emitter.on('destroy', () => {\n this.renderRequests = 0;\n this.allowRedraw = false;\n this.renderingActive = false;\n if (this.requiresTimeout === true) {\n clearTimeout(this.renderTimer);\n }\n else {\n cancelAnimationFrame(this.renderTimer);\n }\n this.body.emitter.off();\n });\n\n }\n\n setOptions(options) {\n if (options !== undefined) {\n let fields = ['hideEdgesOnDrag','hideNodesOnDrag'];\n util.selectiveDeepExtend(fields,this.options, options);\n }\n }\n\n _startRendering() {\n if (this.renderingActive === true) {\n if (this.renderTimer === undefined) {\n if (this.requiresTimeout === true) {\n this.renderTimer = window.setTimeout(this._renderStep.bind(this), this.simulationInterval); // wait this.renderTimeStep milliseconds and perform the animation step function\n }\n else {\n this.renderTimer = window.requestAnimationFrame(this._renderStep.bind(this)); // wait this.renderTimeStep milliseconds and perform the animation step function\n }\n }\n }\n }\n\n _renderStep() {\n if (this.renderingActive === true) {\n // reset the renderTimer so a new scheduled animation step can be set\n this.renderTimer = undefined;\n\n if (this.requiresTimeout === true) {\n // this schedules a new simulation step\n this._startRendering();\n }\n\n this._redraw();\n\n if (this.requiresTimeout === false) {\n // this schedules a new simulation step\n this._startRendering();\n }\n }\n }\n\n /**\n * Redraw the network with the current data\n * chart will be resized too.\n */\n redraw() {\n this.body.emitter.emit('setSize');\n this._redraw();\n }\n\n /**\n * Redraw the network with the current data\n * @param hidden | used to get the first estimate of the node sizes. only the nodes are drawn after which they are quickly drawn over.\n * @private\n */\n _requestRedraw() {\n if (this.redrawRequested !== true && this.renderingActive === false && this.allowRedraw === true) {\n this.redrawRequested = true;\n if (this.requiresTimeout === true) {\n window.setTimeout(() => {this._redraw(false);}, 0);\n }\n else {\n window.requestAnimationFrame(() => {this._redraw(false);});\n }\n }\n }\n\n _redraw(hidden = false) {\n if (this.allowRedraw === true) {\n this.body.emitter.emit(\"initRedraw\");\n\n this.redrawRequested = false;\n let ctx = this.canvas.frame.canvas.getContext('2d');\n\n // when the container div was hidden, this fixes it back up!\n if (this.canvas.frame.canvas.width === 0 || this.canvas.frame.canvas.height === 0) {\n this.canvas.setSize();\n }\n\n this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1);\n\n ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n\n // clear the canvas\n let w = this.canvas.frame.canvas.clientWidth;\n let h = this.canvas.frame.canvas.clientHeight;\n ctx.clearRect(0, 0, w, h);\n\n // if the div is hidden, we stop the redraw here for performance.\n if (this.canvas.frame.clientWidth === 0) {\n return;\n }\n\n // set scaling and translation\n ctx.save();\n ctx.translate(this.body.view.translation.x, this.body.view.translation.y);\n ctx.scale(this.body.view.scale, this.body.view.scale);\n\n ctx.beginPath();\n this.body.emitter.emit(\"beforeDrawing\", ctx);\n ctx.closePath();\n\n if (hidden === false) {\n if (this.dragging === false || (this.dragging === true && this.options.hideEdgesOnDrag === false)) {\n this._drawEdges(ctx);\n }\n }\n\n if (this.dragging === false || (this.dragging === true && this.options.hideNodesOnDrag === false)) {\n this._drawNodes(ctx, hidden);\n }\n\n ctx.beginPath();\n this.body.emitter.emit(\"afterDrawing\", ctx);\n ctx.closePath();\n\n\n // restore original scaling and translation\n ctx.restore();\n if (hidden === true) {\n ctx.clearRect(0, 0, w, h);\n }\n }\n }\n\n\n /**\n * Redraw all nodes\n * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d');\n * @param {CanvasRenderingContext2D} ctx\n * @param {Boolean} [alwaysShow]\n * @private\n */\n _resizeNodes() {\n let ctx = this.canvas.frame.canvas.getContext('2d');\n if (this.pixelRatio === undefined) {\n this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1);\n }\n ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n ctx.save();\n ctx.translate(this.body.view.translation.x, this.body.view.translation.y);\n ctx.scale(this.body.view.scale, this.body.view.scale);\n\n let nodes = this.body.nodes;\n let node;\n\n // resize all nodes\n for (let nodeId in nodes) {\n if (nodes.hasOwnProperty(nodeId)) {\n node = nodes[nodeId];\n node.resize(ctx);\n node.updateBoundingBox(ctx, node.selected);\n }\n }\n\n // restore original scaling and translation\n ctx.restore();\n }\n\n /**\n * Redraw all nodes\n * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d');\n * @param {CanvasRenderingContext2D} ctx\n * @param {Boolean} [alwaysShow]\n * @private\n */\n _drawNodes(ctx, alwaysShow = false) {\n let nodes = this.body.nodes;\n let nodeIndices = this.body.nodeIndices;\n let node;\n let selected = [];\n let margin = 20;\n let topLeft = this.canvas.DOMtoCanvas({x:-margin,y:-margin});\n let bottomRight = this.canvas.DOMtoCanvas({\n x: this.canvas.frame.canvas.clientWidth+margin,\n y: this.canvas.frame.canvas.clientHeight+margin\n });\n let viewableArea = {top:topLeft.y,left:topLeft.x,bottom:bottomRight.y,right:bottomRight.x};\n\n // draw unselected nodes;\n for (let i = 0; i < nodeIndices.length; i++) {\n node = nodes[nodeIndices[i]];\n // set selected nodes aside\n if (node.isSelected()) {\n selected.push(nodeIndices[i]);\n }\n else {\n if (alwaysShow === true) {\n node.draw(ctx);\n }\n else if (node.isBoundingBoxOverlappingWith(viewableArea) === true) {\n node.draw(ctx);\n }\n else {\n node.updateBoundingBox(ctx, node.selected);\n }\n }\n }\n\n // draw the selected nodes on top\n for (let i = 0; i < selected.length; i++) {\n node = nodes[selected[i]];\n node.draw(ctx);\n }\n }\n\n\n /**\n * Redraw all edges\n * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d');\n * @param {CanvasRenderingContext2D} ctx\n * @private\n */\n _drawEdges(ctx) {\n let edges = this.body.edges;\n let edgeIndices = this.body.edgeIndices;\n let edge;\n\n for (let i = 0; i < edgeIndices.length; i++) {\n edge = edges[edgeIndices[i]];\n if (edge.connected === true) {\n edge.draw(ctx);\n }\n }\n }\n\n /**\n * Determine if the browser requires a setTimeout or a requestAnimationFrame. This was required because\n * some implementations (safari and IE9) did not support requestAnimationFrame\n * @private\n */\n _determineBrowserMethod() {\n if (typeof window !== 'undefined') {\n let browserType = navigator.userAgent.toLowerCase();\n this.requiresTimeout = false;\n if (browserType.indexOf('msie 9.0') != -1) { // IE 9\n this.requiresTimeout = true;\n }\n else if (browserType.indexOf('safari') != -1) { // safari\n if (browserType.indexOf('chrome') <= -1) {\n this.requiresTimeout = true;\n }\n }\n }\n else {\n this.requiresTimeout = true;\n }\n }\n\n}\n\nexport default CanvasRenderer;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/CanvasRenderer.js","let Hammer = require('../../module/hammer');\nlet hammerUtil = require('../../hammerUtil');\n\nlet util = require('../../util');\n\n/**\n * Create the main frame for the Network.\n * This function is executed once when a Network object is created. The frame\n * contains a canvas, and this canvas contains all objects like the axis and\n * nodes.\n * @private\n */\nclass Canvas {\n constructor(body) {\n this.body = body;\n this.pixelRatio = 1;\n this.resizeTimer = undefined;\n this.resizeFunction = this._onResize.bind(this);\n this.cameraState = {};\n this.initialized = false;\n this.canvasViewCenter = {};\n\n this.options = {};\n this.defaultOptions = {\n autoResize: true,\n height: '100%',\n width: '100%'\n };\n util.extend(this.options, this.defaultOptions);\n\n this.bindEventListeners();\n }\n\n bindEventListeners() {\n // bind the events\n this.body.emitter.once(\"resize\", (obj) => {\n if (obj.width !== 0) {\n this.body.view.translation.x = obj.width * 0.5;\n }\n if (obj.height !== 0) {\n this.body.view.translation.y = obj.height * 0.5;\n }\n });\n this.body.emitter.on(\"setSize\", this.setSize.bind(this));\n this.body.emitter.on(\"destroy\", () => {\n this.hammerFrame.destroy();\n this.hammer.destroy();\n this._cleanUp();\n });\n\n\n }\n\n setOptions(options) {\n if (options !== undefined) {\n let fields = ['width','height','autoResize'];\n util.selectiveDeepExtend(fields,this.options, options);\n }\n\n if (this.options.autoResize === true) {\n // automatically adapt to a changing size of the browser.\n this._cleanUp();\n this.resizeTimer = setInterval(() => {\n let changed = this.setSize();\n if (changed === true) {\n this.body.emitter.emit(\"_requestRedraw\");\n }\n }, 1000);\n this.resizeFunction = this._onResize.bind(this);\n util.addEventListener(window,'resize',this.resizeFunction);\n }\n }\n\n _cleanUp() {\n // automatically adapt to a changing size of the browser.\n if (this.resizeTimer !== undefined) {\n clearInterval(this.resizeTimer);\n }\n util.removeEventListener(window,'resize',this.resizeFunction);\n this.resizeFunction = undefined;\n }\n\n _onResize() {\n this.setSize();\n this.body.emitter.emit(\"_redraw\");\n }\n\n /**\n * Get and store the cameraState\n * @private\n */\n _getCameraState(pixelRatio = this.pixelRatio) {\n if (this.initialized === true) {\n this.cameraState.previousWidth = this.frame.canvas.width / pixelRatio;\n this.cameraState.previousHeight = this.frame.canvas.height / pixelRatio;\n this.cameraState.scale = this.body.view.scale;\n this.cameraState.position = this.DOMtoCanvas({\n x: 0.5 * this.frame.canvas.width / pixelRatio,\n y: 0.5 * this.frame.canvas.height / pixelRatio\n });\n }\n }\n\n /**\n * Set the cameraState\n * @private\n */\n _setCameraState() {\n if (this.cameraState.scale !== undefined &&\n this.frame.canvas.clientWidth !== 0 &&\n this.frame.canvas.clientHeight !== 0 &&\n this.pixelRatio !== 0 &&\n this.cameraState.previousWidth > 0) {\n\n let widthRatio = (this.frame.canvas.width / this.pixelRatio) / this.cameraState.previousWidth;\n let heightRatio = (this.frame.canvas.height / this.pixelRatio) / this.cameraState.previousHeight;\n let newScale = this.cameraState.scale;\n\n if (widthRatio != 1 && heightRatio != 1) {\n newScale = this.cameraState.scale * 0.5 * (widthRatio + heightRatio);\n }\n else if (widthRatio != 1) {\n newScale = this.cameraState.scale * widthRatio;\n }\n else if (heightRatio != 1) {\n newScale = this.cameraState.scale * heightRatio;\n }\n\n this.body.view.scale = newScale;\n // this comes from the view module.\n var currentViewCenter = this.DOMtoCanvas({\n x: 0.5 * this.frame.canvas.clientWidth,\n y: 0.5 * this.frame.canvas.clientHeight\n });\n\n var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node\n x: currentViewCenter.x - this.cameraState.position.x,\n y: currentViewCenter.y - this.cameraState.position.y\n };\n this.body.view.translation.x += distanceFromCenter.x * this.body.view.scale;\n this.body.view.translation.y += distanceFromCenter.y * this.body.view.scale;\n }\n }\n\n _prepareValue(value) {\n if (typeof value === 'number') {\n return value + 'px';\n }\n else if (typeof value === 'string') {\n if (value.indexOf('%') !== -1 || value.indexOf('px') !== -1) {\n return value;\n }\n else if (value.indexOf('%') === -1) {\n return value + 'px';\n }\n }\n throw new Error('Could not use the value supplied for width or height:' + value);\n }\n\n\n /**\n * Create the HTML\n */\n _create() {\n // remove all elements from the container element.\n while (this.body.container.hasChildNodes()) {\n this.body.container.removeChild(this.body.container.firstChild);\n }\n\n this.frame = document.createElement('div');\n this.frame.className = 'vis-network';\n this.frame.style.position = 'relative';\n this.frame.style.overflow = 'hidden';\n this.frame.tabIndex = 900; // tab index is required for keycharm to bind keystrokes to the div instead of the window\n\n //////////////////////////////////////////////////////////////////\n\n this.frame.canvas = document.createElement(\"canvas\");\n this.frame.canvas.style.position = 'relative';\n this.frame.appendChild(this.frame.canvas);\n\n if (!this.frame.canvas.getContext) {\n let noCanvas = document.createElement( 'DIV' );\n noCanvas.style.color = 'red';\n noCanvas.style.fontWeight = 'bold' ;\n noCanvas.style.padding = '10px';\n noCanvas.innerHTML = 'Error: your browser does not support HTML canvas';\n this.frame.canvas.appendChild(noCanvas);\n }\n else {\n let ctx = this.frame.canvas.getContext(\"2d\");\n this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1);\n\n this.frame.canvas.getContext(\"2d\").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n }\n\n // add the frame to the container element\n this.body.container.appendChild(this.frame);\n\n this.body.view.scale = 1;\n this.body.view.translation = {x: 0.5 * this.frame.canvas.clientWidth,y: 0.5 * this.frame.canvas.clientHeight};\n\n this._bindHammer();\n }\n\n\n /**\n * This function binds hammer, it can be repeated over and over due to the uniqueness check.\n * @private\n */\n _bindHammer() {\n if (this.hammer !== undefined) {\n this.hammer.destroy();\n }\n this.drag = {};\n this.pinch = {};\n\n // init hammer\n this.hammer = new Hammer(this.frame.canvas);\n this.hammer.get('pinch').set({enable: true});\n // enable to get better response, todo: test on mobile.\n this.hammer.get('pan').set({threshold:5, direction: Hammer.DIRECTION_ALL});\n\n hammerUtil.onTouch(this.hammer, (event) => {this.body.eventListeners.onTouch(event)});\n this.hammer.on('tap', (event) => {this.body.eventListeners.onTap(event)});\n this.hammer.on('doubletap', (event) => {this.body.eventListeners.onDoubleTap(event)});\n this.hammer.on('press', (event) => {this.body.eventListeners.onHold(event)});\n this.hammer.on('panstart', (event) => {this.body.eventListeners.onDragStart(event)});\n this.hammer.on('panmove', (event) => {this.body.eventListeners.onDrag(event)});\n this.hammer.on('panend', (event) => {this.body.eventListeners.onDragEnd(event)});\n this.hammer.on('pinch', (event) => {this.body.eventListeners.onPinch(event)});\n\n // TODO: neatly cleanup these handlers when re-creating the Canvas, IF these are done with hammer, event.stopPropagation will not work?\n this.frame.canvas.addEventListener('mousewheel', (event) => {this.body.eventListeners.onMouseWheel(event)});\n this.frame.canvas.addEventListener('DOMMouseScroll', (event) => {this.body.eventListeners.onMouseWheel(event)});\n\n this.frame.canvas.addEventListener('mousemove', (event) => {this.body.eventListeners.onMouseMove(event)});\n this.frame.canvas.addEventListener('contextmenu', (event) => {this.body.eventListeners.onContext(event)});\n\n this.hammerFrame = new Hammer(this.frame);\n hammerUtil.onRelease(this.hammerFrame, (event) => {this.body.eventListeners.onRelease(event)});\n }\n\n\n /**\n * Set a new size for the network\n * @param {string} width Width in pixels or percentage (for example '800px'\n * or '50%')\n * @param {string} height Height in pixels or percentage (for example '400px'\n * or '30%')\n */\n setSize(width = this.options.width, height = this.options.height) {\n width = this._prepareValue(width);\n height= this._prepareValue(height);\n\n let emitEvent = false;\n let oldWidth = this.frame.canvas.width;\n let oldHeight = this.frame.canvas.height;\n\n // update the pixel ratio\n let ctx = this.frame.canvas.getContext(\"2d\");\n let previousRatio = this.pixelRatio; // we cache this because the camera state storage needs the old value\n this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1);\n\n if (width != this.options.width || height != this.options.height || this.frame.style.width != width || this.frame.style.height != height) {\n this._getCameraState(previousRatio);\n\n this.frame.style.width = width;\n this.frame.style.height = height;\n\n this.frame.canvas.style.width = '100%';\n this.frame.canvas.style.height = '100%';\n\n this.frame.canvas.width = Math.round(this.frame.canvas.clientWidth * this.pixelRatio);\n this.frame.canvas.height = Math.round(this.frame.canvas.clientHeight * this.pixelRatio);\n\n this.options.width = width;\n this.options.height = height;\n\n this.canvasViewCenter = {\n x: 0.5 * this.frame.clientWidth,\n y: 0.5 * this.frame.clientHeight\n };\n\n emitEvent = true;\n }\n else {\n // this would adapt the width of the canvas to the width from 100% if and only if\n // there is a change.\n\n // store the camera if there is a change in size.\n if (this.frame.canvas.width != Math.round(this.frame.canvas.clientWidth * this.pixelRatio) || this.frame.canvas.height != Math.round(this.frame.canvas.clientHeight * this.pixelRatio)) {\n this._getCameraState(previousRatio);\n }\n\n if (this.frame.canvas.width != Math.round(this.frame.canvas.clientWidth * this.pixelRatio)) {\n this.frame.canvas.width = Math.round(this.frame.canvas.clientWidth * this.pixelRatio);\n emitEvent = true;\n }\n if (this.frame.canvas.height != Math.round(this.frame.canvas.clientHeight * this.pixelRatio)) {\n this.frame.canvas.height = Math.round(this.frame.canvas.clientHeight * this.pixelRatio);\n emitEvent = true;\n }\n }\n\n if (emitEvent === true) {\n this.body.emitter.emit('resize', {\n width:Math.round(this.frame.canvas.width / this.pixelRatio),\n height:Math.round(this.frame.canvas.height / this.pixelRatio),\n oldWidth: Math.round(oldWidth / this.pixelRatio),\n oldHeight: Math.round(oldHeight / this.pixelRatio)\n });\n\n // restore the camera on change.\n this._setCameraState();\n }\n\n\n // set initialized so the get and set camera will work from now on.\n this.initialized = true;\n return emitEvent;\n };\n\n\n /**\n * Convert the X coordinate in DOM-space (coordinate point in browser relative to the container div) to\n * the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon)\n * @param {number} x\n * @returns {number}\n * @private\n */\n _XconvertDOMtoCanvas(x) {\n return (x - this.body.view.translation.x) / this.body.view.scale;\n }\n\n /**\n * Convert the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to\n * the X coordinate in DOM-space (coordinate point in browser relative to the container div)\n * @param {number} x\n * @returns {number}\n * @private\n */\n _XconvertCanvasToDOM(x) {\n return x * this.body.view.scale + this.body.view.translation.x;\n }\n\n /**\n * Convert the Y coordinate in DOM-space (coordinate point in browser relative to the container div) to\n * the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon)\n * @param {number} y\n * @returns {number}\n * @private\n */\n _YconvertDOMtoCanvas(y) {\n return (y - this.body.view.translation.y) / this.body.view.scale;\n }\n\n /**\n * Convert the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to\n * the Y coordinate in DOM-space (coordinate point in browser relative to the container div)\n * @param {number} y\n * @returns {number}\n * @private\n */\n _YconvertCanvasToDOM(y) {\n return y * this.body.view.scale + this.body.view.translation.y;\n }\n\n\n /**\n *\n * @param {object} pos = {x: number, y: number}\n * @returns {{x: number, y: number}}\n * @constructor\n */\n canvasToDOM (pos) {\n return {x: this._XconvertCanvasToDOM(pos.x), y: this._YconvertCanvasToDOM(pos.y)};\n }\n\n /**\n *\n * @param {object} pos = {x: number, y: number}\n * @returns {{x: number, y: number}}\n * @constructor\n */\n DOMtoCanvas (pos) {\n return {x: this._XconvertDOMtoCanvas(pos.x), y: this._YconvertDOMtoCanvas(pos.y)};\n }\n\n}\n\nexport default Canvas;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/Canvas.js","let util = require('../../util');\n\nimport NetworkUtil from '../NetworkUtil';\n\nclass View {\n constructor(body, canvas) {\n this.body = body;\n this.canvas = canvas;\n\n this.animationSpeed = 1/this.renderRefreshRate;\n this.animationEasingFunction = \"easeInOutQuint\";\n this.easingTime = 0;\n this.sourceScale = 0;\n this.targetScale = 0;\n this.sourceTranslation = 0;\n this.targetTranslation = 0;\n this.lockedOnNodeId = undefined;\n this.lockedOnNodeOffset = undefined;\n this.touchTime = 0;\n\n this.viewFunction = undefined;\n\n this.body.emitter.on(\"fit\", this.fit.bind(this));\n this.body.emitter.on(\"animationFinished\", () => {this.body.emitter.emit(\"_stopRendering\");});\n this.body.emitter.on(\"unlockNode\", this.releaseNode.bind(this));\n }\n\n\n setOptions(options = {}) {\n this.options = options;\n }\n\n\n /**\n * This function zooms out to fit all data on screen based on amount of nodes\n * @param {Object} Options\n * @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false;\n */\n fit(options = {nodes:[]}, initialZoom = false) {\n let range;\n let zoomLevel;\n if (options.nodes === undefined || options.nodes.length === 0) {\n options.nodes = this.body.nodeIndices;\n }\n\n\n if (initialZoom === true) {\n // check if more than half of the nodes have a predefined position. If so, we use the range, not the approximation.\n let positionDefined = 0;\n for (let nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n let node = this.body.nodes[nodeId];\n if (node.predefinedPosition === true) {\n positionDefined += 1;\n }\n }\n }\n if (positionDefined > 0.5 * this.body.nodeIndices.length) {\n this.fit(options,false);\n return;\n }\n\n range = NetworkUtil.getRange(this.body.nodes, options.nodes);\n\n let numberOfNodes = this.body.nodeIndices.length;\n zoomLevel = 12.662 / (numberOfNodes + 7.4147) + 0.0964822; // this is obtained from fitting a dataset from 5 points with scale levels that looked good.\n\n // correct for larger canvasses.\n let factor = Math.min(this.canvas.frame.canvas.clientWidth / 600, this.canvas.frame.canvas.clientHeight / 600);\n zoomLevel *= factor;\n }\n else {\n this.body.emitter.emit(\"_resizeNodes\");\n range = NetworkUtil.getRange(this.body.nodes, options.nodes);\n\n let xDistance = Math.abs(range.maxX - range.minX) * 1.1;\n let yDistance = Math.abs(range.maxY - range.minY) * 1.1;\n\n let xZoomLevel = this.canvas.frame.canvas.clientWidth / xDistance;\n let yZoomLevel = this.canvas.frame.canvas.clientHeight / yDistance;\n\n zoomLevel = (xZoomLevel <= yZoomLevel) ? xZoomLevel : yZoomLevel;\n }\n\n if (zoomLevel > 1.0) {\n zoomLevel = 1.0;\n }\n else if (zoomLevel === 0) {\n zoomLevel = 1.0;\n }\n\n let center = NetworkUtil.findCenter(range);\n let animationOptions = {position: center, scale: zoomLevel, animation: options.animation};\n this.moveTo(animationOptions);\n }\n \n // animation\n\n /**\n * Center a node in view.\n *\n * @param {Number} nodeId\n * @param {Number} [options]\n */\n focus(nodeId, options = {}) {\n if (this.body.nodes[nodeId] !== undefined) {\n let nodePosition = {x: this.body.nodes[nodeId].x, y: this.body.nodes[nodeId].y};\n options.position = nodePosition;\n options.lockedOnNode = nodeId;\n\n this.moveTo(options)\n }\n else {\n console.log(\"Node: \" + nodeId + \" cannot be found.\");\n }\n }\n\n /**\n *\n * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels\n * | options.scale = Number // scale to move to\n * | options.position = {x:Number, y:Number} // position to move to\n * | options.animation = {duration:Number, easingFunction:String} || Boolean // position to move to\n */\n moveTo(options) {\n if (options === undefined) {\n options = {};\n return;\n }\n if (options.offset === undefined) {options.offset = {x: 0, y: 0}; }\n if (options.offset.x === undefined) {options.offset.x = 0; }\n if (options.offset.y === undefined) {options.offset.y = 0; }\n if (options.scale === undefined) {options.scale = this.body.view.scale; }\n if (options.position === undefined) {options.position = this.getViewPosition();}\n if (options.animation === undefined) {options.animation = {duration:0}; }\n if (options.animation === false ) {options.animation = {duration:0}; }\n if (options.animation === true ) {options.animation = {}; }\n if (options.animation.duration === undefined) {options.animation.duration = 1000; } // default duration\n if (options.animation.easingFunction === undefined) {options.animation.easingFunction = \"easeInOutQuad\"; } // default easing function\n\n this.animateView(options);\n }\n\n /**\n *\n * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels\n * | options.time = Number // animation time in milliseconds\n * | options.scale = Number // scale to animate to\n * | options.position = {x:Number, y:Number} // position to animate to\n * | options.easingFunction = String // linear, easeInQuad, easeOutQuad, easeInOutQuad,\n * // easeInCubic, easeOutCubic, easeInOutCubic,\n * // easeInQuart, easeOutQuart, easeInOutQuart,\n * // easeInQuint, easeOutQuint, easeInOutQuint\n */\n animateView(options) {\n if (options === undefined) {\n return;\n }\n this.animationEasingFunction = options.animation.easingFunction;\n // release if something focussed on the node\n this.releaseNode();\n if (options.locked === true) {\n this.lockedOnNodeId = options.lockedOnNode;\n this.lockedOnNodeOffset = options.offset;\n }\n\n // forcefully complete the old animation if it was still running\n if (this.easingTime != 0) {\n this._transitionRedraw(true); // by setting easingtime to 1, we finish the animation.\n }\n\n this.sourceScale = this.body.view.scale;\n this.sourceTranslation = this.body.view.translation;\n this.targetScale = options.scale;\n\n // set the scale so the viewCenter is based on the correct zoom level. This is overridden in the transitionRedraw\n // but at least then we'll have the target transition\n this.body.view.scale = this.targetScale;\n let viewCenter = this.canvas.DOMtoCanvas({x: 0.5 * this.canvas.frame.canvas.clientWidth, y: 0.5 * this.canvas.frame.canvas.clientHeight});\n\n let distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node\n x: viewCenter.x - options.position.x,\n y: viewCenter.y - options.position.y\n };\n this.targetTranslation = {\n x: this.sourceTranslation.x + distanceFromCenter.x * this.targetScale + options.offset.x,\n y: this.sourceTranslation.y + distanceFromCenter.y * this.targetScale + options.offset.y\n };\n\n // if the time is set to 0, don't do an animation\n if (options.animation.duration === 0) {\n if (this.lockedOnNodeId != undefined) {\n this.viewFunction = this._lockedRedraw.bind(this);\n this.body.emitter.on(\"initRedraw\", this.viewFunction);\n }\n else {\n this.body.view.scale = this.targetScale;\n this.body.view.translation = this.targetTranslation;\n this.body.emitter.emit(\"_requestRedraw\");\n }\n }\n else {\n this.animationSpeed = 1 / (60 * options.animation.duration * 0.001) || 1 / 60; // 60 for 60 seconds, 0.001 for milli's\n this.animationEasingFunction = options.animation.easingFunction;\n\n\n this.viewFunction = this._transitionRedraw.bind(this);\n this.body.emitter.on(\"initRedraw\", this.viewFunction);\n this.body.emitter.emit(\"_startRendering\");\n }\n }\n\n /**\n * used to animate smoothly by hijacking the redraw function.\n * @private\n */\n _lockedRedraw() {\n let nodePosition = {x: this.body.nodes[this.lockedOnNodeId].x, y: this.body.nodes[this.lockedOnNodeId].y};\n let viewCenter = this.canvas.DOMtoCanvas({x: 0.5 * this.canvas.frame.canvas.clientWidth, y: 0.5 * this.canvas.frame.canvas.clientHeight});\n let distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node\n x: viewCenter.x - nodePosition.x,\n y: viewCenter.y - nodePosition.y\n };\n let sourceTranslation = this.body.view.translation;\n let targetTranslation = {\n x: sourceTranslation.x + distanceFromCenter.x * this.body.view.scale + this.lockedOnNodeOffset.x,\n y: sourceTranslation.y + distanceFromCenter.y * this.body.view.scale + this.lockedOnNodeOffset.y\n };\n\n this.body.view.translation = targetTranslation;\n }\n\n releaseNode() {\n if (this.lockedOnNodeId !== undefined && this.viewFunction !== undefined) {\n this.body.emitter.off(\"initRedraw\", this.viewFunction);\n this.lockedOnNodeId = undefined;\n this.lockedOnNodeOffset = undefined;\n }\n }\n\n /**\n *\n * @param easingTime\n * @private\n */\n _transitionRedraw(finished = false) {\n this.easingTime += this.animationSpeed;\n this.easingTime = finished === true ? 1.0 : this.easingTime;\n\n let progress = util.easingFunctions[this.animationEasingFunction](this.easingTime);\n\n this.body.view.scale = this.sourceScale + (this.targetScale - this.sourceScale) * progress;\n this.body.view.translation = {\n x: this.sourceTranslation.x + (this.targetTranslation.x - this.sourceTranslation.x) * progress,\n y: this.sourceTranslation.y + (this.targetTranslation.y - this.sourceTranslation.y) * progress\n };\n\n // cleanup\n if (this.easingTime >= 1.0) {\n this.body.emitter.off(\"initRedraw\", this.viewFunction);\n this.easingTime = 0;\n if (this.lockedOnNodeId != undefined) {\n this.viewFunction = this._lockedRedraw.bind(this);\n this.body.emitter.on(\"initRedraw\", this.viewFunction);\n }\n this.body.emitter.emit(\"animationFinished\");\n }\n };\n\n\n getScale() {\n return this.body.view.scale;\n }\n\n getViewPosition() {\n return this.canvas.DOMtoCanvas({x: 0.5 * this.canvas.frame.canvas.clientWidth, y: 0.5 * this.canvas.frame.canvas.clientHeight});\n }\n\n\n}\n\nexport default View;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/View.js","let util = require('../../util');\n\nimport NavigationHandler from './components/NavigationHandler'\nimport Popup from './../../shared/Popup'\n\nclass InteractionHandler {\n constructor(body, canvas, selectionHandler) {\n this.body = body;\n this.canvas = canvas;\n this.selectionHandler = selectionHandler;\n this.navigationHandler = new NavigationHandler(body,canvas);\n\n // bind the events from hammer to functions in this object\n this.body.eventListeners.onTap = this.onTap.bind(this);\n this.body.eventListeners.onTouch = this.onTouch.bind(this);\n this.body.eventListeners.onDoubleTap = this.onDoubleTap.bind(this);\n this.body.eventListeners.onHold = this.onHold.bind(this);\n this.body.eventListeners.onDragStart = this.onDragStart.bind(this);\n this.body.eventListeners.onDrag = this.onDrag.bind(this);\n this.body.eventListeners.onDragEnd = this.onDragEnd.bind(this);\n this.body.eventListeners.onMouseWheel = this.onMouseWheel.bind(this);\n this.body.eventListeners.onPinch = this.onPinch.bind(this);\n this.body.eventListeners.onMouseMove = this.onMouseMove.bind(this);\n this.body.eventListeners.onRelease = this.onRelease.bind(this);\n this.body.eventListeners.onContext = this.onContext.bind(this);\n\n this.touchTime = 0;\n this.drag = {};\n this.pinch = {};\n this.popup = undefined;\n this.popupObj = undefined;\n this.popupTimer = undefined;\n\n this.body.functions.getPointer = this.getPointer.bind(this);\n\n this.options = {};\n this.defaultOptions = {\n dragNodes:true,\n dragView: true,\n hover: false,\n keyboard: {\n enabled: false,\n speed: {x: 10, y: 10, zoom: 0.02},\n bindToWindow: true\n },\n navigationButtons: false,\n tooltipDelay: 300,\n zoomView: true\n };\n util.extend(this.options,this.defaultOptions);\n\n this.bindEventListeners()\n }\n\n bindEventListeners() {\n this.body.emitter.on('destroy', () => {\n clearTimeout(this.popupTimer);\n delete this.body.functions.getPointer;\n })\n }\n\n setOptions(options) {\n if (options !== undefined) {\n // extend all but the values in fields\n let fields = ['hideEdgesOnDrag','hideNodesOnDrag','keyboard','multiselect','selectable','selectConnectedEdges'];\n util.selectiveNotDeepExtend(fields, this.options, options);\n\n // merge the keyboard options in.\n util.mergeOptions(this.options, options, 'keyboard');\n\n if (options.tooltip) {\n util.extend(this.options.tooltip, options.tooltip);\n if (options.tooltip.color) {\n this.options.tooltip.color = util.parseColor(options.tooltip.color);\n }\n }\n }\n\n this.navigationHandler.setOptions(this.options);\n }\n\n\n /**\n * Get the pointer location from a touch location\n * @param {{x: Number, y: Number}} touch\n * @return {{x: Number, y: Number}} pointer\n * @private\n */\n getPointer(touch) {\n return {\n x: touch.x - util.getAbsoluteLeft(this.canvas.frame.canvas),\n y: touch.y - util.getAbsoluteTop(this.canvas.frame.canvas)\n };\n }\n\n\n /**\n * On start of a touch gesture, store the pointer\n * @param event\n * @private\n */\n onTouch(event) {\n if (new Date().valueOf() - this.touchTime > 50) {\n this.drag.pointer = this.getPointer(event.center);\n this.drag.pinched = false;\n this.pinch.scale = this.body.view.scale;\n // to avoid double fireing of this event because we have two hammer instances. (on canvas and on frame)\n this.touchTime = new Date().valueOf();\n }\n }\n\n /**\n * handle tap/click event: select/unselect a node\n * @private\n */\n onTap(event) {\n let pointer = this.getPointer(event.center);\n let multiselect = this.selectionHandler.options.multiselect &&\n (event.changedPointers[0].ctrlKey || event.changedPointers[0].metaKey);\n\n this.checkSelectionChanges(pointer, event, multiselect);\n this.selectionHandler._generateClickEvent('click', event, pointer);\n }\n\n\n /**\n * handle doubletap event\n * @private\n */\n onDoubleTap(event) {\n let pointer = this.getPointer(event.center);\n this.selectionHandler._generateClickEvent('doubleClick', event, pointer);\n }\n\n\n\n /**\n * handle long tap event: multi select nodes\n * @private\n */\n onHold(event) {\n let pointer = this.getPointer(event.center);\n let multiselect = this.selectionHandler.options.multiselect;\n\n this.checkSelectionChanges(pointer, event, multiselect);\n\n this.selectionHandler._generateClickEvent('click', event, pointer);\n this.selectionHandler._generateClickEvent('hold', event, pointer);\n }\n\n\n /**\n * handle the release of the screen\n *\n * @private\n */\n onRelease(event) {\n if (new Date().valueOf() - this.touchTime > 10) {\n let pointer = this.getPointer(event.center);\n this.selectionHandler._generateClickEvent('release', event, pointer);\n // to avoid double fireing of this event because we have two hammer instances. (on canvas and on frame)\n this.touchTime = new Date().valueOf();\n }\n }\n\n onContext(event) {\n let pointer = this.getPointer({x:event.clientX, y:event.clientY});\n this.selectionHandler._generateClickEvent('oncontext', event, pointer);\n }\n\n\n /**\n *\n * @param pointer\n * @param add\n */\n checkSelectionChanges(pointer, event, add = false) {\n let previouslySelectedEdgeCount = this.selectionHandler._getSelectedEdgeCount();\n let previouslySelectedNodeCount = this.selectionHandler._getSelectedNodeCount();\n let previousSelection = this.selectionHandler.getSelection();\n let selected;\n if (add === true) {\n selected = this.selectionHandler.selectAdditionalOnPoint(pointer);\n }\n else {\n selected = this.selectionHandler.selectOnPoint(pointer);\n }\n let selectedEdgesCount = this.selectionHandler._getSelectedEdgeCount();\n let selectedNodesCount = this.selectionHandler._getSelectedNodeCount();\n let currentSelection = this.selectionHandler.getSelection();\n\n let {nodesChanged, edgesChanged} = this._determineIfDifferent(previousSelection, currentSelection);\n let nodeSelected = false;\n\n if (selectedNodesCount - previouslySelectedNodeCount > 0) { // node was selected\n this.selectionHandler._generateClickEvent('selectNode', event, pointer);\n selected = true;\n nodeSelected = true;\n }\n else if (nodesChanged === true && selectedNodesCount > 0) {\n this.selectionHandler._generateClickEvent('deselectNode', event, pointer, previousSelection);\n this.selectionHandler._generateClickEvent('selectNode', event, pointer);\n nodeSelected = true;\n selected = true;\n }\n else if (selectedNodesCount - previouslySelectedNodeCount < 0) { // node was deselected\n this.selectionHandler._generateClickEvent('deselectNode', event, pointer, previousSelection);\n selected = true;\n }\n\n\n // handle the selected edges\n if (selectedEdgesCount - previouslySelectedEdgeCount > 0 && nodeSelected === false) { // edge was selected\n this.selectionHandler._generateClickEvent('selectEdge', event, pointer);\n selected = true;\n }\n else if (selectedEdgesCount > 0 && edgesChanged === true) {\n this.selectionHandler._generateClickEvent('deselectEdge', event, pointer, previousSelection);\n this.selectionHandler._generateClickEvent('selectEdge', event, pointer);\n selected = true;\n }\n else if (selectedEdgesCount - previouslySelectedEdgeCount < 0) { // edge was deselected\n this.selectionHandler._generateClickEvent('deselectEdge', event, pointer, previousSelection);\n selected = true;\n }\n\n\n // fire the select event if anything has been selected or deselected\n if (selected === true) { // select or unselect\n this.selectionHandler._generateClickEvent('select', event, pointer);\n }\n }\n\n\n /**\n * This function checks if the nodes and edges previously selected have changed.\n * @param previousSelection\n * @param currentSelection\n * @returns {{nodesChanged: boolean, edgesChanged: boolean}}\n * @private\n */\n _determineIfDifferent(previousSelection,currentSelection) {\n let nodesChanged = false;\n let edgesChanged = false;\n\n for (let i = 0; i < previousSelection.nodes.length; i++) {\n if (currentSelection.nodes.indexOf(previousSelection.nodes[i]) === -1) {\n nodesChanged = true;\n }\n }\n for (let i = 0; i < currentSelection.nodes.length; i++) {\n if (previousSelection.nodes.indexOf(previousSelection.nodes[i]) === -1) {\n nodesChanged = true;\n }\n }\n for (let i = 0; i < previousSelection.edges.length; i++) {\n if (currentSelection.edges.indexOf(previousSelection.edges[i]) === -1) {\n edgesChanged = true;\n }\n }\n for (let i = 0; i < currentSelection.edges.length; i++) {\n if (previousSelection.edges.indexOf(previousSelection.edges[i]) === -1) {\n edgesChanged = true;\n }\n }\n\n return {nodesChanged, edgesChanged};\n }\n\n\n /**\n * This function is called by onDragStart.\n * It is separated out because we can then overload it for the datamanipulation system.\n *\n * @private\n */\n onDragStart(event) {\n //in case the touch event was triggered on an external div, do the initial touch now.\n if (this.drag.pointer === undefined) {\n this.onTouch(event);\n }\n\n // note: drag.pointer is set in onTouch to get the initial touch location\n let node = this.selectionHandler.getNodeAt(this.drag.pointer);\n\n this.drag.dragging = true;\n this.drag.selection = [];\n this.drag.translation = util.extend({},this.body.view.translation); // copy the object\n this.drag.nodeId = undefined;\n\n if (node !== undefined && this.options.dragNodes === true) {\n this.drag.nodeId = node.id;\n // select the clicked node if not yet selected\n if (node.isSelected() === false) {\n this.selectionHandler.unselectAll();\n this.selectionHandler.selectObject(node);\n }\n\n // after select to contain the node\n this.selectionHandler._generateClickEvent('dragStart', event, this.drag.pointer);\n\n let selection = this.selectionHandler.selectionObj.nodes;\n // create an array with the selected nodes and their original location and status\n for (let nodeId in selection) {\n if (selection.hasOwnProperty(nodeId)) {\n let object = selection[nodeId];\n let s = {\n id: object.id,\n node: object,\n\n // store original x, y, xFixed and yFixed, make the node temporarily Fixed\n x: object.x,\n y: object.y,\n xFixed: object.options.fixed.x,\n yFixed: object.options.fixed.y\n };\n\n object.options.fixed.x = true;\n object.options.fixed.y = true;\n\n this.drag.selection.push(s);\n }\n }\n }\n else {\n // fallback if no node is selected and thus the view is dragged.\n this.selectionHandler._generateClickEvent('dragStart', event, this.drag.pointer, undefined, true);\n }\n }\n\n\n /**\n * handle drag event\n * @private\n */\n onDrag(event) {\n if (this.drag.pinched === true) {\n return;\n }\n\n // remove the focus on node if it is focussed on by the focusOnNode\n this.body.emitter.emit('unlockNode');\n\n let pointer = this.getPointer(event.center);\n\n let selection = this.drag.selection;\n if (selection && selection.length && this.options.dragNodes === true) {\n this.selectionHandler._generateClickEvent('dragging', event, pointer);\n\n // calculate delta's and new location\n let deltaX = pointer.x - this.drag.pointer.x;\n let deltaY = pointer.y - this.drag.pointer.y;\n\n // update position of all selected nodes\n selection.forEach((selection) => {\n let node = selection.node;\n // only move the node if it was not fixed initially\n if (selection.xFixed === false) {\n node.x = this.canvas._XconvertDOMtoCanvas(this.canvas._XconvertCanvasToDOM(selection.x) + deltaX);\n }\n // only move the node if it was not fixed initially\n if (selection.yFixed === false) {\n node.y = this.canvas._YconvertDOMtoCanvas(this.canvas._YconvertCanvasToDOM(selection.y) + deltaY);\n }\n });\n\n // start the simulation of the physics\n this.body.emitter.emit('startSimulation');\n }\n else {\n // move the network\n if (this.options.dragView === true) {\n this.selectionHandler._generateClickEvent('dragging', event, pointer, undefined, true);\n\n // if the drag was not started properly because the click started outside the network div, start it now.\n if (this.drag.pointer === undefined) {\n this.onDragStart(event);\n return;\n }\n let diffX = pointer.x - this.drag.pointer.x;\n let diffY = pointer.y - this.drag.pointer.y;\n\n this.body.view.translation = {x:this.drag.translation.x + diffX, y:this.drag.translation.y + diffY};\n this.body.emitter.emit('_redraw');\n }\n }\n }\n\n\n /**\n * handle drag start event\n * @private\n */\n onDragEnd(event) {\n this.drag.dragging = false;\n let selection = this.drag.selection;\n if (selection && selection.length) {\n selection.forEach(function (s) {\n // restore original xFixed and yFixed\n s.node.options.fixed.x = s.xFixed;\n s.node.options.fixed.y = s.yFixed;\n });\n this.selectionHandler._generateClickEvent('dragEnd', event, this.getPointer(event.center));\n this.body.emitter.emit('startSimulation');\n }\n else {\n this.selectionHandler._generateClickEvent('dragEnd', event, this.getPointer(event.center), undefined, true);\n this.body.emitter.emit('_requestRedraw');\n }\n }\n\n\n\n /**\n * Handle pinch event\n * @param event\n * @private\n */\n onPinch(event) {\n let pointer = this.getPointer(event.center);\n\n this.drag.pinched = true;\n if (this.pinch['scale'] === undefined) {\n this.pinch.scale = 1;\n }\n\n // TODO: enabled moving while pinching?\n let scale = this.pinch.scale * event.scale;\n this.zoom(scale, pointer)\n }\n\n\n /**\n * Zoom the network in or out\n * @param {Number} scale a number around 1, and between 0.01 and 10\n * @param {{x: Number, y: Number}} pointer Position on screen\n * @return {Number} appliedScale scale is limited within the boundaries\n * @private\n */\n zoom(scale, pointer) {\n if (this.options.zoomView === true) {\n let scaleOld = this.body.view.scale;\n if (scale < 0.00001) {\n scale = 0.00001;\n }\n if (scale > 10) {\n scale = 10;\n }\n\n let preScaleDragPointer = undefined;\n if (this.drag !== undefined) {\n if (this.drag.dragging === true) {\n preScaleDragPointer = this.canvas.DOMtoCanvas(this.drag.pointer);\n }\n }\n // + this.canvas.frame.canvas.clientHeight / 2\n let translation = this.body.view.translation;\n\n let scaleFrac = scale / scaleOld;\n let tx = (1 - scaleFrac) * pointer.x + translation.x * scaleFrac;\n let ty = (1 - scaleFrac) * pointer.y + translation.y * scaleFrac;\n\n this.body.view.scale = scale;\n this.body.view.translation = {x:tx, y:ty};\n\n if (preScaleDragPointer != undefined) {\n let postScaleDragPointer = this.canvas.canvasToDOM(preScaleDragPointer);\n this.drag.pointer.x = postScaleDragPointer.x;\n this.drag.pointer.y = postScaleDragPointer.y;\n }\n\n this.body.emitter.emit('_requestRedraw');\n\n if (scaleOld < scale) {\n this.body.emitter.emit('zoom', {direction: '+', scale: this.body.view.scale, pointer: pointer});\n }\n else {\n this.body.emitter.emit('zoom', {direction: '-', scale: this.body.view.scale, pointer: pointer});\n }\n }\n }\n\n\n /**\n * Event handler for mouse wheel event, used to zoom the timeline\n * See http://adomas.org/javascript-mouse-wheel/\n * https://github.com/EightMedia/hammer.js/issues/256\n * @param {MouseEvent} event\n * @private\n */\n onMouseWheel(event) {\n if (this.options.zoomView === true) {\n // retrieve delta\n let delta = 0;\n if (event.wheelDelta) { /* IE/Opera. */\n delta = event.wheelDelta / 120;\n }\n else if (event.detail) { /* Mozilla case. */\n // In Mozilla, sign of delta is different than in IE.\n // Also, delta is multiple of 3.\n delta = -event.detail / 3;\n }\n\n // If delta is nonzero, handle it.\n // Basically, delta is now positive if wheel was scrolled up,\n // and negative, if wheel was scrolled down.\n if (delta !== 0) {\n\n // calculate the new scale\n let scale = this.body.view.scale;\n let zoom = delta / 10;\n if (delta < 0) {\n zoom = zoom / (1 - zoom);\n }\n scale *= (1 + zoom);\n\n // calculate the pointer location\n let pointer = this.getPointer({x: event.clientX, y: event.clientY});\n\n // apply the new scale\n this.zoom(scale, pointer);\n }\n\n // Prevent default actions caused by mouse wheel.\n event.preventDefault();\n }\n }\n\n\n /**\n * Mouse move handler for checking whether the title moves over a node with a title.\n * @param {Event} event\n * @private\n */\n onMouseMove(event) {\n let pointer = this.getPointer({x:event.clientX, y:event.clientY});\n let popupVisible = false;\n\n // check if the previously selected node is still selected\n if (this.popup !== undefined) {\n if (this.popup.hidden === false) {\n this._checkHidePopup(pointer);\n }\n\n // if the popup was not hidden above\n if (this.popup.hidden === false) {\n popupVisible = true;\n this.popup.setPosition(pointer.x + 3, pointer.y - 5);\n this.popup.show();\n }\n }\n\n // if we bind the keyboard to the div, we have to highlight it to use it. This highlights it on mouse over.\n if (this.options.keyboard.bindToWindow === false && this.options.keyboard.enabled === true) {\n this.canvas.frame.focus();\n }\n\n // start a timeout that will check if the mouse is positioned above an element\n if (popupVisible === false) {\n if (this.popupTimer !== undefined) {\n clearInterval(this.popupTimer); // stop any running calculationTimer\n this.popupTimer = undefined;\n }\n if (!this.drag.dragging) {\n this.popupTimer = setTimeout(() => this._checkShowPopup(pointer), this.options.tooltipDelay);\n }\n }\n\n /**\n * Adding hover highlights\n */\n if (this.options.hover === true) {\n // adding hover highlights\n let obj = this.selectionHandler.getNodeAt(pointer);\n if (obj === undefined) {\n obj = this.selectionHandler.getEdgeAt(pointer);\n }\n this.selectionHandler.hoverObject(obj);\n }\n }\n\n\n\n /**\n * Check if there is an element on the given position in the network\n * (a node or edge). If so, and if this element has a title,\n * show a popup window with its title.\n *\n * @param {{x:Number, y:Number}} pointer\n * @private\n */\n _checkShowPopup(pointer) {\n let x = this.canvas._XconvertDOMtoCanvas(pointer.x);\n let y = this.canvas._YconvertDOMtoCanvas(pointer.y);\n let pointerObj = {\n left: x,\n top: y,\n right: x,\n bottom: y\n };\n\n let previousPopupObjId = this.popupObj === undefined ? undefined : this.popupObj.id;\n let nodeUnderCursor = false;\n let popupType = 'node';\n\n // check if a node is under the cursor.\n if (this.popupObj === undefined) {\n // search the nodes for overlap, select the top one in case of multiple nodes\n let nodeIndices = this.body.nodeIndices;\n let nodes = this.body.nodes;\n let node;\n let overlappingNodes = [];\n for (let i = 0; i < nodeIndices.length; i++) {\n node = nodes[nodeIndices[i]];\n if (node.isOverlappingWith(pointerObj) === true) {\n if (node.getTitle() !== undefined) {\n overlappingNodes.push(nodeIndices[i]);\n }\n }\n }\n\n if (overlappingNodes.length > 0) {\n // if there are overlapping nodes, select the last one, this is the one which is drawn on top of the others\n this.popupObj = nodes[overlappingNodes[overlappingNodes.length - 1]];\n // if you hover over a node, the title of the edge is not supposed to be shown.\n nodeUnderCursor = true;\n }\n }\n\n if (this.popupObj === undefined && nodeUnderCursor === false) {\n // search the edges for overlap\n let edgeIndices = this.body.edgeIndices;\n let edges = this.body.edges;\n let edge;\n let overlappingEdges = [];\n for (let i = 0; i < edgeIndices.length; i++) {\n edge = edges[edgeIndices[i]];\n if (edge.isOverlappingWith(pointerObj) === true) {\n if (edge.connected === true && edge.getTitle() !== undefined) {\n overlappingEdges.push(edgeIndices[i]);\n }\n }\n }\n\n if (overlappingEdges.length > 0) {\n this.popupObj = edges[overlappingEdges[overlappingEdges.length - 1]];\n popupType = 'edge';\n }\n }\n\n if (this.popupObj !== undefined) {\n // show popup message window\n if (this.popupObj.id !== previousPopupObjId) {\n if (this.popup === undefined) {\n this.popup = new Popup(this.canvas.frame);\n }\n\n this.popup.popupTargetType = popupType;\n this.popup.popupTargetId = this.popupObj.id;\n\n // adjust a small offset such that the mouse cursor is located in the\n // bottom left location of the popup, and you can easily move over the\n // popup area\n this.popup.setPosition(pointer.x + 3, pointer.y - 5);\n this.popup.setText(this.popupObj.getTitle());\n this.popup.show();\n this.body.emitter.emit('showPopup',this.popupObj.id);\n }\n }\n else {\n if (this.popup !== undefined) {\n this.popup.hide();\n this.body.emitter.emit('hidePopup');\n }\n }\n }\n\n\n /**\n * Check if the popup must be hidden, which is the case when the mouse is no\n * longer hovering on the object\n * @param {{x:Number, y:Number}} pointer\n * @private\n */\n _checkHidePopup(pointer) {\n let pointerObj = this.selectionHandler._pointerToPositionObject(pointer);\n\n let stillOnObj = false;\n if (this.popup.popupTargetType === 'node') {\n if (this.body.nodes[this.popup.popupTargetId] !== undefined) {\n stillOnObj = this.body.nodes[this.popup.popupTargetId].isOverlappingWith(pointerObj);\n\n // if the mouse is still one the node, we have to check if it is not also on one that is drawn on top of it.\n // we initially only check stillOnObj because this is much faster.\n if (stillOnObj === true) {\n let overNode = this.selectionHandler.getNodeAt(pointer);\n stillOnObj = overNode === undefined ? false : overNode.id === this.popup.popupTargetId;\n }\n }\n }\n else {\n if (this.selectionHandler.getNodeAt(pointer) === undefined) {\n if (this.body.edges[this.popup.popupTargetId] !== undefined) {\n stillOnObj = this.body.edges[this.popup.popupTargetId].isOverlappingWith(pointerObj);\n }\n }\n }\n\n\n if (stillOnObj === false) {\n this.popupObj = undefined;\n this.popup.hide();\n this.body.emitter.emit('hidePopup');\n }\n }\n\n}\n\nexport default InteractionHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/InteractionHandler.js","var util = require('../../../util');\nvar Hammer = require('../../../module/hammer');\nvar hammerUtil = require('../../../hammerUtil');\nvar keycharm = require('keycharm');\n\nclass NavigationHandler {\n constructor(body, canvas) {\n this.body = body;\n this.canvas = canvas;\n\n this.iconsCreated = false;\n this.navigationHammers = [];\n this.boundFunctions = {};\n this.touchTime = 0;\n this.activated = false;\n\n\n this.body.emitter.on(\"activate\", () => {this.activated = true; this.configureKeyboardBindings();});\n this.body.emitter.on(\"deactivate\", () => {this.activated = false; this.configureKeyboardBindings();});\n this.body.emitter.on(\"destroy\", () => {if (this.keycharm !== undefined) {this.keycharm.destroy();}});\n\n this.options = {}\n }\n\n setOptions(options) {\n if (options !== undefined) {\n this.options = options;\n this.create();\n }\n }\n\n create() {\n if (this.options.navigationButtons === true) {\n if (this.iconsCreated === false) {\n this.loadNavigationElements();\n }\n }\n else if (this.iconsCreated === true) {\n this.cleanNavigation();\n }\n\n this.configureKeyboardBindings();\n }\n\n cleanNavigation() {\n // clean hammer bindings\n if (this.navigationHammers.length != 0) {\n for (var i = 0; i < this.navigationHammers.length; i++) {\n this.navigationHammers[i].destroy();\n }\n this.navigationHammers = [];\n }\n\n // clean up previous navigation items\n if (this.navigationDOM && this.navigationDOM['wrapper'] && this.navigationDOM['wrapper'].parentNode) {\n this.navigationDOM['wrapper'].parentNode.removeChild(this.navigationDOM['wrapper']);\n }\n\n this.iconsCreated = false;\n }\n\n /**\n * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation\n * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent\n * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false.\n * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas.\n *\n * @private\n */\n loadNavigationElements() {\n this.cleanNavigation();\n\n this.navigationDOM = {};\n var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends'];\n var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','_fit'];\n\n this.navigationDOM['wrapper'] = document.createElement('div');\n this.navigationDOM['wrapper'].className = 'vis-navigation';\n this.canvas.frame.appendChild(this.navigationDOM['wrapper']);\n\n for (var i = 0; i < navigationDivs.length; i++) {\n this.navigationDOM[navigationDivs[i]] = document.createElement('div');\n this.navigationDOM[navigationDivs[i]].className = 'vis-button vis-' + navigationDivs[i];\n this.navigationDOM['wrapper'].appendChild(this.navigationDOM[navigationDivs[i]]);\n\n var hammer = new Hammer(this.navigationDOM[navigationDivs[i]]);\n if (navigationDivActions[i] === \"_fit\") {\n hammerUtil.onTouch(hammer, this._fit.bind(this));\n }\n else {\n hammerUtil.onTouch(hammer, this.bindToRedraw.bind(this,navigationDivActions[i]));\n }\n\n this.navigationHammers.push(hammer);\n }\n\n // use a hammer for the release so we do not require the one used in the rest of the network\n // the one the rest uses can be overloaded by the manipulation system.\n var hammerFrame = new Hammer(this.canvas.frame);\n hammerUtil.onRelease(hammerFrame, () => {this._stopMovement();});\n this.navigationHammers.push(hammerFrame);\n\n this.iconsCreated = true;\n }\n\n bindToRedraw(action) {\n if (this.boundFunctions[action] === undefined) {\n this.boundFunctions[action] = this[action].bind(this);\n this.body.emitter.on(\"initRedraw\", this.boundFunctions[action]);\n this.body.emitter.emit(\"_startRendering\");\n }\n }\n\n unbindFromRedraw(action) {\n if (this.boundFunctions[action] !== undefined) {\n this.body.emitter.off(\"initRedraw\", this.boundFunctions[action]);\n this.body.emitter.emit(\"_stopRendering\");\n delete this.boundFunctions[action];\n }\n }\n\n /**\n * this stops all movement induced by the navigation buttons\n *\n * @private\n */\n _fit() {\n if (new Date().valueOf() - this.touchTime > 700) { // TODO: fix ugly hack to avoid hammer's double fireing of event (because we use release?)\n this.body.emitter.emit(\"fit\", {duration: 700});\n this.touchTime = new Date().valueOf();\n }\n }\n\n /**\n * this stops all movement induced by the navigation buttons\n *\n * @private\n */\n _stopMovement() {\n for (let boundAction in this.boundFunctions) {\n if (this.boundFunctions.hasOwnProperty(boundAction)) {\n this.body.emitter.off(\"initRedraw\", this.boundFunctions[boundAction]);\n this.body.emitter.emit(\"_stopRendering\");\n }\n }\n this.boundFunctions = {};\n }\n\n _moveUp() {this.body.view.translation.y += this.options.keyboard.speed.y;}\n _moveDown() {this.body.view.translation.y -= this.options.keyboard.speed.y;}\n _moveLeft() {this.body.view.translation.x += this.options.keyboard.speed.x;}\n _moveRight(){this.body.view.translation.x -= this.options.keyboard.speed.x;}\n _zoomIn() {\n var scaleOld = this.body.view.scale;\n var scale = this.body.view.scale * (1 + this.options.keyboard.speed.zoom);\n var translation = this.body.view.translation;\n var scaleFrac = scale / scaleOld;\n var tx = (1 - scaleFrac) * this.canvas.canvasViewCenter.x + translation.x * scaleFrac;\n var ty = (1 - scaleFrac) * this.canvas.canvasViewCenter.y + translation.y * scaleFrac;\n\n this.body.view.scale = scale;\n this.body.view.translation = { x: tx, y: ty };\n this.body.emitter.emit('zoom', { direction: '+', scale: this.body.view.scale, pointer: pointer });\n }\n _zoomOut() {\n var scaleOld = this.body.view.scale;\n var scale = this.body.view.scale / (1 + this.options.keyboard.speed.zoom);\n var translation = this.body.view.translation;\n var scaleFrac = scale / scaleOld;\n var tx = (1 - scaleFrac) * this.canvas.canvasViewCenter.x + translation.x * scaleFrac;\n var ty = (1 - scaleFrac) * this.canvas.canvasViewCenter.y + translation.y * scaleFrac;\n\n this.body.view.scale = scale;\n this.body.view.translation = { x: tx, y: ty };\n this.body.emitter.emit('zoom', { direction: '-', scale: this.body.view.scale, pointer: pointer });\n }\n\n\n /**\n * bind all keys using keycharm.\n */\n configureKeyboardBindings() {\n if (this.keycharm !== undefined) {\n this.keycharm.destroy();\n }\n\n if (this.options.keyboard.enabled === true) {\n if (this.options.keyboard.bindToWindow === true) {\n this.keycharm = keycharm({container: window, preventDefault: true});\n }\n else {\n this.keycharm = keycharm({container: this.canvas.frame, preventDefault: true});\n }\n\n this.keycharm.reset();\n\n if (this.activated === true) {\n this.keycharm.bind(\"up\", () => {this.bindToRedraw(\"_moveUp\") ;}, \"keydown\");\n this.keycharm.bind(\"down\", () => {this.bindToRedraw(\"_moveDown\") ;}, \"keydown\");\n this.keycharm.bind(\"left\", () => {this.bindToRedraw(\"_moveLeft\") ;}, \"keydown\");\n this.keycharm.bind(\"right\", () => {this.bindToRedraw(\"_moveRight\");}, \"keydown\");\n this.keycharm.bind(\"=\", () => {this.bindToRedraw(\"_zoomIn\") ;}, \"keydown\");\n this.keycharm.bind(\"num+\", () => {this.bindToRedraw(\"_zoomIn\") ;}, \"keydown\");\n this.keycharm.bind(\"num-\", () => {this.bindToRedraw(\"_zoomOut\") ;}, \"keydown\");\n this.keycharm.bind(\"-\", () => {this.bindToRedraw(\"_zoomOut\") ;}, \"keydown\");\n this.keycharm.bind(\"[\", () => {this.bindToRedraw(\"_zoomOut\") ;}, \"keydown\");\n this.keycharm.bind(\"]\", () => {this.bindToRedraw(\"_zoomIn\") ;}, \"keydown\");\n this.keycharm.bind(\"pageup\", () => {this.bindToRedraw(\"_zoomIn\") ;}, \"keydown\");\n this.keycharm.bind(\"pagedown\", () => {this.bindToRedraw(\"_zoomOut\") ;}, \"keydown\");\n\n this.keycharm.bind(\"up\", () => {this.unbindFromRedraw(\"_moveUp\") ;}, \"keyup\");\n this.keycharm.bind(\"down\", () => {this.unbindFromRedraw(\"_moveDown\") ;}, \"keyup\");\n this.keycharm.bind(\"left\", () => {this.unbindFromRedraw(\"_moveLeft\") ;}, \"keyup\");\n this.keycharm.bind(\"right\", () => {this.unbindFromRedraw(\"_moveRight\");}, \"keyup\");\n this.keycharm.bind(\"=\", () => {this.unbindFromRedraw(\"_zoomIn\") ;}, \"keyup\");\n this.keycharm.bind(\"num+\", () => {this.unbindFromRedraw(\"_zoomIn\") ;}, \"keyup\");\n this.keycharm.bind(\"num-\", () => {this.unbindFromRedraw(\"_zoomOut\") ;}, \"keyup\");\n this.keycharm.bind(\"-\", () => {this.unbindFromRedraw(\"_zoomOut\") ;}, \"keyup\");\n this.keycharm.bind(\"[\", () => {this.unbindFromRedraw(\"_zoomOut\") ;}, \"keyup\");\n this.keycharm.bind(\"]\", () => {this.unbindFromRedraw(\"_zoomIn\") ;}, \"keyup\");\n this.keycharm.bind(\"pageup\", () => {this.unbindFromRedraw(\"_zoomIn\") ;}, \"keyup\");\n this.keycharm.bind(\"pagedown\", () => {this.unbindFromRedraw(\"_zoomOut\") ;}, \"keyup\");\n }\n }\n }\n}\n\n\nexport default NavigationHandler;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/NavigationHandler.js","import Node from './components/Node';\nimport Edge from './components/Edge';\n\nlet util = require('../../util');\n\nclass SelectionHandler {\n constructor(body, canvas) {\n this.body = body;\n this.canvas = canvas;\n this.selectionObj = {nodes: [], edges: []};\n this.hoverObj = {nodes:{},edges:{}};\n\n this.options = {};\n this.defaultOptions = {\n multiselect: false,\n selectable: true,\n selectConnectedEdges: true,\n hoverConnectedEdges: true\n };\n util.extend(this.options, this.defaultOptions);\n\n this.body.emitter.on(\"_dataChanged\", () => {\n this.updateSelection()\n });\n }\n\n\n setOptions(options) {\n if (options !== undefined) {\n let fields = ['multiselect','hoverConnectedEdges','selectable','selectConnectedEdges'];\n util.selectiveDeepExtend(fields,this.options, options);\n }\n }\n\n\n /**\n * handles the selection part of the tap;\n *\n * @param {Object} pointer\n * @private\n */\n selectOnPoint(pointer) {\n let selected = false;\n if (this.options.selectable === true) {\n let obj = this.getNodeAt(pointer) || this.getEdgeAt(pointer);\n\n // unselect after getting the objects in order to restore width and height.\n this.unselectAll();\n\n if (obj !== undefined) {\n selected = this.selectObject(obj);\n }\n this.body.emitter.emit(\"_requestRedraw\");\n }\n return selected;\n }\n\n selectAdditionalOnPoint(pointer) {\n let selectionChanged = false;\n if (this.options.selectable === true) {\n let obj = this.getNodeAt(pointer) || this.getEdgeAt(pointer);\n\n if (obj !== undefined) {\n selectionChanged = true;\n if (obj.isSelected() === true) {\n this.deselectObject(obj);\n }\n else {\n this.selectObject(obj);\n }\n\n this.body.emitter.emit(\"_requestRedraw\");\n }\n }\n return selectionChanged;\n }\n\n _generateClickEvent(eventType, event, pointer, oldSelection, emptySelection = false) {\n let properties;\n if (emptySelection === true) {\n properties = {nodes:[], edges:[]};\n }\n else {\n properties = this.getSelection();\n }\n properties['pointer'] = {\n DOM: {x: pointer.x, y: pointer.y},\n canvas: this.canvas.DOMtoCanvas(pointer)\n };\n properties['event'] = event;\n\n if (oldSelection !== undefined) {\n properties['previousSelection'] = oldSelection;\n }\n this.body.emitter.emit(eventType, properties);\n }\n\n selectObject(obj, highlightEdges = this.options.selectConnectedEdges) {\n if (obj !== undefined) {\n if (obj instanceof Node) {\n if (highlightEdges === true) {\n this._selectConnectedEdges(obj);\n }\n }\n obj.select();\n this._addToSelection(obj);\n return true;\n }\n return false;\n }\n\n deselectObject(obj) {\n if (obj.isSelected() === true) {\n obj.selected = false;\n this._removeFromSelection(obj);\n }\n }\n\n\n\n /**\n * retrieve all nodes overlapping with given object\n * @param {Object} object An object with parameters left, top, right, bottom\n * @return {Number[]} An array with id's of the overlapping nodes\n * @private\n */\n _getAllNodesOverlappingWith(object) {\n let overlappingNodes = [];\n let nodes = this.body.nodes;\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n let nodeId = this.body.nodeIndices[i];\n if (nodes[nodeId].isOverlappingWith(object)) {\n overlappingNodes.push(nodeId);\n }\n }\n return overlappingNodes;\n }\n\n\n /**\n * Return a position object in canvasspace from a single point in screenspace\n *\n * @param pointer\n * @returns {{left: number, top: number, right: number, bottom: number}}\n * @private\n */\n _pointerToPositionObject(pointer) {\n let canvasPos = this.canvas.DOMtoCanvas(pointer);\n return {\n left: canvasPos.x - 1,\n top: canvasPos.y + 1,\n right: canvasPos.x + 1,\n bottom: canvasPos.y - 1\n };\n }\n\n\n /**\n * Get the top node at the a specific point (like a click)\n *\n * @param {{x: Number, y: Number}} pointer\n * @return {Node | undefined} node\n */\n getNodeAt(pointer, returnNode = true) {\n // we first check if this is an navigation controls element\n let positionObject = this._pointerToPositionObject(pointer);\n let overlappingNodes = this._getAllNodesOverlappingWith(positionObject);\n // if there are overlapping nodes, select the last one, this is the\n // one which is drawn on top of the others\n if (overlappingNodes.length > 0) {\n if (returnNode === true) {\n return this.body.nodes[overlappingNodes[overlappingNodes.length - 1]];\n }\n else {\n return overlappingNodes[overlappingNodes.length - 1];\n }\n }\n else {\n return undefined;\n }\n }\n\n\n /**\n * retrieve all edges overlapping with given object, selector is around center\n * @param {Object} object An object with parameters left, top, right, bottom\n * @return {Number[]} An array with id's of the overlapping nodes\n * @private\n */\n _getEdgesOverlappingWith(object, overlappingEdges) {\n let edges = this.body.edges;\n for (let i = 0; i < this.body.edgeIndices.length; i++) {\n let edgeId = this.body.edgeIndices[i];\n if (edges[edgeId].isOverlappingWith(object)) {\n overlappingEdges.push(edgeId);\n }\n }\n }\n\n\n /**\n * retrieve all nodes overlapping with given object\n * @param {Object} object An object with parameters left, top, right, bottom\n * @return {Number[]} An array with id's of the overlapping nodes\n * @private\n */\n _getAllEdgesOverlappingWith(object) {\n let overlappingEdges = [];\n this._getEdgesOverlappingWith(object,overlappingEdges);\n return overlappingEdges;\n }\n\n\n /**\n * Place holder. To implement change the getNodeAt to a _getObjectAt. Have the _getObjectAt call\n * getNodeAt and _getEdgesAt, then priortize the selection to user preferences.\n *\n * @param pointer\n * @returns {undefined}\n */\n getEdgeAt(pointer, returnEdge = true) {\n // Iterate over edges, pick closest within 10\n var canvasPos = this.canvas.DOMtoCanvas(pointer);\n var mindist = 10;\n var overlappingEdge = null;\n var edges = this.body.edges;\n for (var i = 0; i < this.body.edgeIndices.length; i++) {\n var edgeId = this.body.edgeIndices[i];\n var edge = edges[edgeId];\n if (edge.connected) {\n var xFrom = edge.from.x;\n var yFrom = edge.from.y;\n var xTo = edge.to.x;\n var yTo = edge.to.y;\n var dist = edge.edgeType.getDistanceToEdge(xFrom, yFrom, xTo, yTo, canvasPos.x, canvasPos.y);\n if(dist < mindist){\n overlappingEdge = edgeId;\n mindist = dist;\n }\n }\n }\n if (overlappingEdge) {\n if (returnEdge === true) {\n return this.body.edges[overlappingEdge];\n }\n else {\n return overlappingEdge;\n }\n }\n else {\n return undefined;\n }\n }\n\n\n /**\n * Add object to the selection array.\n *\n * @param obj\n * @private\n */\n _addToSelection(obj) {\n if (obj instanceof Node) {\n this.selectionObj.nodes[obj.id] = obj;\n }\n else {\n this.selectionObj.edges[obj.id] = obj;\n }\n }\n\n /**\n * Add object to the selection array.\n *\n * @param obj\n * @private\n */\n _addToHover(obj) {\n if (obj instanceof Node) {\n this.hoverObj.nodes[obj.id] = obj;\n }\n else {\n this.hoverObj.edges[obj.id] = obj;\n }\n }\n\n\n /**\n * Remove a single option from selection.\n *\n * @param {Object} obj\n * @private\n */\n _removeFromSelection(obj) {\n if (obj instanceof Node) {\n delete this.selectionObj.nodes[obj.id];\n this._unselectConnectedEdges(obj);\n }\n else {\n delete this.selectionObj.edges[obj.id];\n }\n }\n\n /**\n * Unselect all. The selectionObj is useful for this.\n */\n unselectAll() {\n for(let nodeId in this.selectionObj.nodes) {\n if(this.selectionObj.nodes.hasOwnProperty(nodeId)) {\n this.selectionObj.nodes[nodeId].unselect();\n }\n }\n for(let edgeId in this.selectionObj.edges) {\n if(this.selectionObj.edges.hasOwnProperty(edgeId)) {\n this.selectionObj.edges[edgeId].unselect();\n }\n }\n\n this.selectionObj = {nodes:{},edges:{}};\n }\n\n\n /**\n * return the number of selected nodes\n *\n * @returns {number}\n * @private\n */\n _getSelectedNodeCount() {\n let count = 0;\n for (let nodeId in this.selectionObj.nodes) {\n if (this.selectionObj.nodes.hasOwnProperty(nodeId)) {\n count += 1;\n }\n }\n return count;\n }\n\n /**\n * return the selected node\n *\n * @returns {number}\n * @private\n */\n _getSelectedNode() {\n for (let nodeId in this.selectionObj.nodes) {\n if (this.selectionObj.nodes.hasOwnProperty(nodeId)) {\n return this.selectionObj.nodes[nodeId];\n }\n }\n return undefined;\n }\n\n /**\n * return the selected edge\n *\n * @returns {number}\n * @private\n */\n _getSelectedEdge() {\n for (let edgeId in this.selectionObj.edges) {\n if (this.selectionObj.edges.hasOwnProperty(edgeId)) {\n return this.selectionObj.edges[edgeId];\n }\n }\n return undefined;\n }\n\n\n /**\n * return the number of selected edges\n *\n * @returns {number}\n * @private\n */\n _getSelectedEdgeCount() {\n let count = 0;\n for (let edgeId in this.selectionObj.edges) {\n if (this.selectionObj.edges.hasOwnProperty(edgeId)) {\n count += 1;\n }\n }\n return count;\n }\n\n\n /**\n * return the number of selected objects.\n *\n * @returns {number}\n * @private\n */\n _getSelectedObjectCount() {\n let count = 0;\n for(let nodeId in this.selectionObj.nodes) {\n if(this.selectionObj.nodes.hasOwnProperty(nodeId)) {\n count += 1;\n }\n }\n for(let edgeId in this.selectionObj.edges) {\n if(this.selectionObj.edges.hasOwnProperty(edgeId)) {\n count += 1;\n }\n }\n return count;\n }\n\n /**\n * Check if anything is selected\n *\n * @returns {boolean}\n * @private\n */\n _selectionIsEmpty() {\n for(let nodeId in this.selectionObj.nodes) {\n if(this.selectionObj.nodes.hasOwnProperty(nodeId)) {\n return false;\n }\n }\n for(let edgeId in this.selectionObj.edges) {\n if(this.selectionObj.edges.hasOwnProperty(edgeId)) {\n return false;\n }\n }\n return true;\n }\n\n\n /**\n * check if one of the selected nodes is a cluster.\n *\n * @returns {boolean}\n * @private\n */\n _clusterInSelection() {\n for(let nodeId in this.selectionObj.nodes) {\n if(this.selectionObj.nodes.hasOwnProperty(nodeId)) {\n if (this.selectionObj.nodes[nodeId].clusterSize > 1) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * select the edges connected to the node that is being selected\n *\n * @param {Node} node\n * @private\n */\n _selectConnectedEdges(node) {\n for (let i = 0; i < node.edges.length; i++) {\n let edge = node.edges[i];\n edge.select();\n this._addToSelection(edge);\n }\n }\n\n /**\n * select the edges connected to the node that is being selected\n *\n * @param {Node} node\n * @private\n */\n _hoverConnectedEdges(node) {\n for (let i = 0; i < node.edges.length; i++) {\n let edge = node.edges[i];\n edge.hover = true;\n this._addToHover(edge);\n }\n }\n\n\n /**\n * unselect the edges connected to the node that is being selected\n *\n * @param {Node} node\n * @private\n */\n _unselectConnectedEdges(node) {\n for (let i = 0; i < node.edges.length; i++) {\n let edge = node.edges[i];\n edge.unselect();\n this._removeFromSelection(edge);\n }\n }\n\n\n /**\n * This is called when someone clicks on a node. either select or deselect it.\n * If there is an existing selection and we don't want to append to it, clear the existing selection\n *\n * @param {Node || Edge} object\n * @private\n */\n blurObject(object) {\n if (object.hover === true) {\n object.hover = false;\n if (object instanceof Node) {\n this.body.emitter.emit(\"blurNode\", {node: object.id});\n }\n else {\n this.body.emitter.emit(\"blurEdge\", {edge: object.id});\n }\n }\n }\n\n /**\n * This is called when someone clicks on a node. either select or deselect it.\n * If there is an existing selection and we don't want to append to it, clear the existing selection\n *\n * @param {Node || Edge} object\n * @private\n */\n hoverObject(object) {\n let hoverChanged = false;\n // remove all node hover highlights\n for (let nodeId in this.hoverObj.nodes) {\n if (this.hoverObj.nodes.hasOwnProperty(nodeId)) {\n if (object === undefined || (object instanceof Node && object.id != nodeId) || object instanceof Edge) {\n this.blurObject(this.hoverObj.nodes[nodeId]);\n delete this.hoverObj.nodes[nodeId];\n hoverChanged = true;\n }\n }\n }\n\n // removing all edge hover highlights\n for (let edgeId in this.hoverObj.edges) {\n if (this.hoverObj.edges.hasOwnProperty(edgeId)) {\n // if the hover has been changed here it means that the node has been hovered over or off\n // we then do not use the blurObject method here.\n if (hoverChanged === true) {\n this.hoverObj.edges[edgeId].hover = false;\n delete this.hoverObj.edges[edgeId];\n }\n // if the blur remains the same and the object is undefined (mouse off) or another\n // edge has been hovered, or another node has been hovered we blur the edge.\n else if (object === undefined || (object instanceof Edge && object.id != edgeId) || (object instanceof Node && !object.hover)) {\n this.blurObject(this.hoverObj.edges[edgeId]);\n delete this.hoverObj.edges[edgeId];\n hoverChanged = true;\n }\n }\n }\n\n if (object !== undefined) {\n if (object.hover === false) {\n object.hover = true;\n this._addToHover(object);\n hoverChanged = true;\n if (object instanceof Node) {\n this.body.emitter.emit(\"hoverNode\", {node: object.id});\n }\n else {\n this.body.emitter.emit(\"hoverEdge\", {edge: object.id});\n }\n }\n if (object instanceof Node && this.options.hoverConnectedEdges === true) {\n this._hoverConnectedEdges(object);\n }\n }\n\n if (hoverChanged === true) {\n this.body.emitter.emit('_requestRedraw');\n }\n }\n\n\n\n\n /**\n *\n * retrieve the currently selected objects\n * @return {{nodes: Array., edges: Array.}} selection\n */\n getSelection() {\n let nodeIds = this.getSelectedNodes();\n let edgeIds = this.getSelectedEdges();\n return {nodes:nodeIds, edges:edgeIds};\n }\n\n /**\n *\n * retrieve the currently selected nodes\n * @return {String[]} selection An array with the ids of the\n * selected nodes.\n */\n getSelectedNodes() {\n let idArray = [];\n if (this.options.selectable === true) {\n for (let nodeId in this.selectionObj.nodes) {\n if (this.selectionObj.nodes.hasOwnProperty(nodeId)) {\n idArray.push(this.selectionObj.nodes[nodeId].id);\n }\n }\n }\n return idArray;\n }\n\n /**\n *\n * retrieve the currently selected edges\n * @return {Array} selection An array with the ids of the\n * selected nodes.\n */\n getSelectedEdges() {\n let idArray = [];\n if (this.options.selectable === true) {\n for (let edgeId in this.selectionObj.edges) {\n if (this.selectionObj.edges.hasOwnProperty(edgeId)) {\n idArray.push(this.selectionObj.edges[edgeId].id);\n }\n }\n }\n return idArray;\n }\n\n /**\n * Updates the current selection\n * @param {{nodes: Array., edges: Array.}} Selection\n * @param {Object} options Options\n */\n setSelection(selection, options = {}) {\n let i, id;\n\n if (!selection || (!selection.nodes && !selection.edges))\n throw 'Selection must be an object with nodes and/or edges properties';\n // first unselect any selected node, if option is true or undefined\n if (options.unselectAll || options.unselectAll === undefined) {\n this.unselectAll();\n }\n if (selection.nodes) {\n for (i = 0; i < selection.nodes.length; i++) {\n id = selection.nodes[i];\n\n let node = this.body.nodes[id];\n if (!node) {\n throw new RangeError('Node with id \"' + id + '\" not found');\n }\n // don't select edges with it\n this.selectObject(node, options.highlightEdges);\n }\n }\n\n if (selection.edges) {\n for (i = 0; i < selection.edges.length; i++) {\n id = selection.edges[i];\n\n let edge = this.body.edges[id];\n if (!edge) {\n throw new RangeError('Edge with id \"' + id + '\" not found');\n }\n this.selectObject(edge);\n }\n }\n this.body.emitter.emit('_requestRedraw');\n }\n\n\n /**\n * select zero or more nodes with the option to highlight edges\n * @param {Number[] | String[]} selection An array with the ids of the\n * selected nodes.\n * @param {boolean} [highlightEdges]\n */\n selectNodes(selection, highlightEdges = true) {\n if (!selection || (selection.length === undefined))\n throw 'Selection must be an array with ids';\n\n this.setSelection({nodes: selection}, {highlightEdges: highlightEdges});\n }\n\n\n /**\n * select zero or more edges\n * @param {Number[] | String[]} selection An array with the ids of the\n * selected nodes.\n */\n selectEdges(selection) {\n if (!selection || (selection.length === undefined))\n throw 'Selection must be an array with ids';\n\n this.setSelection({edges: selection});\n }\n\n /**\n * Validate the selection: remove ids of nodes which no longer exist\n * @private\n */\n updateSelection() {\n for (let nodeId in this.selectionObj.nodes) {\n if (this.selectionObj.nodes.hasOwnProperty(nodeId)) {\n if (!this.body.nodes.hasOwnProperty(nodeId)) {\n delete this.selectionObj.nodes[nodeId];\n }\n }\n }\n for (let edgeId in this.selectionObj.edges) {\n if (this.selectionObj.edges.hasOwnProperty(edgeId)) {\n if (!this.body.edges.hasOwnProperty(edgeId)) {\n delete this.selectionObj.edges[edgeId];\n }\n }\n }\n }\n}\n\nexport default SelectionHandler;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/SelectionHandler.js","'use strict';\n\nlet util = require('../../util');\nimport NetworkUtil from '../NetworkUtil';\n\nclass LayoutEngine {\n constructor(body) {\n this.body = body;\n\n this.initialRandomSeed = Math.round(Math.random() * 1000000);\n this.randomSeed = this.initialRandomSeed;\n this.setPhysics = false;\n this.options = {};\n this.optionsBackup = {physics:{}};\n\n this.defaultOptions = {\n randomSeed: undefined,\n improvedLayout: true,\n hierarchical: {\n enabled:false,\n levelSeparation: 150,\n nodeSpacing: 100,\n treeSpacing: 200,\n blockShifting: true,\n edgeMinimization: true,\n parentCentralization: true,\n direction: 'UD', // UD, DU, LR, RL\n sortMethod: 'hubsize' // hubsize, directed\n }\n };\n util.extend(this.options, this.defaultOptions);\n this.bindEventListeners();\n }\n\n bindEventListeners() {\n this.body.emitter.on('_dataChanged', () => {\n this.setupHierarchicalLayout();\n });\n this.body.emitter.on('_dataLoaded', () => {\n this.layoutNetwork();\n });\n this.body.emitter.on('_resetHierarchicalLayout', () => {\n this.setupHierarchicalLayout();\n });\n }\n\n setOptions(options, allOptions) {\n if (options !== undefined) {\n let prevHierarchicalState = this.options.hierarchical.enabled;\n util.selectiveDeepExtend([\"randomSeed\", \"improvedLayout\"],this.options, options);\n util.mergeOptions(this.options, options, 'hierarchical');\n if (options.randomSeed !== undefined) {this.initialRandomSeed = options.randomSeed;}\n\n if (this.options.hierarchical.enabled === true) {\n if (prevHierarchicalState === true) {\n // refresh the overridden options for nodes and edges.\n this.body.emitter.emit('refresh', true);\n }\n\n // make sure the level separation is the right way up\n if (this.options.hierarchical.direction === 'RL' || this.options.hierarchical.direction === 'DU') {\n if (this.options.hierarchical.levelSeparation > 0) {\n this.options.hierarchical.levelSeparation *= -1;\n }\n }\n else {\n if (this.options.hierarchical.levelSeparation < 0) {\n this.options.hierarchical.levelSeparation *= -1;\n }\n }\n\n this.body.emitter.emit('_resetHierarchicalLayout');\n // because the hierarchical system needs it's own physics and smooth curve settings, we adapt the other options if needed.\n return this.adaptAllOptionsForHierarchicalLayout(allOptions);\n }\n else {\n if (prevHierarchicalState === true) {\n // refresh the overridden options for nodes and edges.\n this.body.emitter.emit('refresh');\n return util.deepExtend(allOptions,this.optionsBackup);\n }\n }\n }\n return allOptions;\n }\n\n adaptAllOptionsForHierarchicalLayout(allOptions) {\n if (this.options.hierarchical.enabled === true) {\n // set the physics\n if (allOptions.physics === undefined || allOptions.physics === true) {\n allOptions.physics = {\n enabled:this.optionsBackup.physics.enabled === undefined ? true : this.optionsBackup.physics.enabled,\n solver:'hierarchicalRepulsion'\n };\n this.optionsBackup.physics.enabled = this.optionsBackup.physics.enabled === undefined ? true : this.optionsBackup.physics.enabled;\n this.optionsBackup.physics.solver = this.optionsBackup.physics.solver || 'barnesHut';\n }\n else if (typeof allOptions.physics === 'object') {\n this.optionsBackup.physics.enabled = allOptions.physics.enabled === undefined ? true : allOptions.physics.enabled;\n this.optionsBackup.physics.solver = allOptions.physics.solver || 'barnesHut';\n allOptions.physics.solver = 'hierarchicalRepulsion';\n }\n else if (allOptions.physics !== false) {\n this.optionsBackup.physics.solver ='barnesHut';\n allOptions.physics = {solver:'hierarchicalRepulsion'};\n }\n\n // get the type of static smooth curve in case it is required\n let type = 'horizontal';\n if (this.options.hierarchical.direction === 'RL' || this.options.hierarchical.direction === 'LR') {\n type = 'vertical';\n }\n\n // disable smooth curves if nothing is defined. If smooth curves have been turned on, turn them into static smooth curves.\n if (allOptions.edges === undefined) {\n this.optionsBackup.edges = {smooth:{enabled:true, type:'dynamic'}};\n allOptions.edges = {smooth: false};\n }\n else if (allOptions.edges.smooth === undefined) {\n this.optionsBackup.edges = {smooth:{enabled:true, type:'dynamic'}};\n allOptions.edges.smooth = false;\n }\n else {\n if (typeof allOptions.edges.smooth === 'boolean') {\n this.optionsBackup.edges = {smooth:allOptions.edges.smooth};\n allOptions.edges.smooth = {enabled: allOptions.edges.smooth, type:type}\n }\n else {\n // allow custom types except for dynamic\n if (allOptions.edges.smooth.type !== undefined && allOptions.edges.smooth.type !== 'dynamic') {\n type = allOptions.edges.smooth.type;\n }\n\n this.optionsBackup.edges = {\n smooth: allOptions.edges.smooth.enabled === undefined ? true : allOptions.edges.smooth.enabled,\n type: allOptions.edges.smooth.type === undefined ? 'dynamic' : allOptions.edges.smooth.type,\n roundness: allOptions.edges.smooth.roundness === undefined ? 0.5 : allOptions.edges.smooth.roundness,\n forceDirection: allOptions.edges.smooth.forceDirection === undefined ? false : allOptions.edges.smooth.forceDirection\n };\n allOptions.edges.smooth = {\n enabled: allOptions.edges.smooth.enabled === undefined ? true : allOptions.edges.smooth.enabled,\n type:type,\n roundness: allOptions.edges.smooth.roundness === undefined ? 0.5 : allOptions.edges.smooth.roundness,\n forceDirection: allOptions.edges.smooth.forceDirection === undefined ? false : allOptions.edges.smooth.forceDirection\n }\n }\n }\n\n // force all edges into static smooth curves. Only applies to edges that do not use the global options for smooth.\n this.body.emitter.emit('_forceDisableDynamicCurves', type);\n }\n\n return allOptions;\n }\n\n seededRandom() {\n let x = Math.sin(this.randomSeed++) * 10000;\n return x - Math.floor(x);\n }\n\n positionInitially(nodesArray) {\n if (this.options.hierarchical.enabled !== true) {\n this.randomSeed = this.initialRandomSeed;\n for (let i = 0; i < nodesArray.length; i++) {\n let node = nodesArray[i];\n let radius = 10 * 0.1 * nodesArray.length + 10;\n let angle = 2 * Math.PI * this.seededRandom();\n if (node.x === undefined) {\n node.x = radius * Math.cos(angle);\n }\n if (node.y === undefined) {\n node.y = radius * Math.sin(angle);\n }\n }\n }\n }\n\n\n /**\n * Use Kamada Kawai to position nodes. This is quite a heavy algorithm so if there are a lot of nodes we\n * cluster them first to reduce the amount.\n */\n layoutNetwork() {\n if (this.options.hierarchical.enabled !== true && this.options.improvedLayout === true) {\n // first check if we should Kamada Kawai to layout. The threshold is if less than half of the visible\n // nodes have predefined positions we use this.\n let positionDefined = 0;\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n let node = this.body.nodes[this.body.nodeIndices[i]];\n if (node.predefinedPosition === true) {\n positionDefined += 1;\n }\n }\n\n // if less than half of the nodes have a predefined position we continue\n if (positionDefined < 0.5 * this.body.nodeIndices.length) {\n let MAX_LEVELS = 10;\n let level = 0;\n let clusterThreshold = 100;\n // if there are a lot of nodes, we cluster before we run the algorithm.\n if (this.body.nodeIndices.length > clusterThreshold) {\n let startLength = this.body.nodeIndices.length;\n while (this.body.nodeIndices.length > clusterThreshold) {\n //console.time(\"clustering\")\n level += 1;\n let before = this.body.nodeIndices.length;\n // if there are many nodes we do a hubsize cluster\n if (level % 3 === 0) {\n this.body.modules.clustering.clusterBridges();\n }\n else {\n this.body.modules.clustering.clusterOutliers();\n }\n let after = this.body.nodeIndices.length;\n if ((before == after && level % 3 !== 0) || level > MAX_LEVELS) {\n this._declusterAll();\n this.body.emitter.emit(\"_layoutFailed\");\n console.info(\"This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.\");\n return;\n }\n //console.timeEnd(\"clustering\")\n //console.log(level,after)\n }\n // increase the size of the edges\n this.body.modules.kamadaKawai.setOptions({springLength: Math.max(150, 2 * startLength)})\n }\n\n // position the system for these nodes and edges\n this.body.modules.kamadaKawai.solve(this.body.nodeIndices, this.body.edgeIndices, true);\n\n // shift to center point\n this._shiftToCenter();\n\n // perturb the nodes a little bit to force the physics to kick in\n let offset = 70;\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n // Only perturb the nodes that aren't fixed\n if (this.body.nodes[this.body.nodeIndices[i]].predefinedPosition === false) {\n this.body.nodes[this.body.nodeIndices[i]].x += (0.5 - this.seededRandom())*offset;\n this.body.nodes[this.body.nodeIndices[i]].y += (0.5 - this.seededRandom())*offset;\n }\n }\n\n // uncluster all clusters\n this._declusterAll();\n\n // reposition all bezier nodes.\n this.body.emitter.emit(\"_repositionBezierNodes\");\n }\n }\n }\n\n /**\n * Move all the nodes towards to the center so gravitational pull wil not move the nodes away from view\n * @private\n */\n _shiftToCenter() {\n let range = NetworkUtil.getRangeCore(this.body.nodes, this.body.nodeIndices);\n let center = NetworkUtil.findCenter(range);\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n this.body.nodes[this.body.nodeIndices[i]].x -= center.x;\n this.body.nodes[this.body.nodeIndices[i]].y -= center.y;\n }\n }\n\n _declusterAll() {\n let clustersPresent = true;\n while (clustersPresent === true) {\n clustersPresent = false;\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n if (this.body.nodes[this.body.nodeIndices[i]].isCluster === true) {\n clustersPresent = true;\n this.body.modules.clustering.openCluster(this.body.nodeIndices[i], {}, false);\n }\n }\n if (clustersPresent === true) {\n this.body.emitter.emit('_dataChanged');\n }\n }\n }\n\n getSeed() {\n return this.initialRandomSeed;\n }\n\n /**\n * This is the main function to layout the nodes in a hierarchical way.\n * It checks if the node details are supplied correctly\n *\n * @private\n */\n setupHierarchicalLayout() {\n if (this.options.hierarchical.enabled === true && this.body.nodeIndices.length > 0) {\n // get the size of the largest hubs and check if the user has defined a level for a node.\n let node, nodeId;\n let definedLevel = false;\n let definedPositions = true;\n let undefinedLevel = false;\n this.hierarchicalLevels = {};\n this.lastNodeOnLevel = {};\n this.hierarchicalChildrenReference = {};\n this.hierarchicalParentReference = {};\n this.hierarchicalTrees = {};\n this.treeIndex = -1;\n\n this.distributionOrdering = {};\n this.distributionIndex = {};\n this.distributionOrderingPresence = {};\n\n\n for (nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n node = this.body.nodes[nodeId];\n if (node.options.x === undefined && node.options.y === undefined) {\n definedPositions = false;\n }\n if (node.options.level !== undefined) {\n definedLevel = true;\n this.hierarchicalLevels[nodeId] = node.options.level;\n }\n else {\n undefinedLevel = true;\n }\n }\n }\n\n // if the user defined some levels but not all, alert and run without hierarchical layout\n if (undefinedLevel === true && definedLevel === true) {\n throw new Error('To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.');\n return;\n }\n else {\n // define levels if undefined by the users. Based on hubsize.\n if (undefinedLevel === true) {\n if (this.options.hierarchical.sortMethod === 'hubsize') {\n this._determineLevelsByHubsize();\n }\n else if (this.options.hierarchical.sortMethod === 'directed') {\n this._determineLevelsDirected();\n }\n else if (this.options.hierarchical.sortMethod === 'custom') {\n this._determineLevelsCustomCallback();\n }\n }\n\n\n // fallback for cases where there are nodes but no edges\n for (let nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n if (this.hierarchicalLevels[nodeId] === undefined) {\n this.hierarchicalLevels[nodeId] = 0;\n }\n }\n }\n // check the distribution of the nodes per level.\n let distribution = this._getDistribution();\n\n // get the parent children relations.\n this._generateMap();\n\n // place the nodes on the canvas.\n this._placeNodesByHierarchy(distribution);\n\n // condense the whitespace.\n this._condenseHierarchy();\n\n // shift to center so gravity does not have to do much\n this._shiftToCenter();\n }\n }\n }\n\n /**\n * @private\n */\n _condenseHierarchy() {\n // Global var in this scope to define when the movement has stopped.\n let stillShifting = false;\n let branches = {};\n // first we have some methods to help shifting trees around.\n // the main method to shift the trees\n let shiftTrees = () => {\n let treeSizes = getTreeSizes();\n for (let i = 0; i < treeSizes.length - 1; i++) {\n let diff = treeSizes[i].max - treeSizes[i+1].min;\n shiftTree(i + 1, diff + this.options.hierarchical.treeSpacing);\n }\n };\n\n // shift a single tree by an offset\n let shiftTree = (index, offset) => {\n for (let nodeId in this.hierarchicalTrees) {\n if (this.hierarchicalTrees.hasOwnProperty(nodeId)) {\n if (this.hierarchicalTrees[nodeId] === index) {\n let node = this.body.nodes[nodeId];\n let pos = this._getPositionForHierarchy(node);\n this._setPositionForHierarchy(node, pos + offset, undefined, true);\n }\n }\n }\n };\n\n // get the width of a tree\n let getTreeSize = (index) => {\n let min = 1e9;\n let max = -1e9;\n for (let nodeId in this.hierarchicalTrees) {\n if (this.hierarchicalTrees.hasOwnProperty(nodeId)) {\n if (this.hierarchicalTrees[nodeId] === index) {\n let pos = this._getPositionForHierarchy(this.body.nodes[nodeId]);\n min = Math.min(pos, min);\n max = Math.max(pos, max);\n }\n }\n }\n return {min:min, max:max};\n };\n\n // get the width of all trees\n let getTreeSizes = () => {\n let treeWidths = [];\n for (let i = 0; i <= this.treeIndex; i++) {\n treeWidths.push(getTreeSize(i));\n }\n return treeWidths;\n };\n\n\n // get a map of all nodes in this branch\n let getBranchNodes = (source, map) => {\n map[source.id] = true;\n if (this.hierarchicalChildrenReference[source.id]) {\n let children = this.hierarchicalChildrenReference[source.id];\n if (children.length > 0) {\n for (let i = 0; i < children.length; i++) {\n getBranchNodes(this.body.nodes[children[i]], map);\n }\n }\n }\n };\n\n // get a min max width as well as the maximum movement space it has on either sides\n // we use min max terminology because width and height can interchange depending on the direction of the layout\n let getBranchBoundary = (branchMap, maxLevel = 1e9) => {\n let minSpace = 1e9;\n let maxSpace = 1e9;\n let min = 1e9;\n let max = -1e9;\n for (let branchNode in branchMap) {\n if (branchMap.hasOwnProperty(branchNode)) {\n let node = this.body.nodes[branchNode];\n let level = this.hierarchicalLevels[node.id];\n let position = this._getPositionForHierarchy(node);\n\n // get the space around the node.\n let [minSpaceNode, maxSpaceNode] = this._getSpaceAroundNode(node,branchMap);\n minSpace = Math.min(minSpaceNode, minSpace);\n maxSpace = Math.min(maxSpaceNode, maxSpace);\n\n // the width is only relevant for the levels two nodes have in common. This is why we filter on this.\n if (level <= maxLevel) {\n min = Math.min(position, min);\n max = Math.max(position, max);\n }\n }\n }\n\n return [min, max, minSpace, maxSpace];\n };\n\n // get the maximum level of a branch.\n let getMaxLevel = (nodeId) => {\n let level = this.hierarchicalLevels[nodeId];\n if (this.hierarchicalChildrenReference[nodeId]) {\n let children = this.hierarchicalChildrenReference[nodeId];\n if (children.length > 0) {\n for (let i = 0; i < children.length; i++) {\n level = Math.max(level,getMaxLevel(children[i]));\n }\n }\n }\n return level;\n };\n\n // check what the maximum level is these nodes have in common.\n let getCollisionLevel = (node1, node2) => {\n let maxLevel1 = getMaxLevel(node1.id);\n let maxLevel2 = getMaxLevel(node2.id);\n return Math.min(maxLevel1, maxLevel2);\n };\n\n // check if two nodes have the same parent(s)\n let hasSameParent = (node1, node2) => {\n let parents1 = this.hierarchicalParentReference[node1.id];\n let parents2 = this.hierarchicalParentReference[node2.id];\n if (parents1 === undefined || parents2 === undefined) {\n return false;\n }\n\n for (let i = 0; i < parents1.length; i++) {\n for (let j = 0; j < parents2.length; j++) {\n if (parents1[i] == parents2[j]) {\n return true;\n }\n }\n }\n return false;\n };\n\n // condense elements. These can be nodes or branches depending on the callback.\n let shiftElementsCloser = (callback, levels, centerParents) => {\n for (let i = 0; i < levels.length; i++) {\n let level = levels[i];\n let levelNodes = this.distributionOrdering[level];\n if (levelNodes.length > 1) {\n for (let j = 0; j < levelNodes.length - 1; j++) {\n if (hasSameParent(levelNodes[j],levelNodes[j+1]) === true) {\n if (this.hierarchicalTrees[levelNodes[j].id] === this.hierarchicalTrees[levelNodes[j+1].id]) {\n callback(levelNodes[j],levelNodes[j+1], centerParents);\n }\n }}\n }\n }\n };\n\n // callback for shifting branches\n let branchShiftCallback = (node1, node2, centerParent = false) => {\n //window.CALLBACKS.push(() => {\n let pos1 = this._getPositionForHierarchy(node1);\n let pos2 = this._getPositionForHierarchy(node2);\n let diffAbs = Math.abs(pos2 - pos1);\n //console.log(\"NOW CHEcKING:\", node1.id, node2.id, diffAbs);\n if (diffAbs > this.options.hierarchical.nodeSpacing) {\n let branchNodes1 = {}; branchNodes1[node1.id] = true;\n let branchNodes2 = {}; branchNodes2[node2.id] = true;\n\n getBranchNodes(node1, branchNodes1);\n getBranchNodes(node2, branchNodes2);\n\n // check the largest distance between the branches\n let maxLevel = getCollisionLevel(node1, node2);\n let [min1,max1, minSpace1, maxSpace1] = getBranchBoundary(branchNodes1, maxLevel);\n let [min2,max2, minSpace2, maxSpace2] = getBranchBoundary(branchNodes2, maxLevel);\n\n //console.log(node1.id, getBranchBoundary(branchNodes1, maxLevel), node2.id, getBranchBoundary(branchNodes2, maxLevel), maxLevel);\n let diffBranch = Math.abs(max1 - min2);\n if (diffBranch > this.options.hierarchical.nodeSpacing) {\n let offset = max1 - min2 + this.options.hierarchical.nodeSpacing;\n if (offset < -minSpace2 + this.options.hierarchical.nodeSpacing) {\n offset = -minSpace2 + this.options.hierarchical.nodeSpacing;\n //console.log(\"RESETTING OFFSET\", max1 - min2 + this.options.hierarchical.nodeSpacing, -minSpace2, offset);\n }\n if (offset < 0) {\n //console.log(\"SHIFTING\", node2.id, offset);\n this._shiftBlock(node2.id, offset);\n stillShifting = true;\n\n if (centerParent === true)\n this._centerParent(node2);\n }\n }\n\n }\n //this.body.emitter.emit(\"_redraw\");})\n };\n\n let minimizeEdgeLength = (iterations, node) => {\n //window.CALLBACKS.push(() => {\n // console.log(\"ts\",node.id);\n let nodeId = node.id;\n let allEdges = node.edges;\n let nodeLevel = this.hierarchicalLevels[node.id];\n\n // gather constants\n let C2 = this.options.hierarchical.levelSeparation * this.options.hierarchical.levelSeparation;\n let referenceNodes = {};\n let aboveEdges = [];\n for (let i = 0; i < allEdges.length; i++) {\n let edge = allEdges[i];\n if (edge.toId != edge.fromId) {\n let otherNode = edge.toId == nodeId ? edge.from : edge.to;\n referenceNodes[allEdges[i].id] = otherNode;\n if (this.hierarchicalLevels[otherNode.id] < nodeLevel) {\n aboveEdges.push(edge);\n }\n }\n }\n\n // differentiated sum of lengths based on only moving one node over one axis\n let getFx = (point, edges) => {\n let sum = 0;\n for (let i = 0; i < edges.length; i++) {\n if (referenceNodes[edges[i].id] !== undefined) {\n let a = this._getPositionForHierarchy(referenceNodes[edges[i].id]) - point;\n sum += a / Math.sqrt(a * a + C2);\n }\n }\n return sum;\n };\n\n // doubly differentiated sum of lengths based on only moving one node over one axis\n let getDFx = (point, edges) => {\n let sum = 0;\n for (let i = 0; i < edges.length; i++) {\n if (referenceNodes[edges[i].id] !== undefined) {\n let a = this._getPositionForHierarchy(referenceNodes[edges[i].id]) - point;\n sum -= (C2 * Math.pow(a * a + C2, -1.5));\n }\n }\n return sum;\n };\n\n let getGuess = (iterations, edges) => {\n let guess = this._getPositionForHierarchy(node);\n // Newton's method for optimization\n let guessMap = {};\n for (let i = 0; i < iterations; i++) {\n let fx = getFx(guess, edges);\n let dfx = getDFx(guess, edges);\n\n // we limit the movement to avoid instability.\n let limit = 40;\n let ratio = Math.max(-limit, Math.min(limit, Math.round(fx/dfx)));\n guess = guess - ratio;\n // reduce duplicates\n if (guessMap[guess] !== undefined) {\n break;\n }\n guessMap[guess] = i;\n }\n return guess;\n };\n\n let moveBranch = (guess) => {\n // position node if there is space\n let nodePosition = this._getPositionForHierarchy(node);\n\n // check movable area of the branch\n if (branches[node.id] === undefined) {\n let branchNodes = {};\n branchNodes[node.id] = true;\n getBranchNodes(node, branchNodes);\n branches[node.id] = branchNodes;\n }\n let [minBranch, maxBranch, minSpaceBranch, maxSpaceBranch] = getBranchBoundary(branches[node.id]);\n\n let diff = guess - nodePosition;\n\n // check if we are allowed to move the node:\n let branchOffset = 0;\n if (diff > 0) {\n branchOffset = Math.min(diff, maxSpaceBranch - this.options.hierarchical.nodeSpacing);\n }\n else if (diff < 0) {\n branchOffset = -Math.min(-diff, minSpaceBranch - this.options.hierarchical.nodeSpacing);\n }\n\n if (branchOffset != 0) {\n //console.log(\"moving branch:\",branchOffset, maxSpaceBranch, minSpaceBranch)\n this._shiftBlock(node.id, branchOffset);\n //this.body.emitter.emit(\"_redraw\");\n stillShifting = true;\n }\n };\n\n let moveNode = (guess) => {\n let nodePosition = this._getPositionForHierarchy(node);\n\n // position node if there is space\n let [minSpace, maxSpace] = this._getSpaceAroundNode(node);\n let diff = guess - nodePosition;\n // check if we are allowed to move the node:\n let newPosition = nodePosition;\n if (diff > 0) {\n newPosition = Math.min(nodePosition + (maxSpace - this.options.hierarchical.nodeSpacing), guess);\n }\n else if (diff < 0) {\n newPosition = Math.max(nodePosition - (minSpace - this.options.hierarchical.nodeSpacing), guess);\n }\n\n if (newPosition !== nodePosition) {\n //console.log(\"moving Node:\",diff, minSpace, maxSpace);\n this._setPositionForHierarchy(node, newPosition, undefined, true);\n //this.body.emitter.emit(\"_redraw\");\n stillShifting = true;\n }\n };\n\n let guess = getGuess(iterations, aboveEdges);\n moveBranch(guess);\n guess = getGuess(iterations, allEdges);\n moveNode(guess);\n //})\n };\n\n // method to remove whitespace between branches. Because we do bottom up, we can center the parents.\n let minimizeEdgeLengthBottomUp = (iterations) => {\n let levels = Object.keys(this.distributionOrdering);\n levels = levels.reverse();\n for (let i = 0; i < iterations; i++) {\n stillShifting = false;\n for (let j = 0; j < levels.length; j++) {\n let level = levels[j];\n let levelNodes = this.distributionOrdering[level];\n for (let k = 0; k < levelNodes.length; k++) {\n minimizeEdgeLength(1000, levelNodes[k]);\n }\n }\n if (stillShifting !== true) {\n //console.log(\"FINISHED minimizeEdgeLengthBottomUp IN \" + i);\n break;\n }\n }\n };\n\n // method to remove whitespace between branches. Because we do bottom up, we can center the parents.\n let shiftBranchesCloserBottomUp = (iterations) => {\n let levels = Object.keys(this.distributionOrdering);\n levels = levels.reverse();\n for (let i = 0; i < iterations; i++) {\n stillShifting = false;\n shiftElementsCloser(branchShiftCallback, levels, true);\n if (stillShifting !== true) {\n //console.log(\"FINISHED shiftBranchesCloserBottomUp IN \" + (i+1));\n break;\n }\n }\n };\n\n // center all parents\n let centerAllParents = () => {\n for (let nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId))\n this._centerParent(this.body.nodes[nodeId]);\n }\n };\n\n // center all parents\n let centerAllParentsBottomUp = () => {\n let levels = Object.keys(this.distributionOrdering);\n levels = levels.reverse();\n for (let i = 0; i < levels.length; i++) {\n let level = levels[i];\n let levelNodes = this.distributionOrdering[level];\n for (let j = 0; j < levelNodes.length; j++) {\n this._centerParent(levelNodes[j]);\n }\n }\n };\n\n // the actual work is done here.\n if (this.options.hierarchical.blockShifting === true) {\n shiftBranchesCloserBottomUp(5);\n centerAllParents();\n }\n\n // minimize edge length\n if (this.options.hierarchical.edgeMinimization === true) {\n minimizeEdgeLengthBottomUp(20);\n }\n\n if (this.options.hierarchical.parentCentralization === true) {\n centerAllParentsBottomUp()\n }\n\n shiftTrees();\n }\n\n /**\n * This gives the space around the node. IF a map is supplied, it will only check against nodes NOT in the map.\n * This is used to only get the distances to nodes outside of a branch.\n * @param node\n * @param map\n * @returns {*[]}\n * @private\n */\n _getSpaceAroundNode(node, map) {\n let useMap = true;\n if (map === undefined) {\n useMap = false;\n }\n let level = this.hierarchicalLevels[node.id];\n if (level !== undefined) {\n let index = this.distributionIndex[node.id];\n let position = this._getPositionForHierarchy(node);\n let minSpace = 1e9;\n let maxSpace = 1e9;\n if (index !== 0) {\n let prevNode = this.distributionOrdering[level][index - 1];\n if ((useMap === true && map[prevNode.id] === undefined) || useMap === false) {\n let prevPos = this._getPositionForHierarchy(prevNode);\n minSpace = position - prevPos;\n }\n }\n\n if (index != this.distributionOrdering[level].length - 1) {\n let nextNode = this.distributionOrdering[level][index + 1];\n if ((useMap === true && map[nextNode.id] === undefined) || useMap === false) {\n let nextPos = this._getPositionForHierarchy(nextNode);\n maxSpace = Math.min(maxSpace, nextPos - position);\n }\n }\n\n return [minSpace, maxSpace];\n }\n else {\n return [0, 0];\n }\n }\n\n /**\n * We use this method to center a parent node and check if it does not cross other nodes when it does.\n * @param node\n * @private\n */\n _centerParent(node) {\n if (this.hierarchicalParentReference[node.id]) {\n let parents = this.hierarchicalParentReference[node.id];\n for (var i = 0; i < parents.length; i++) {\n let parentId = parents[i];\n let parentNode = this.body.nodes[parentId];\n if (this.hierarchicalChildrenReference[parentId]) {\n // get the range of the children\n let minPos = 1e9;\n let maxPos = -1e9;\n let children = this.hierarchicalChildrenReference[parentId];\n if (children.length > 0) {\n for (let i = 0; i < children.length; i++) {\n let childNode = this.body.nodes[children[i]];\n minPos = Math.min(minPos, this._getPositionForHierarchy(childNode));\n maxPos = Math.max(maxPos, this._getPositionForHierarchy(childNode));\n }\n }\n\n let position = this._getPositionForHierarchy(parentNode);\n let [minSpace, maxSpace] = this._getSpaceAroundNode(parentNode);\n let newPosition = 0.5 * (minPos + maxPos);\n let diff = position - newPosition;\n if ((diff < 0 && Math.abs(diff) < maxSpace - this.options.hierarchical.nodeSpacing) || (diff > 0 && Math.abs(diff) < minSpace - this.options.hierarchical.nodeSpacing)) {\n this._setPositionForHierarchy(parentNode, newPosition, undefined, true);\n }\n }\n }\n }\n }\n\n\n\n /**\n * This function places the nodes on the canvas based on the hierarchial distribution.\n *\n * @param {Object} distribution | obtained by the function this._getDistribution()\n * @private\n */\n _placeNodesByHierarchy(distribution) {\n this.positionedNodes = {};\n // start placing all the level 0 nodes first. Then recursively position their branches.\n for (let level in distribution) {\n if (distribution.hasOwnProperty(level)) {\n // sort nodes in level by position:\n let nodeArray = Object.keys(distribution[level]);\n nodeArray = this._indexArrayToNodes(nodeArray);\n this._sortNodeArray(nodeArray);\n let handledNodeCount = 0;\n\n for (let i = 0; i < nodeArray.length; i++) {\n let node = nodeArray[i];\n if (this.positionedNodes[node.id] === undefined) {\n let pos = this.options.hierarchical.nodeSpacing * handledNodeCount;\n // we get the X or Y values we need and store them in pos and previousPos. The get and set make sure we get X or Y\n if (handledNodeCount > 0) {pos = this._getPositionForHierarchy(nodeArray[i-1]) + this.options.hierarchical.nodeSpacing;}\n this._setPositionForHierarchy(node, pos, level);\n this._validataPositionAndContinue(node, level, pos);\n\n handledNodeCount++;\n }\n }\n }\n }\n }\n\n\n /**\n * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes\n * on a X position that ensures there will be no overlap.\n *\n * @param parentId\n * @param parentLevel\n * @private\n */\n _placeBranchNodes(parentId, parentLevel) {\n // if this is not a parent, cancel the placing. This can happen with multiple parents to one child.\n if (this.hierarchicalChildrenReference[parentId] === undefined) {\n return;\n }\n\n // get a list of childNodes\n let childNodes = [];\n for (let i = 0; i < this.hierarchicalChildrenReference[parentId].length; i++) {\n childNodes.push(this.body.nodes[this.hierarchicalChildrenReference[parentId][i]]);\n }\n\n // use the positions to order the nodes.\n this._sortNodeArray(childNodes);\n\n // position the childNodes\n for (let i = 0; i < childNodes.length; i++) {\n let childNode = childNodes[i];\n let childNodeLevel = this.hierarchicalLevels[childNode.id];\n // check if the child node is below the parent node and if it has already been positioned.\n if (childNodeLevel > parentLevel && this.positionedNodes[childNode.id] === undefined) {\n // get the amount of space required for this node. If parent the width is based on the amount of children.\n let pos;\n\n // we get the X or Y values we need and store them in pos and previousPos. The get and set make sure we get X or Y\n if (i === 0) {pos = this._getPositionForHierarchy(this.body.nodes[parentId]);}\n else {pos = this._getPositionForHierarchy(childNodes[i-1]) + this.options.hierarchical.nodeSpacing;}\n this._setPositionForHierarchy(childNode, pos, childNodeLevel);\n this._validataPositionAndContinue(childNode, childNodeLevel, pos);\n }\n else {\n return;\n }\n }\n\n // center the parent nodes.\n let minPos = 1e9;\n let maxPos = -1e9;\n for (let i = 0; i < childNodes.length; i++) {\n let childNodeId = childNodes[i].id;\n minPos = Math.min(minPos, this._getPositionForHierarchy(this.body.nodes[childNodeId]));\n maxPos = Math.max(maxPos, this._getPositionForHierarchy(this.body.nodes[childNodeId]));\n }\n this._setPositionForHierarchy(this.body.nodes[parentId], 0.5 * (minPos + maxPos), parentLevel);\n }\n\n\n /**\n * This method checks for overlap and if required shifts the branch. It also keeps records of positioned nodes.\n * Finally it will call _placeBranchNodes to place the branch nodes.\n * @param node\n * @param level\n * @param pos\n * @private\n */\n _validataPositionAndContinue(node, level, pos) {\n // if overlap has been detected, we shift the branch\n if (this.lastNodeOnLevel[level] !== undefined) {\n let previousPos = this._getPositionForHierarchy(this.body.nodes[this.lastNodeOnLevel[level]]);\n if (pos - previousPos < this.options.hierarchical.nodeSpacing) {\n let diff = (previousPos + this.options.hierarchical.nodeSpacing) - pos;\n let sharedParent = this._findCommonParent(this.lastNodeOnLevel[level], node.id);\n this._shiftBlock(sharedParent.withChild, diff);\n }\n }\n\n // store change in position.\n this.lastNodeOnLevel[level] = node.id;\n\n this.positionedNodes[node.id] = true;\n\n this._placeBranchNodes(node.id, level);\n }\n\n /**\n * Receives an array with node indices and returns an array with the actual node references. Used for sorting based on\n * node properties.\n * @param idArray\n */\n _indexArrayToNodes(idArray) {\n let array = [];\n for (let i = 0; i < idArray.length; i++) {\n array.push(this.body.nodes[idArray[i]])\n }\n return array;\n }\n\n /**\n * This function get the distribution of levels based on hubsize\n *\n * @returns {Object}\n * @private\n */\n _getDistribution() {\n let distribution = {};\n let nodeId, node;\n\n // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time.\n // the fix of X is removed after the x value has been set.\n for (nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n node = this.body.nodes[nodeId];\n let level = this.hierarchicalLevels[nodeId] === undefined ? 0 : this.hierarchicalLevels[nodeId];\n if (this.options.hierarchical.direction === 'UD' || this.options.hierarchical.direction === 'DU') {\n node.y = this.options.hierarchical.levelSeparation * level;\n node.options.fixed.y = true;\n }\n else {\n node.x = this.options.hierarchical.levelSeparation * level;\n node.options.fixed.x = true;\n }\n if (distribution[level] === undefined) {\n distribution[level] = {};\n }\n distribution[level][nodeId] = node;\n }\n }\n return distribution;\n }\n\n\n /**\n * Get the hubsize from all remaining unlevelled nodes.\n *\n * @returns {number}\n * @private\n */\n _getHubSize() {\n let hubSize = 0;\n for (let nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n let node = this.body.nodes[nodeId];\n if (this.hierarchicalLevels[nodeId] === undefined) {\n hubSize = node.edges.length < hubSize ? hubSize : node.edges.length;\n }\n }\n }\n return hubSize;\n }\n\n\n /**\n * this function allocates nodes in levels based on the recursive branching from the largest hubs.\n *\n * @param hubsize\n * @private\n */\n _determineLevelsByHubsize() {\n let hubSize = 1;\n\n let levelDownstream = (nodeA, nodeB) => {\n if (this.hierarchicalLevels[nodeB.id] === undefined) {\n // set initial level\n if (this.hierarchicalLevels[nodeA.id] === undefined) {\n this.hierarchicalLevels[nodeA.id] = 0;\n }\n // set level\n this.hierarchicalLevels[nodeB.id] = this.hierarchicalLevels[nodeA.id] + 1;\n }\n };\n\n while (hubSize > 0) {\n // determine hubs\n hubSize = this._getHubSize();\n if (hubSize === 0)\n break;\n\n for (let nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n let node = this.body.nodes[nodeId];\n if (node.edges.length === hubSize) {\n this._crawlNetwork(levelDownstream,nodeId);\n }\n }\n }\n }\n }\n\n /**\n * TODO: release feature\n * @private\n */\n _determineLevelsCustomCallback() {\n let minLevel = 100000;\n\n // TODO: this should come from options.\n let customCallback = function(nodeA, nodeB, edge) {\n\n };\n\n let levelByDirection = (nodeA, nodeB, edge) => {\n let levelA = this.hierarchicalLevels[nodeA.id];\n // set initial level\n if (levelA === undefined) {this.hierarchicalLevels[nodeA.id] = minLevel;}\n\n let diff = customCallback(\n NetworkUtil.cloneOptions(nodeA,'node'),\n NetworkUtil.cloneOptions(nodeB,'node'),\n NetworkUtil.cloneOptions(edge,'edge')\n );\n\n this.hierarchicalLevels[nodeB.id] = this.hierarchicalLevels[nodeA.id] + diff;\n };\n\n this._crawlNetwork(levelByDirection);\n this._setMinLevelToZero();\n }\n\n /**\n * this function allocates nodes in levels based on the direction of the edges\n *\n * @param hubsize\n * @private\n */\n _determineLevelsDirected() {\n let minLevel = 10000;\n let levelByDirection = (nodeA, nodeB, edge) => {\n let levelA = this.hierarchicalLevels[nodeA.id];\n // set initial level\n if (levelA === undefined) {this.hierarchicalLevels[nodeA.id] = minLevel;}\n if (edge.toId == nodeB.id) {\n this.hierarchicalLevels[nodeB.id] = this.hierarchicalLevels[nodeA.id] + 1;\n }\n else {\n this.hierarchicalLevels[nodeB.id] = this.hierarchicalLevels[nodeA.id] - 1;\n }\n };\n this._crawlNetwork(levelByDirection);\n this._setMinLevelToZero();\n }\n\n\n /**\n * Small util method to set the minimum levels of the nodes to zero.\n * @private\n */\n _setMinLevelToZero() {\n let minLevel = 1e9;\n // get the minimum level\n for (let nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n if (this.hierarchicalLevels[nodeId] !== undefined) {\n minLevel = Math.min(this.hierarchicalLevels[nodeId], minLevel);\n }\n }\n }\n\n // subtract the minimum from the set so we have a range starting from 0\n for (let nodeId in this.body.nodes) {\n if (this.body.nodes.hasOwnProperty(nodeId)) {\n if (this.hierarchicalLevels[nodeId] !== undefined) {\n this.hierarchicalLevels[nodeId] -= minLevel;\n }\n }\n }\n }\n\n\n /**\n * Update the bookkeeping of parent and child.\n * @private\n */\n _generateMap() {\n let fillInRelations = (parentNode, childNode) => {\n if (this.hierarchicalLevels[childNode.id] > this.hierarchicalLevels[parentNode.id]) {\n let parentNodeId = parentNode.id;\n let childNodeId = childNode.id;\n if (this.hierarchicalChildrenReference[parentNodeId] === undefined) {\n this.hierarchicalChildrenReference[parentNodeId] = [];\n }\n this.hierarchicalChildrenReference[parentNodeId].push(childNodeId);\n if (this.hierarchicalParentReference[childNodeId] === undefined) {\n this.hierarchicalParentReference[childNodeId] = [];\n }\n this.hierarchicalParentReference[childNodeId].push(parentNodeId);\n }\n };\n\n this._crawlNetwork(fillInRelations);\n }\n\n\n /**\n * Crawl over the entire network and use a callback on each node couple that is connected to each other.\n * @param callback | will receive nodeA nodeB and the connecting edge. A and B are unique.\n * @param startingNodeId\n * @private\n */\n _crawlNetwork(callback = function() {}, startingNodeId) {\n let progress = {};\n let treeIndex = 0;\n\n let crawler = (node, tree) => {\n if (progress[node.id] === undefined) {\n\n if (this.hierarchicalTrees[node.id] === undefined) {\n this.hierarchicalTrees[node.id] = tree;\n this.treeIndex = Math.max(tree, this.treeIndex);\n }\n\n progress[node.id] = true;\n let childNode;\n for (let i = 0; i < node.edges.length; i++) {\n if (node.edges[i].connected === true) {\n if (node.edges[i].toId === node.id) {\n childNode = node.edges[i].from;\n }\n else {\n childNode = node.edges[i].to;\n }\n\n if (node.id !== childNode.id) {\n callback(node, childNode, node.edges[i]);\n crawler(childNode, tree);\n }\n }\n }\n }\n };\n\n\n // we can crawl from a specific node or over all nodes.\n if (startingNodeId === undefined) {\n for (let i = 0; i < this.body.nodeIndices.length; i++) {\n let node = this.body.nodes[this.body.nodeIndices[i]];\n if (progress[node.id] === undefined) {\n crawler(node, treeIndex);\n treeIndex += 1;\n }\n }\n }\n else {\n let node = this.body.nodes[startingNodeId];\n if (node === undefined) {\n console.error(\"Node not found:\", startingNodeId);\n return;\n }\n crawler(node);\n }\n }\n\n\n /**\n * Shift a branch a certain distance\n * @param parentId\n * @param diff\n * @private\n */\n _shiftBlock(parentId, diff) {\n if (this.options.hierarchical.direction === 'UD' || this.options.hierarchical.direction === 'DU') {\n this.body.nodes[parentId].x += diff;\n }\n else {\n this.body.nodes[parentId].y += diff;\n }\n if (this.hierarchicalChildrenReference[parentId] !== undefined) {\n for (let i = 0; i < this.hierarchicalChildrenReference[parentId].length; i++) {\n this._shiftBlock(this.hierarchicalChildrenReference[parentId][i], diff);\n }\n }\n }\n\n\n /**\n * Find a common parent between branches.\n * @param childA\n * @param childB\n * @returns {{foundParent, withChild}}\n * @private\n */\n _findCommonParent(childA,childB) {\n let parents = {};\n let iterateParents = (parents,child) => {\n if (this.hierarchicalParentReference[child] !== undefined) {\n for (let i = 0; i < this.hierarchicalParentReference[child].length; i++) {\n let parent = this.hierarchicalParentReference[child][i];\n parents[parent] = true;\n iterateParents(parents, parent)\n }\n }\n };\n let findParent = (parents, child) => {\n if (this.hierarchicalParentReference[child] !== undefined) {\n for (let i = 0; i < this.hierarchicalParentReference[child].length; i++) {\n let parent = this.hierarchicalParentReference[child][i];\n if (parents[parent] !== undefined) {\n return {foundParent:parent, withChild:child};\n }\n let branch = findParent(parents, parent);\n if (branch.foundParent !== null) {\n return branch;\n }\n }\n }\n return {foundParent:null, withChild:child};\n };\n\n iterateParents(parents, childA);\n return findParent(parents, childB);\n }\n\n /**\n * Abstract the getting of the position so we won't have to repeat the check for direction all the time\n * @param node\n * @param position\n * @param level\n * @private\n */\n _setPositionForHierarchy(node, position, level, doNotUpdate = false) {\n //console.log('_setPositionForHierarchy',node.id, position)\n if (doNotUpdate !== true) {\n if (this.distributionOrdering[level] === undefined) {\n this.distributionOrdering[level] = [];\n this.distributionOrderingPresence[level] = {};\n }\n\n if (this.distributionOrderingPresence[level][node.id] === undefined) {\n this.distributionOrdering[level].push(node);\n this.distributionIndex[node.id] = this.distributionOrdering[level].length - 1;\n }\n this.distributionOrderingPresence[level][node.id] = true;\n }\n\n if (this.options.hierarchical.direction === 'UD' || this.options.hierarchical.direction === 'DU') {\n node.x = position;\n }\n else {\n node.y = position;\n }\n }\n\n /**\n * Abstract the getting of the position of a node so we do not have to repeat the direction check all the time.\n * @param node\n * @returns {number|*}\n * @private\n */\n _getPositionForHierarchy(node) {\n if (this.options.hierarchical.direction === 'UD' || this.options.hierarchical.direction === 'DU') {\n return node.x;\n }\n else {\n return node.y;\n }\n }\n\n /**\n * Use the x or y value to sort the array, allowing users to specify order.\n * @param nodeArray\n * @private\n */\n _sortNodeArray(nodeArray) {\n if (nodeArray.length > 1) {\n if (this.options.hierarchical.direction === 'UD' || this.options.hierarchical.direction === 'DU') {\n nodeArray.sort(function (a, b) {\n return a.x - b.x;\n })\n }\n else {\n nodeArray.sort(function (a, b) {\n return a.y - b.y;\n })\n }\n }\n }\n\n\n\n}\n\nexport default LayoutEngine;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/LayoutEngine.js","\nlet util = require('../../util');\nlet Hammer = require('../../module/hammer');\nlet hammerUtil = require('../../hammerUtil');\n\n/**\n * clears the toolbar div element of children\n *\n * @private\n */\nclass ManipulationSystem {\n constructor(body, canvas, selectionHandler) {\n this.body = body;\n this.canvas = canvas;\n this.selectionHandler = selectionHandler;\n\n this.editMode = false;\n this.manipulationDiv = undefined;\n this.editModeDiv = undefined;\n this.closeDiv = undefined;\n\n this.manipulationHammers = [];\n this.temporaryUIFunctions = {};\n this.temporaryEventFunctions = [];\n\n this.touchTime = 0;\n this.temporaryIds = {nodes: [], edges:[]};\n this.guiEnabled = false;\n this.inMode = false;\n this.selectedControlNode = undefined;\n\n this.options = {};\n this.defaultOptions = {\n enabled: false,\n initiallyActive: false,\n addNode: true,\n addEdge: true,\n editNode: undefined,\n editEdge: true,\n deleteNode: true,\n deleteEdge: true,\n controlNodeStyle:{\n shape:'dot',\n size:6,\n color: {background: '#ff0000', border: '#3c3c3c', highlight: {background: '#07f968', border: '#3c3c3c'}},\n borderWidth: 2,\n borderWidthSelected: 2\n }\n };\n util.extend(this.options, this.defaultOptions);\n\n this.body.emitter.on('destroy', () => {this._clean();});\n this.body.emitter.on('_dataChanged',this._restore.bind(this));\n this.body.emitter.on('_resetData', this._restore.bind(this));\n }\n\n\n /**\n * If something changes in the data during editing, switch back to the initial datamanipulation state and close all edit modes.\n * @private\n */\n _restore() {\n if (this.inMode !== false) {\n if (this.options.initiallyActive === true) {\n this.enableEditMode();\n }\n else {\n this.disableEditMode();\n }\n }\n }\n\n /**\n * Set the Options\n * @param options\n */\n setOptions(options, allOptions, globalOptions) {\n if (allOptions !== undefined) {\n if (allOptions.locale !== undefined) {this.options.locale = allOptions.locale} else {this.options.locale = globalOptions.locale;}\n if (allOptions.locales !== undefined) {this.options.locales = allOptions.locales} else {this.options.locales = globalOptions.locales;}\n }\n\n if (options !== undefined) {\n if (typeof options === 'boolean') {\n this.options.enabled = options;\n }\n else {\n this.options.enabled = true;\n util.deepExtend(this.options, options);\n }\n if (this.options.initiallyActive === true) {\n this.editMode = true;\n }\n this._setup();\n }\n }\n\n\n /**\n * Enable or disable edit-mode. Draws the DOM required and cleans up after itself.\n *\n * @private\n */\n toggleEditMode() {\n if (this.editMode === true) {\n this.disableEditMode();\n }\n else {\n this.enableEditMode();\n }\n }\n\n\n enableEditMode() {\n this.editMode = true;\n\n this._clean();\n if (this.guiEnabled === true) {\n this.manipulationDiv.style.display = 'block';\n this.closeDiv.style.display = 'block';\n this.editModeDiv.style.display = 'none';\n this.showManipulatorToolbar();\n }\n }\n\n disableEditMode() {\n this.editMode = false;\n\n this._clean();\n if (this.guiEnabled === true) {\n this.manipulationDiv.style.display = 'none';\n this.closeDiv.style.display = 'none';\n this.editModeDiv.style.display = 'block';\n this._createEditButton();\n }\n }\n\n /**\n * Creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar.\n *\n * @private\n */\n showManipulatorToolbar() {\n // restore the state of any bound functions or events, remove control nodes, restore physics\n this._clean();\n\n // reset global variables\n this.manipulationDOM = {};\n\n // if the gui is enabled, draw all elements.\n if (this.guiEnabled === true) {\n // a _restore will hide these menus\n this.editMode = true;\n this.manipulationDiv.style.display = 'block';\n this.closeDiv.style.display = 'block';\n\n let selectedNodeCount = this.selectionHandler._getSelectedNodeCount();\n let selectedEdgeCount = this.selectionHandler._getSelectedEdgeCount();\n let selectedTotalCount = selectedNodeCount + selectedEdgeCount;\n let locale = this.options.locales[this.options.locale];\n let needSeperator = false;\n\n\n if (this.options.addNode !== false) {\n this._createAddNodeButton(locale);\n needSeperator = true;\n }\n if (this.options.addEdge !== false) {\n if (needSeperator === true) {\n this._createSeperator(1);\n } else {\n needSeperator = true;\n }\n this._createAddEdgeButton(locale);\n }\n\n if (selectedNodeCount === 1 && typeof this.options.editNode === 'function') {\n if (needSeperator === true) {\n this._createSeperator(2);\n } else {\n needSeperator = true;\n }\n this._createEditNodeButton(locale);\n }\n else if (selectedEdgeCount === 1 && selectedNodeCount === 0 && this.options.editEdge !== false) {\n if (needSeperator === true) {\n this._createSeperator(3);\n } else {\n needSeperator = true;\n }\n this._createEditEdgeButton(locale);\n }\n\n // remove buttons\n if (selectedTotalCount !== 0) {\n if (selectedNodeCount > 0 && this.options.deleteNode !== false) {\n if (needSeperator === true) {\n this._createSeperator(4);\n }\n this._createDeleteButton(locale);\n }\n else if (selectedNodeCount === 0 && this.options.deleteEdge !== false) {\n if (needSeperator === true) {\n this._createSeperator(4);\n }\n this._createDeleteButton(locale);\n }\n }\n\n // bind the close button\n this._bindHammerToDiv(this.closeDiv, this.toggleEditMode.bind(this));\n\n // refresh this bar based on what has been selected\n this._temporaryBindEvent('select', this.showManipulatorToolbar.bind(this));\n }\n\n // redraw to show any possible changes\n this.body.emitter.emit('_redraw');\n\n }\n\n\n /**\n * Create the toolbar for adding Nodes\n */\n addNodeMode() {\n // when using the gui, enable edit mode if it wasnt already.\n if (this.editMode !== true) {\n this.enableEditMode();\n }\n\n // restore the state of any bound functions or events, remove control nodes, restore physics\n this._clean();\n\n this.inMode = 'addNode';\n if (this.guiEnabled === true) {\n let locale = this.options.locales[this.options.locale];\n this.manipulationDOM = {};\n this._createBackButton(locale);\n this._createSeperator();\n this._createDescription(locale['addDescription'] || this.options.locales['en']['addDescription']);\n\n // bind the close button\n this._bindHammerToDiv(this.closeDiv, this.toggleEditMode.bind(this));\n }\n\n this._temporaryBindEvent('click', this._performAddNode.bind(this));\n }\n\n /**\n * call the bound function to handle the editing of the node. The node has to be selected.\n */\n editNode() {\n // when using the gui, enable edit mode if it wasnt already.\n if (this.editMode !== true) {\n this.enableEditMode();\n }\n\n // restore the state of any bound functions or events, remove control nodes, restore physics\n this._clean();\n let node = this.selectionHandler._getSelectedNode();\n if (node !== undefined) {\n this.inMode = 'editNode';\n if (typeof this.options.editNode === 'function') {\n if (node.isCluster !== true) {\n let data = util.deepExtend({}, node.options, false);\n data.x = node.x;\n data.y = node.y;\n\n if (this.options.editNode.length === 2) {\n this.options.editNode(data, (finalizedData) => {\n if (finalizedData !== null && finalizedData !== undefined && this.inMode === 'editNode') { // if for whatever reason the mode has changes (due to dataset change) disregard the callback) {\n this.body.data.nodes.getDataSet().update(finalizedData);\n }\n this.showManipulatorToolbar();\n });\n }\n else {\n throw new Error('The function for edit does not support two arguments (data, callback)');\n }\n }\n else {\n alert(this.options.locales[this.options.locale]['editClusterError'] || this.options.locales['en']['editClusterError']);\n }\n }\n else {\n throw new Error('No function has been configured to handle the editing of nodes.');\n }\n }\n else {\n this.showManipulatorToolbar();\n }\n }\n\n\n /**\n * create the toolbar to connect nodes\n */\n addEdgeMode() {\n // when using the gui, enable edit mode if it wasnt already.\n if (this.editMode !== true) {\n this.enableEditMode();\n }\n\n // restore the state of any bound functions or events, remove control nodes, restore physics\n this._clean();\n\n this.inMode = 'addEdge';\n if (this.guiEnabled === true) {\n let locale = this.options.locales[this.options.locale];\n this.manipulationDOM = {};\n this._createBackButton(locale);\n this._createSeperator();\n this._createDescription(locale['edgeDescription'] || this.options.locales['en']['edgeDescription']);\n\n // bind the close button\n this._bindHammerToDiv(this.closeDiv, this.toggleEditMode.bind(this));\n }\n\n // temporarily overload functions\n this._temporaryBindUI('onTouch', this._handleConnect.bind(this));\n this._temporaryBindUI('onDragEnd', this._finishConnect.bind(this));\n this._temporaryBindUI('onDrag', this._dragControlNode.bind(this));\n this._temporaryBindUI('onRelease', this._finishConnect.bind(this));\n\n this._temporaryBindUI('onDragStart', () => {});\n this._temporaryBindUI('onHold', () => {});\n }\n\n /**\n * create the toolbar to edit edges\n */\n editEdgeMode() {\n // when using the gui, enable edit mode if it wasn't already.\n if (this.editMode !== true) {\n this.enableEditMode();\n }\n\n // restore the state of any bound functions or events, remove control nodes, restore physics\n this._clean();\n\n this.inMode = 'editEdge';\n if (typeof this.options.editEdge === 'object' && typeof this.options.editEdge.editWithoutDrag === \"function\") {\n this.edgeBeingEditedId = this.selectionHandler.getSelectedEdges()[0];\n if (this.edgeBeingEditedId !== undefined) {\n var edge = this.body.edges[this.edgeBeingEditedId];\n this._performEditEdge(edge.from, edge.to);\n return;\n }\n }\n if (this.guiEnabled === true) {\n let locale = this.options.locales[this.options.locale];\n this.manipulationDOM = {};\n this._createBackButton(locale);\n this._createSeperator();\n this._createDescription(locale['editEdgeDescription'] || this.options.locales['en']['editEdgeDescription']);\n\n // bind the close button\n this._bindHammerToDiv(this.closeDiv, this.toggleEditMode.bind(this));\n }\n\n this.edgeBeingEditedId = this.selectionHandler.getSelectedEdges()[0];\n if (this.edgeBeingEditedId !== undefined) {\n let edge = this.body.edges[this.edgeBeingEditedId];\n\n // create control nodes\n let controlNodeFrom = this._getNewTargetNode(edge.from.x, edge.from.y);\n let controlNodeTo = this._getNewTargetNode(edge.to.x, edge.to.y);\n\n this.temporaryIds.nodes.push(controlNodeFrom.id);\n this.temporaryIds.nodes.push(controlNodeTo.id);\n\n this.body.nodes[controlNodeFrom.id] = controlNodeFrom;\n this.body.nodeIndices.push(controlNodeFrom.id);\n this.body.nodes[controlNodeTo.id] = controlNodeTo;\n this.body.nodeIndices.push(controlNodeTo.id);\n\n // temporarily overload UI functions, cleaned up automatically because of _temporaryBindUI\n this._temporaryBindUI('onTouch', this._controlNodeTouch.bind(this)); // used to get the position\n this._temporaryBindUI('onTap', () => {}); // disabled\n this._temporaryBindUI('onHold', () => {}); // disabled\n this._temporaryBindUI('onDragStart', this._controlNodeDragStart.bind(this));// used to select control node\n this._temporaryBindUI('onDrag', this._controlNodeDrag.bind(this)); // used to drag control node\n this._temporaryBindUI('onDragEnd', this._controlNodeDragEnd.bind(this)); // used to connect or revert control nodes\n this._temporaryBindUI('onMouseMove', () => {}); // disabled\n\n // create function to position control nodes correctly on movement\n // automatically cleaned up because we use the temporary bind\n this._temporaryBindEvent('beforeDrawing', (ctx) => {\n let positions = edge.edgeType.findBorderPositions(ctx);\n if (controlNodeFrom.selected === false) {\n controlNodeFrom.x = positions.from.x;\n controlNodeFrom.y = positions.from.y;\n }\n if (controlNodeTo.selected === false) {\n controlNodeTo.x = positions.to.x;\n controlNodeTo.y = positions.to.y;\n }\n });\n\n this.body.emitter.emit('_redraw');\n }\n else {\n this.showManipulatorToolbar();\n }\n }\n\n /**\n * delete everything in the selection\n */\n deleteSelected() {\n // when using the gui, enable edit mode if it wasnt already.\n if (this.editMode !== true) {\n this.enableEditMode();\n }\n\n // restore the state of any bound functions or events, remove control nodes, restore physics\n this._clean();\n\n this.inMode = 'delete';\n let selectedNodes = this.selectionHandler.getSelectedNodes();\n let selectedEdges = this.selectionHandler.getSelectedEdges();\n let deleteFunction = undefined;\n if (selectedNodes.length > 0) {\n for (let i = 0; i < selectedNodes.length; i++) {\n if (this.body.nodes[selectedNodes[i]].isCluster === true) {\n alert(this.options.locales[this.options.locale]['deleteClusterError'] || this.options.locales['en']['deleteClusterError']);\n return;\n }\n }\n\n if (typeof this.options.deleteNode === 'function') {\n deleteFunction = this.options.deleteNode;\n }\n }\n else if (selectedEdges.length > 0) {\n if (typeof this.options.deleteEdge === 'function') {\n deleteFunction = this.options.deleteEdge;\n }\n }\n\n if (typeof deleteFunction === 'function') {\n let data = {nodes: selectedNodes, edges: selectedEdges};\n if (deleteFunction.length === 2) {\n deleteFunction(data, (finalizedData) => {\n if (finalizedData !== null && finalizedData !== undefined && this.inMode === 'delete') { // if for whatever reason the mode has changes (due to dataset change) disregard the callback) {\n this.body.data.edges.getDataSet().remove(finalizedData.edges);\n this.body.data.nodes.getDataSet().remove(finalizedData.nodes);\n this.body.emitter.emit('startSimulation');\n this.showManipulatorToolbar();\n }\n else {\n this.body.emitter.emit('startSimulation');\n this.showManipulatorToolbar();\n }\n });\n }\n else {\n throw new Error('The function for delete does not support two arguments (data, callback)')\n }\n }\n else {\n this.body.data.edges.getDataSet().remove(selectedEdges);\n this.body.data.nodes.getDataSet().remove(selectedNodes);\n this.body.emitter.emit('startSimulation');\n this.showManipulatorToolbar();\n }\n }\n\n\n\n\n //********************************************** PRIVATE ***************************************//\n\n /**\n * draw or remove the DOM\n * @private\n */\n _setup() {\n if (this.options.enabled === true) {\n // Enable the GUI\n this.guiEnabled = true;\n\n this._createWrappers();\n if (this.editMode === false) {\n this._createEditButton();\n }\n else {\n this.showManipulatorToolbar();\n }\n }\n else {\n this._removeManipulationDOM();\n\n // disable the gui\n this.guiEnabled = false;\n }\n }\n\n\n /**\n * create the div overlays that contain the DOM\n * @private\n */\n _createWrappers() {\n // load the manipulator HTML elements. All styling done in css.\n if (this.manipulationDiv === undefined) {\n this.manipulationDiv = document.createElement('div');\n this.manipulationDiv.className = 'vis-manipulation';\n if (this.editMode === true) {\n this.manipulationDiv.style.display = 'block';\n }\n else {\n this.manipulationDiv.style.display = 'none';\n }\n this.canvas.frame.appendChild(this.manipulationDiv);\n }\n\n // container for the edit button.\n if (this.editModeDiv === undefined) {\n this.editModeDiv = document.createElement('div');\n this.editModeDiv.className = 'vis-edit-mode';\n if (this.editMode === true) {\n this.editModeDiv.style.display = 'none';\n }\n else {\n this.editModeDiv.style.display = 'block';\n }\n this.canvas.frame.appendChild(this.editModeDiv);\n }\n\n\n // container for the close div button\n if (this.closeDiv === undefined) {\n this.closeDiv = document.createElement('div');\n this.closeDiv.className = 'vis-close';\n this.closeDiv.style.display = this.manipulationDiv.style.display;\n this.canvas.frame.appendChild(this.closeDiv);\n }\n }\n\n\n /**\n * generate a new target node. Used for creating new edges and editing edges\n * @param x\n * @param y\n * @returns {*}\n * @private\n */\n _getNewTargetNode(x,y) {\n let controlNodeStyle = util.deepExtend({}, this.options.controlNodeStyle);\n\n controlNodeStyle.id = 'targetNode' + util.randomUUID();\n controlNodeStyle.hidden = false;\n controlNodeStyle.physics = false;\n controlNodeStyle.x = x;\n controlNodeStyle.y = y;\n\n // we have to define the bounding box in order for the nodes to be drawn immediately\n let node = this.body.functions.createNode(controlNodeStyle);\n node.shape.boundingBox = {left: x, right:x, top:y, bottom:y};\n\n return node;\n }\n\n\n /**\n * Create the edit button\n */\n _createEditButton() {\n // restore everything to it's original state (if applicable)\n this._clean();\n\n // reset the manipulationDOM\n this.manipulationDOM = {};\n\n // empty the editModeDiv\n util.recursiveDOMDelete(this.editModeDiv);\n\n\n // create the contents for the editMode button\n let locale = this.options.locales[this.options.locale];\n let button = this._createButton('editMode', 'vis-button vis-edit vis-edit-mode', locale['edit'] || this.options.locales['en']['edit']);\n this.editModeDiv.appendChild(button);\n\n // bind a hammer listener to the button, calling the function toggleEditMode.\n this._bindHammerToDiv(button, this.toggleEditMode.bind(this));\n }\n\n\n /**\n * this function cleans up after everything this module does. Temporary elements, functions and events are removed, physics restored, hammers removed.\n * @private\n */\n _clean() {\n // not in mode\n this.inMode = false;\n\n // _clean the divs\n if (this.guiEnabled === true) {\n util.recursiveDOMDelete(this.editModeDiv);\n util.recursiveDOMDelete(this.manipulationDiv);\n\n // removes all the bindings and overloads\n this._cleanManipulatorHammers();\n }\n\n // remove temporary nodes and edges\n this._cleanupTemporaryNodesAndEdges();\n\n // restore overloaded UI functions\n this._unbindTemporaryUIs();\n\n // remove the temporaryEventFunctions\n this._unbindTemporaryEvents();\n\n // restore the physics if required\n this.body.emitter.emit('restorePhysics');\n }\n\n\n /**\n * Each dom element has it's own hammer. They are stored in this.manipulationHammers. This cleans them up.\n * @private\n */\n _cleanManipulatorHammers() {\n // _clean hammer bindings\n if (this.manipulationHammers.length != 0) {\n for (let i = 0; i < this.manipulationHammers.length; i++) {\n this.manipulationHammers[i].destroy();\n }\n this.manipulationHammers = [];\n }\n }\n\n\n /**\n * Remove all DOM elements created by this module.\n * @private\n */\n _removeManipulationDOM() {\n // removes all the bindings and overloads\n this._clean();\n\n // empty the manipulation divs\n util.recursiveDOMDelete(this.manipulationDiv);\n util.recursiveDOMDelete(this.editModeDiv);\n util.recursiveDOMDelete(this.closeDiv);\n\n // remove the manipulation divs\n if (this.manipulationDiv) {this.canvas.frame.removeChild(this.manipulationDiv);}\n if (this.editModeDiv) {this.canvas.frame.removeChild(this.editModeDiv);}\n if (this.closeDiv) {this.canvas.frame.removeChild(this.closeDiv);}\n\n // set the references to undefined\n this.manipulationDiv = undefined;\n this.editModeDiv = undefined;\n this.closeDiv = undefined;\n }\n\n\n /**\n * create a seperator line. the index is to differentiate in the manipulation dom\n * @param index\n * @private\n */\n _createSeperator(index = 1) {\n this.manipulationDOM['seperatorLineDiv' + index] = document.createElement('div');\n this.manipulationDOM['seperatorLineDiv' + index].className = 'vis-separator-line';\n this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv' + index]);\n }\n\n // ---------------------- DOM functions for buttons --------------------------//\n\n _createAddNodeButton(locale) {\n let button = this._createButton('addNode', 'vis-button vis-add', locale['addNode'] || this.options.locales['en']['addNode']);\n this.manipulationDiv.appendChild(button);\n this._bindHammerToDiv(button, this.addNodeMode.bind(this));\n }\n\n _createAddEdgeButton(locale) {\n let button = this._createButton('addEdge', 'vis-button vis-connect', locale['addEdge'] || this.options.locales['en']['addEdge']);\n this.manipulationDiv.appendChild(button);\n this._bindHammerToDiv(button, this.addEdgeMode.bind(this));\n }\n\n _createEditNodeButton(locale) {\n let button = this._createButton('editNode', 'vis-button vis-edit', locale['editNode'] || this.options.locales['en']['editNode']);\n this.manipulationDiv.appendChild(button);\n this._bindHammerToDiv(button, this.editNode.bind(this));\n }\n\n _createEditEdgeButton(locale) {\n let button = this._createButton('editEdge', 'vis-button vis-edit', locale['editEdge'] || this.options.locales['en']['editEdge']);\n this.manipulationDiv.appendChild(button);\n this._bindHammerToDiv(button, this.editEdgeMode.bind(this));\n }\n\n _createDeleteButton(locale) {\n if (this.options.rtl) {\n var deleteBtnClass = 'vis-button vis-delete-rtl';\n } else {\n var deleteBtnClass = 'vis-button vis-delete';\n }\n let button = this._createButton('delete', deleteBtnClass, locale['del'] || this.options.locales['en']['del']);\n this.manipulationDiv.appendChild(button);\n this._bindHammerToDiv(button, this.deleteSelected.bind(this));\n }\n\n _createBackButton(locale) {\n let button = this._createButton('back', 'vis-button vis-back', locale['back'] || this.options.locales['en']['back']);\n this.manipulationDiv.appendChild(button);\n this._bindHammerToDiv(button, this.showManipulatorToolbar.bind(this));\n }\n\n _createButton(id, className, label, labelClassName = 'vis-label') {\n\n this.manipulationDOM[id+'Div'] = document.createElement('div');\n this.manipulationDOM[id+'Div'].className = className;\n this.manipulationDOM[id+'Label'] = document.createElement('div');\n this.manipulationDOM[id+'Label'].className = labelClassName;\n this.manipulationDOM[id+'Label'].innerHTML = label;\n this.manipulationDOM[id+'Div'].appendChild(this.manipulationDOM[id+'Label']);\n return this.manipulationDOM[id+'Div'];\n }\n\n _createDescription(label) {\n this.manipulationDiv.appendChild(\n this._createButton('description', 'vis-button vis-none', label)\n );\n }\n\n // -------------------------- End of DOM functions for buttons ------------------------------//\n\n /**\n * this binds an event until cleanup by the clean functions.\n * @param event\n * @param newFunction\n * @private\n */\n _temporaryBindEvent(event, newFunction) {\n this.temporaryEventFunctions.push({event:event, boundFunction:newFunction});\n this.body.emitter.on(event, newFunction);\n }\n\n /**\n * this overrides an UI function until cleanup by the clean function\n * @param UIfunctionName\n * @param newFunction\n * @private\n */\n _temporaryBindUI(UIfunctionName, newFunction) {\n if (this.body.eventListeners[UIfunctionName] !== undefined) {\n this.temporaryUIFunctions[UIfunctionName] = this.body.eventListeners[UIfunctionName];\n this.body.eventListeners[UIfunctionName] = newFunction;\n }\n else {\n throw new Error('This UI function does not exist. Typo? You tried: ' + UIfunctionName + ' possible are: ' + JSON.stringify(Object.keys(this.body.eventListeners)));\n }\n }\n\n /**\n * Restore the overridden UI functions to their original state.\n *\n * @private\n */\n _unbindTemporaryUIs() {\n for (let functionName in this.temporaryUIFunctions) {\n if (this.temporaryUIFunctions.hasOwnProperty(functionName)) {\n this.body.eventListeners[functionName] = this.temporaryUIFunctions[functionName];\n delete this.temporaryUIFunctions[functionName];\n }\n }\n this.temporaryUIFunctions = {};\n }\n\n /**\n * Unbind the events created by _temporaryBindEvent\n * @private\n */\n _unbindTemporaryEvents() {\n for (let i = 0; i < this.temporaryEventFunctions.length; i++) {\n let eventName = this.temporaryEventFunctions[i].event;\n let boundFunction = this.temporaryEventFunctions[i].boundFunction;\n this.body.emitter.off(eventName, boundFunction);\n }\n this.temporaryEventFunctions = [];\n }\n\n /**\n * Bind an hammer instance to a DOM element.\n * @param domElement\n * @param funct\n */\n _bindHammerToDiv(domElement, boundFunction) {\n let hammer = new Hammer(domElement, {});\n hammerUtil.onTouch(hammer, boundFunction);\n this.manipulationHammers.push(hammer);\n }\n\n\n /**\n * Neatly clean up temporary edges and nodes\n * @private\n */\n _cleanupTemporaryNodesAndEdges() {\n // _clean temporary edges\n for (let i = 0; i < this.temporaryIds.edges.length; i++) {\n this.body.edges[this.temporaryIds.edges[i]].disconnect();\n delete this.body.edges[this.temporaryIds.edges[i]];\n let indexTempEdge = this.body.edgeIndices.indexOf(this.temporaryIds.edges[i]);\n if (indexTempEdge !== -1) {this.body.edgeIndices.splice(indexTempEdge,1);}\n }\n\n // _clean temporary nodes\n for (let i = 0; i < this.temporaryIds.nodes.length; i++) {\n delete this.body.nodes[this.temporaryIds.nodes[i]];\n let indexTempNode = this.body.nodeIndices.indexOf(this.temporaryIds.nodes[i]);\n if (indexTempNode !== -1) {this.body.nodeIndices.splice(indexTempNode,1);}\n }\n\n this.temporaryIds = {nodes: [], edges: []};\n }\n\n // ------------------------------------------ EDIT EDGE FUNCTIONS -----------------------------------------//\n\n /**\n * the touch is used to get the position of the initial click\n * @param event\n * @private\n */\n _controlNodeTouch(event) {\n this.selectionHandler.unselectAll();\n this.lastTouch = this.body.functions.getPointer(event.center);\n this.lastTouch.translation = util.extend({},this.body.view.translation); // copy the object\n }\n\n\n /**\n * the drag start is used to mark one of the control nodes as selected.\n * @param event\n * @private\n */\n _controlNodeDragStart(event) {\n let pointer = this.lastTouch;\n let pointerObj = this.selectionHandler._pointerToPositionObject(pointer);\n let from = this.body.nodes[this.temporaryIds.nodes[0]];\n let to = this.body.nodes[this.temporaryIds.nodes[1]];\n let edge = this.body.edges[this.edgeBeingEditedId];\n this.selectedControlNode = undefined;\n\n let fromSelect = from.isOverlappingWith(pointerObj);\n let toSelect = to.isOverlappingWith(pointerObj);\n\n if (fromSelect === true) {\n this.selectedControlNode = from;\n edge.edgeType.from = from;\n }\n else if (toSelect === true) {\n this.selectedControlNode = to;\n edge.edgeType.to = to;\n }\n\n // we use the selection to find the node that is being dragged. We explicitly select it here.\n if (this.selectedControlNode !== undefined) {\n this.selectionHandler.selectObject(this.selectedControlNode)\n }\n\n this.body.emitter.emit('_redraw');\n }\n\n /**\n * dragging the control nodes or the canvas\n * @param event\n * @private\n */\n _controlNodeDrag(event) {\n this.body.emitter.emit('disablePhysics');\n let pointer = this.body.functions.getPointer(event.center);\n let pos = this.canvas.DOMtoCanvas(pointer);\n if (this.selectedControlNode !== undefined) {\n this.selectedControlNode.x = pos.x;\n this.selectedControlNode.y = pos.y;\n }\n else {\n // if the drag was not started properly because the click started outside the network div, start it now.\n let diffX = pointer.x - this.lastTouch.x;\n let diffY = pointer.y - this.lastTouch.y;\n this.body.view.translation = {x:this.lastTouch.translation.x + diffX, y:this.lastTouch.translation.y + diffY};\n }\n this.body.emitter.emit('_redraw');\n }\n\n\n /**\n * connecting or restoring the control nodes.\n * @param event\n * @private\n */\n _controlNodeDragEnd(event) {\n let pointer = this.body.functions.getPointer(event.center);\n let pointerObj = this.selectionHandler._pointerToPositionObject(pointer);\n let edge = this.body.edges[this.edgeBeingEditedId];\n // if the node that was dragged is not a control node, return\n if (this.selectedControlNode === undefined) {\n return;\n }\n\n // we use the selection to find the node that is being dragged. We explicitly DEselect the control node here.\n this.selectionHandler.unselectAll();\n let overlappingNodeIds = this.selectionHandler._getAllNodesOverlappingWith(pointerObj);\n let node = undefined;\n for (let i = overlappingNodeIds.length-1; i >= 0; i--) {\n if (overlappingNodeIds[i] !== this.selectedControlNode.id) {\n node = this.body.nodes[overlappingNodeIds[i]];\n break;\n }\n }\n // perform the connection\n if (node !== undefined && this.selectedControlNode !== undefined) {\n if (node.isCluster === true) {\n alert(this.options.locales[this.options.locale]['createEdgeError'] || this.options.locales['en']['createEdgeError'])\n }\n else {\n let from = this.body.nodes[this.temporaryIds.nodes[0]];\n if (this.selectedControlNode.id === from.id) {\n this._performEditEdge(node.id, edge.to.id);\n }\n else {\n this._performEditEdge(edge.from.id, node.id);\n }\n }\n }\n else {\n edge.updateEdgeType();\n this.body.emitter.emit('restorePhysics');\n }\n this.body.emitter.emit('_redraw');\n }\n\n // ------------------------------------ END OF EDIT EDGE FUNCTIONS -----------------------------------------//\n\n\n\n // ------------------------------------------- ADD EDGE FUNCTIONS -----------------------------------------//\n /**\n * the function bound to the selection event. It checks if you want to connect a cluster and changes the description\n * to walk the user through the process.\n *\n * @private\n */\n _handleConnect(event) {\n // check to avoid double fireing of this function.\n if (new Date().valueOf() - this.touchTime > 100) {\n this.lastTouch = this.body.functions.getPointer(event.center);\n this.lastTouch.translation = util.extend({},this.body.view.translation); // copy the object\n\n let pointer = this.lastTouch;\n let node = this.selectionHandler.getNodeAt(pointer);\n\n if (node !== undefined) {\n if (node.isCluster === true) {\n alert(this.options.locales[this.options.locale]['createEdgeError'] || this.options.locales['en']['createEdgeError'])\n }\n else {\n // create a node the temporary line can look at\n let targetNode = this._getNewTargetNode(node.x,node.y);\n this.body.nodes[targetNode.id] = targetNode;\n this.body.nodeIndices.push(targetNode.id);\n\n // create a temporary edge\n let connectionEdge = this.body.functions.createEdge({\n id: 'connectionEdge' + util.randomUUID(),\n from: node.id,\n to: targetNode.id,\n physics: false,\n smooth: {\n enabled: true,\n type: 'continuous',\n roundness: 0.5\n }\n });\n this.body.edges[connectionEdge.id] = connectionEdge;\n this.body.edgeIndices.push(connectionEdge.id);\n\n this.temporaryIds.nodes.push(targetNode.id);\n this.temporaryIds.edges.push(connectionEdge.id);\n }\n }\n this.touchTime = new Date().valueOf();\n }\n }\n\n _dragControlNode(event) {\n let pointer = this.body.functions.getPointer(event.center);\n if (this.temporaryIds.nodes[0] !== undefined) {\n let targetNode = this.body.nodes[this.temporaryIds.nodes[0]]; // there is only one temp node in the add edge mode.\n targetNode.x = this.canvas._XconvertDOMtoCanvas(pointer.x);\n targetNode.y = this.canvas._YconvertDOMtoCanvas(pointer.y);\n this.body.emitter.emit('_redraw');\n }\n else {\n let diffX = pointer.x - this.lastTouch.x;\n let diffY = pointer.y - this.lastTouch.y;\n this.body.view.translation = {x:this.lastTouch.translation.x + diffX, y:this.lastTouch.translation.y + diffY};\n }\n\n }\n\n\n /**\n * Connect the new edge to the target if one exists, otherwise remove temp line\n * @param event\n * @private\n */\n _finishConnect(event) {\n let pointer = this.body.functions.getPointer(event.center);\n let pointerObj = this.selectionHandler._pointerToPositionObject(pointer);\n\n // remember the edge id\n let connectFromId = undefined;\n if (this.temporaryIds.edges[0] !== undefined) {\n connectFromId = this.body.edges[this.temporaryIds.edges[0]].fromId;\n }\n\n // get the overlapping node but NOT the temporary node;\n let overlappingNodeIds = this.selectionHandler._getAllNodesOverlappingWith(pointerObj);\n let node = undefined;\n for (let i = overlappingNodeIds.length-1; i >= 0; i--) {\n // if the node id is NOT a temporary node, accept the node.\n if (this.temporaryIds.nodes.indexOf(overlappingNodeIds[i]) === -1) {\n node = this.body.nodes[overlappingNodeIds[i]];\n break;\n }\n }\n\n // clean temporary nodes and edges.\n this._cleanupTemporaryNodesAndEdges();\n\n // perform the connection\n if (node !== undefined) {\n if (node.isCluster === true) {\n alert(this.options.locales[this.options.locale]['createEdgeError'] || this.options.locales['en']['createEdgeError']);\n }\n else {\n if (this.body.nodes[connectFromId] !== undefined && this.body.nodes[node.id] !== undefined) {\n this._performAddEdge(connectFromId, node.id);\n }\n }\n }\n this.body.emitter.emit('_redraw');\n }\n\n // --------------------------------------- END OF ADD EDGE FUNCTIONS -------------------------------------//\n\n\n // ------------------------------ Performing all the actual data manipulation ------------------------//\n\n /**\n * Adds a node on the specified location\n */\n _performAddNode(clickData) {\n let defaultData = {\n id: util.randomUUID(),\n x: clickData.pointer.canvas.x,\n y: clickData.pointer.canvas.y,\n label: 'new'\n };\n\n if (typeof this.options.addNode === 'function') {\n if (this.options.addNode.length === 2) {\n this.options.addNode(defaultData, (finalizedData) => {\n if (finalizedData !== null && finalizedData !== undefined && this.inMode === 'addNode') { // if for whatever reason the mode has changes (due to dataset change) disregard the callback\n this.body.data.nodes.getDataSet().add(finalizedData);\n this.showManipulatorToolbar();\n }\n });\n }\n else {\n throw new Error('The function for add does not support two arguments (data,callback)');\n this.showManipulatorToolbar();\n }\n }\n else {\n this.body.data.nodes.getDataSet().add(defaultData);\n this.showManipulatorToolbar();\n }\n }\n\n\n /**\n * connect two nodes with a new edge.\n *\n * @private\n */\n _performAddEdge(sourceNodeId, targetNodeId) {\n let defaultData = {from: sourceNodeId, to: targetNodeId};\n if (typeof this.options.addEdge === 'function') {\n if (this.options.addEdge.length === 2) {\n this.options.addEdge(defaultData, (finalizedData) => {\n if (finalizedData !== null && finalizedData !== undefined && this.inMode === 'addEdge') { // if for whatever reason the mode has changes (due to dataset change) disregard the callback\n this.body.data.edges.getDataSet().add(finalizedData);\n this.selectionHandler.unselectAll();\n this.showManipulatorToolbar();\n }\n });\n }\n else {\n throw new Error('The function for connect does not support two arguments (data,callback)');\n }\n }\n else {\n this.body.data.edges.getDataSet().add(defaultData);\n this.selectionHandler.unselectAll();\n this.showManipulatorToolbar();\n }\n }\n\n /**\n * connect two nodes with a new edge.\n *\n * @private\n */\n _performEditEdge(sourceNodeId, targetNodeId) {\n let defaultData = {id: this.edgeBeingEditedId, from: sourceNodeId, to: targetNodeId, label: this.body.data.edges._data[this.edgeBeingEditedId].label };\n let eeFunct = this.options.editEdge;\n if (typeof eeFunct === 'object') {\n eeFunct = eeFunct.editWithoutDrag;\n }\n if (typeof eeFunct === 'function') {\n if (eeFunct.length === 2) {\n eeFunct(defaultData, (finalizedData) => {\n if (finalizedData === null || finalizedData === undefined || this.inMode !== 'editEdge') { // if for whatever reason the mode has changes (due to dataset change) disregard the callback) {\n this.body.edges[defaultData.id].updateEdgeType();\n this.body.emitter.emit('_redraw');\n this.showManipulatorToolbar();\n }\n else {\n this.body.data.edges.getDataSet().update(finalizedData);\n this.selectionHandler.unselectAll();\n this.showManipulatorToolbar();\n }\n });\n }\n else {\n throw new Error('The function for edit does not support two arguments (data, callback)');\n }\n }\n else {\n this.body.data.edges.getDataSet().update(defaultData);\n this.selectionHandler.unselectAll();\n this.showManipulatorToolbar();\n }\n }\n\n\n}\n\nexport default ManipulationSystem;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/ManipulationSystem.js","/**\n * This object contains all possible options. It will check if the types are correct, if required if the option is one\n * of the allowed values.\n *\n * __any__ means that the name of the property does not matter.\n * __type__ is a required field for all objects and contains the allowed types of all objects\n */\nlet string = 'string';\nlet bool = 'boolean';\nlet number = 'number';\nlet array = 'array';\nlet object = 'object'; // should only be in a __type__ property\nlet dom = 'dom';\nlet any = 'any';\n\n\nlet allOptions = {\n configure: {\n enabled: { boolean: bool },\n filter: { boolean: bool, string, array, 'function': 'function' },\n container: { dom },\n showButton: { boolean: bool },\n __type__: { object, boolean: bool, string, array, 'function': 'function' }\n },\n edges: {\n arrows: {\n to: { enabled: { boolean: bool }, scaleFactor: { number }, type: { string: ['arrow', 'circle'] }, __type__: { object, boolean: bool } },\n middle: { enabled: { boolean: bool }, scaleFactor: { number }, type: { string: ['arrow', 'circle'] }, __type__: { object, boolean: bool } },\n from: { enabled: { boolean: bool }, scaleFactor: { number }, type: { string: ['arrow', 'circle'] }, __type__: { object, boolean: bool } },\n __type__: { string: ['from', 'to', 'middle'], object }\n },\n arrowStrikethrough: { boolean: bool },\n chosen: {\n label: { boolean: bool, 'function': 'function' },\n edge: { boolean: bool, 'function': 'function' },\n __type__: { object, boolean: bool }\n },\n color: {\n color: { string },\n highlight: { string },\n hover: { string },\n inherit: { string: ['from', 'to', 'both'], boolean: bool },\n opacity: { number },\n __type__: { object, string }\n },\n dashes: { boolean: bool, array },\n font: {\n color: { string },\n size: { number }, // px\n face: { string },\n background: { string },\n strokeWidth: { number }, // px\n strokeColor: { string },\n align: { string: ['horizontal', 'top', 'middle', 'bottom'] },\n vadjust: { number },\n multi: { boolean: bool, string },\n bold: {\n color: { string },\n size: { number }, // px\n face: { string },\n mod: { string },\n vadjust: { number },\n __type__: { object, string }\n },\n boldital: {\n color: { string },\n size: { number }, // px\n face: { string },\n mod: { string },\n vadjust: { number },\n __type__: { object, string }\n },\n ital: {\n color: { string },\n size: { number }, // px\n face: { string },\n mod: { string },\n vadjust: { number },\n __type__: { object, string }\n },\n mono: {\n color: { string },\n size: { number }, // px\n face: { string },\n mod: { string },\n vadjust: { number },\n __type__: { object, string }\n },\n __type__: { object, string }\n },\n hidden: { boolean: bool },\n hoverWidth: { 'function': 'function', number },\n label: { string, 'undefined': 'undefined' },\n labelHighlightBold: { boolean: bool },\n length: { number, 'undefined': 'undefined' },\n physics: { boolean: bool },\n scaling: {\n min: { number },\n max: { number },\n label: {\n enabled: { boolean: bool },\n min: { number },\n max: { number },\n maxVisible: { number },\n drawThreshold: { number },\n __type__: { object, boolean: bool }\n },\n customScalingFunction: { 'function': 'function' },\n __type__: { object }\n },\n selectionWidth: { 'function': 'function', number },\n selfReferenceSize: { number },\n shadow: {\n enabled: { boolean: bool },\n color: { string },\n size: { number },\n x: { number },\n y: { number },\n __type__: { object, boolean: bool }\n },\n smooth: {\n enabled: { boolean: bool },\n type: { string: ['dynamic', 'continuous', 'discrete', 'diagonalCross', 'straightCross', 'horizontal', 'vertical', 'curvedCW', 'curvedCCW', 'cubicBezier'] },\n roundness: { number },\n forceDirection: { string: ['horizontal', 'vertical', 'none'], boolean: bool },\n __type__: { object, boolean: bool }\n },\n title: { string, 'undefined': 'undefined' },\n width: { number },\n widthConstraint: {\n maximum: { number },\n __type__: { object, boolean: bool, number }\n },\n value: { number, 'undefined': 'undefined' },\n __type__: { object }\n },\n groups: {\n useDefaultGroups: { boolean: bool },\n __any__: 'get from nodes, will be overwritten below',\n __type__: { object }\n },\n interaction: {\n dragNodes: { boolean: bool },\n dragView: { boolean: bool },\n hideEdgesOnDrag: { boolean: bool },\n hideNodesOnDrag: { boolean: bool },\n hover: { boolean: bool },\n keyboard: {\n enabled: { boolean: bool },\n speed: { x: { number }, y: { number }, zoom: { number }, __type__: { object } },\n bindToWindow: { boolean: bool },\n __type__: { object, boolean: bool }\n },\n multiselect: { boolean: bool },\n navigationButtons: { boolean: bool },\n selectable: { boolean: bool },\n selectConnectedEdges: { boolean: bool },\n hoverConnectedEdges: { boolean: bool },\n tooltipDelay: { number },\n zoomView: { boolean: bool },\n __type__: { object }\n },\n layout: {\n randomSeed: { 'undefined': 'undefined', number },\n improvedLayout: { boolean: bool },\n hierarchical: {\n enabled: { boolean: bool },\n levelSeparation: { number },\n nodeSpacing: { number },\n treeSpacing: { number },\n blockShifting: { boolean: bool },\n edgeMinimization: { boolean: bool },\n parentCentralization: { boolean: bool },\n direction: { string: ['UD', 'DU', 'LR', 'RL'] }, // UD, DU, LR, RL\n sortMethod: { string: ['hubsize', 'directed'] }, // hubsize, directed\n __type__: { object, boolean: bool }\n },\n __type__: { object }\n },\n manipulation: {\n enabled: { boolean: bool },\n initiallyActive: { boolean: bool },\n addNode: { boolean: bool, 'function': 'function' },\n addEdge: { boolean: bool, 'function': 'function' },\n editNode: { 'function': 'function' },\n editEdge: {\n editWithoutDrag: { 'function' : 'function' },\n __type__: {object, boolean: bool, 'function': 'function' }\n },\n deleteNode: { boolean: bool, 'function': 'function' },\n deleteEdge: { boolean: bool, 'function': 'function' },\n controlNodeStyle: 'get from nodes, will be overwritten below',\n __type__: { object, boolean: bool }\n },\n nodes: {\n borderWidth: { number },\n borderWidthSelected: { number, 'undefined': 'undefined' },\n brokenImage: { string, 'undefined': 'undefined' },\n chosen: {\n label: { boolean: bool, 'function': 'function' },\n node: { boolean: bool, 'function': 'function' },\n __type__: { object, boolean: bool }\n },\n color: {\n border: { string },\n background: { string },\n highlight: {\n border: { string },\n background: { string },\n __type__: { object, string }\n },\n hover: {\n border: { string },\n background: { string },\n __type__: { object, string }\n },\n __type__: { object, string }\n },\n fixed: {\n x: { boolean: bool },\n y: { boolean: bool },\n __type__: { object, boolean: bool }\n },\n font: {\n align: { string },\n color: { string },\n size: { number }, // px\n face: { string },\n background: { string },\n strokeWidth: { number }, // px\n strokeColor: { string },\n vadjust: { number },\n multi: { boolean: bool, string },\n bold: {\n color: { string },\n size: { number }, // px\n face: { string },\n mod: { string },\n vadjust: { number },\n __type__: { object, string }\n },\n boldital: {\n color: { string },\n size: { number }, // px\n face: { string },\n mod: { string },\n vadjust: { number },\n __type__: { object, string }\n },\n ital: {\n color: { string },\n size: { number }, // px\n face: { string },\n mod: { string },\n vadjust: { number },\n __type__: { object, string }\n },\n mono: {\n color: { string },\n size: { number }, // px\n face: { string },\n mod: { string },\n vadjust: { number },\n __type__: { object, string }\n },\n __type__: { object, string }\n },\n group: { string, number, 'undefined': 'undefined' },\n heightConstraint: {\n minimum: { number },\n valign: { string },\n __type__: { object, boolean: bool, number }\n },\n hidden: { boolean: bool },\n icon: {\n face: { string },\n code: { string }, //'\\uf007',\n size: { number }, //50,\n color: { string },\n __type__: { object }\n },\n id: { string, number },\n image: { string, 'undefined': 'undefined' }, // --> URL\n label: { string, 'undefined': 'undefined' },\n labelHighlightBold: { boolean: bool },\n level: { number, 'undefined': 'undefined' },\n margin: {\n top: { number },\n right: { number },\n bottom: { number },\n left: { number },\n __type__: { object, number }\n },\n mass: { number },\n physics: { boolean: bool },\n scaling: {\n min: { number },\n max: { number },\n label: {\n enabled: { boolean: bool },\n min: { number },\n max: { number },\n maxVisible: { number },\n drawThreshold: { number },\n __type__: { object, boolean: bool }\n },\n customScalingFunction: { 'function': 'function' },\n __type__: { object }\n },\n shadow: {\n enabled: { boolean: bool },\n color: { string },\n size: { number },\n x: { number },\n y: { number },\n __type__: { object, boolean: bool }\n },\n shape: { string: ['ellipse', 'circle', 'database', 'box', 'text', 'image', 'circularImage', 'diamond', 'dot', 'star', 'triangle', 'triangleDown', 'square', 'icon'] },\n shapeProperties: {\n borderDashes: { boolean: bool, array },\n borderRadius: { number },\n interpolation: { boolean: bool },\n useImageSize: { boolean: bool },\n useBorderWithImage: { boolean: bool },\n __type__: { object }\n },\n size: { number },\n title: { string, 'undefined': 'undefined' },\n value: { number, 'undefined': 'undefined' },\n widthConstraint: {\n minimum: { number },\n maximum: { number },\n __type__: { object, boolean: bool, number }\n },\n x: { number },\n y: { number },\n __type__: { object }\n },\n physics: {\n enabled: { boolean: bool },\n barnesHut: {\n gravitationalConstant: { number },\n centralGravity: { number },\n springLength: { number },\n springConstant: { number },\n damping: { number },\n avoidOverlap: { number },\n __type__: { object }\n },\n forceAtlas2Based: {\n gravitationalConstant: { number },\n centralGravity: { number },\n springLength: { number },\n springConstant: { number },\n damping: { number },\n avoidOverlap: { number },\n __type__: { object }\n },\n repulsion: {\n centralGravity: { number },\n springLength: { number },\n springConstant: { number },\n nodeDistance: { number },\n damping: { number },\n __type__: { object }\n },\n hierarchicalRepulsion: {\n centralGravity: { number },\n springLength: { number },\n springConstant: { number },\n nodeDistance: { number },\n damping: { number },\n __type__: { object }\n },\n maxVelocity: { number },\n minVelocity: { number }, // px/s\n solver: { string: ['barnesHut', 'repulsion', 'hierarchicalRepulsion', 'forceAtlas2Based'] },\n stabilization: {\n enabled: { boolean: bool },\n iterations: { number }, // maximum number of iteration to stabilize\n updateInterval: { number },\n onlyDynamicEdges: { boolean: bool },\n fit: { boolean: bool },\n __type__: { object, boolean: bool }\n },\n timestep: { number },\n adaptiveTimestep: { boolean: bool },\n __type__: { object, boolean: bool }\n },\n\n //globals :\n autoResize: { boolean: bool },\n clickToUse: { boolean: bool },\n locale: { string },\n locales: {\n __any__: { any },\n __type__: { object }\n },\n height: { string },\n width: { string },\n __type__: { object }\n};\n\nallOptions.groups.__any__ = allOptions.nodes;\nallOptions.manipulation.controlNodeStyle = allOptions.nodes;\n\n\nlet configureOptions = {\n nodes: {\n borderWidth: [1, 0, 10, 1],\n borderWidthSelected: [2, 0, 10, 1],\n color: {\n border: ['color', '#2B7CE9'],\n background: ['color', '#97C2FC'],\n highlight: {\n border: ['color', '#2B7CE9'],\n background: ['color', '#D2E5FF']\n },\n hover: {\n border: ['color', '#2B7CE9'],\n background: ['color', '#D2E5FF']\n }\n },\n fixed: {\n x: false,\n y: false\n },\n font: {\n color: ['color', '#343434'],\n size: [14, 0, 100, 1], // px\n face: ['arial', 'verdana', 'tahoma'],\n background: ['color', 'none'],\n strokeWidth: [0, 0, 50, 1], // px\n strokeColor: ['color', '#ffffff']\n },\n //group: 'string',\n hidden: false,\n labelHighlightBold: true,\n //icon: {\n // face: 'string', //'FontAwesome',\n // code: 'string', //'\\uf007',\n // size: [50, 0, 200, 1], //50,\n // color: ['color','#2B7CE9'] //'#aa00ff'\n //},\n //image: 'string', // --> URL\n physics: true,\n scaling: {\n min: [10, 0, 200, 1],\n max: [30, 0, 200, 1],\n label: {\n enabled: false,\n min: [14, 0, 200, 1],\n max: [30, 0, 200, 1],\n maxVisible: [30, 0, 200, 1],\n drawThreshold: [5, 0, 20, 1]\n }\n },\n shadow: {\n enabled: false,\n color: 'rgba(0,0,0,0.5)',\n size: [10, 0, 20, 1],\n x: [5, -30, 30, 1],\n y: [5, -30, 30, 1]\n },\n shape: ['ellipse', 'box', 'circle', 'database', 'diamond', 'dot', 'square', 'star', 'text', 'triangle', 'triangleDown'],\n shapeProperties: {\n borderDashes: false,\n borderRadius: [6, 0, 20, 1],\n interpolation: true,\n useImageSize: false\n },\n size: [25, 0, 200, 1]\n },\n edges: {\n arrows: {\n to: { enabled: false, scaleFactor: [1, 0, 3, 0.05], type: 'arrow' },\n middle: { enabled: false, scaleFactor: [1, 0, 3, 0.05], type: 'arrow' },\n from: { enabled: false, scaleFactor: [1, 0, 3, 0.05], type: 'arrow' }\n },\n arrowStrikethrough: true,\n color: {\n color: ['color', '#848484'],\n highlight: ['color', '#848484'],\n hover: ['color', '#848484'],\n inherit: ['from', 'to', 'both', true, false],\n opacity: [1, 0, 1, 0.05]\n },\n dashes: false,\n font: {\n color: ['color', '#343434'],\n size: [14, 0, 100, 1], // px\n face: ['arial', 'verdana', 'tahoma'],\n background: ['color', 'none'],\n strokeWidth: [2, 0, 50, 1], // px\n strokeColor: ['color', '#ffffff'],\n align: ['horizontal', 'top', 'middle', 'bottom']\n },\n hidden: false,\n hoverWidth: [1.5, 0, 5, 0.1],\n labelHighlightBold: true,\n physics: true,\n scaling: {\n min: [1, 0, 100, 1],\n max: [15, 0, 100, 1],\n label: {\n enabled: true,\n min: [14, 0, 200, 1],\n max: [30, 0, 200, 1],\n maxVisible: [30, 0, 200, 1],\n drawThreshold: [5, 0, 20, 1]\n }\n },\n selectionWidth: [1.5, 0, 5, 0.1],\n selfReferenceSize: [20, 0, 200, 1],\n shadow: {\n enabled: false,\n color: 'rgba(0,0,0,0.5)',\n size: [10, 0, 20, 1],\n x: [5, -30, 30, 1],\n y: [5, -30, 30, 1]\n },\n smooth: {\n enabled: true,\n type: ['dynamic', 'continuous', 'discrete', 'diagonalCross', 'straightCross', 'horizontal', 'vertical', 'curvedCW', 'curvedCCW', 'cubicBezier'],\n forceDirection: ['horizontal', 'vertical', 'none'],\n roundness: [0.5, 0, 1, 0.05]\n },\n width: [1, 0, 30, 1]\n },\n layout: {\n //randomSeed: [0, 0, 500, 1],\n //improvedLayout: true,\n hierarchical: {\n enabled: false,\n levelSeparation: [150, 20, 500, 5],\n nodeSpacing: [100, 20, 500, 5],\n treeSpacing: [200, 20, 500, 5],\n blockShifting: true,\n edgeMinimization: true,\n parentCentralization: true,\n direction: ['UD', 'DU', 'LR', 'RL'], // UD, DU, LR, RL\n sortMethod: ['hubsize', 'directed'] // hubsize, directed\n }\n },\n interaction: {\n dragNodes: true,\n dragView: true,\n hideEdgesOnDrag: false,\n hideNodesOnDrag: false,\n hover: false,\n keyboard: {\n enabled: false,\n speed: { x: [10, 0, 40, 1], y: [10, 0, 40, 1], zoom: [0.02, 0, 0.1, 0.005] },\n bindToWindow: true\n },\n multiselect: false,\n navigationButtons: false,\n selectable: true,\n selectConnectedEdges: true,\n hoverConnectedEdges: true,\n tooltipDelay: [300, 0, 1000, 25],\n zoomView: true\n },\n manipulation: {\n enabled: false,\n initiallyActive: false\n },\n physics: {\n enabled: true,\n barnesHut: {\n //theta: [0.5, 0.1, 1, 0.05],\n gravitationalConstant: [-2000, -30000, 0, 50],\n centralGravity: [0.3, 0, 10, 0.05],\n springLength: [95, 0, 500, 5],\n springConstant: [0.04, 0, 1.2, 0.005],\n damping: [0.09, 0, 1, 0.01],\n avoidOverlap: [0, 0, 1, 0.01]\n },\n forceAtlas2Based: {\n //theta: [0.5, 0.1, 1, 0.05],\n gravitationalConstant: [-50, -500, 0, 1],\n centralGravity: [0.01, 0, 1, 0.005],\n springLength: [95, 0, 500, 5],\n springConstant: [0.08, 0, 1.2, 0.005],\n damping: [0.4, 0, 1, 0.01],\n avoidOverlap: [0, 0, 1, 0.01]\n },\n repulsion: {\n centralGravity: [0.2, 0, 10, 0.05],\n springLength: [200, 0, 500, 5],\n springConstant: [0.05, 0, 1.2, 0.005],\n nodeDistance: [100, 0, 500, 5],\n damping: [0.09, 0, 1, 0.01]\n },\n hierarchicalRepulsion: {\n centralGravity: [0.2, 0, 10, 0.05],\n springLength: [100, 0, 500, 5],\n springConstant: [0.01, 0, 1.2, 0.005],\n nodeDistance: [120, 0, 500, 5],\n damping: [0.09, 0, 1, 0.01]\n },\n maxVelocity: [50, 0, 150, 1],\n minVelocity: [0.1, 0.01, 0.5, 0.01],\n solver: ['barnesHut', 'forceAtlas2Based', 'repulsion', 'hierarchicalRepulsion'],\n timestep: [0.5, 0.01, 1, 0.01],\n //adaptiveTimestep: true\n }\n};\n\nexport {allOptions, configureOptions};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/options.js","// distance finding algorithm\nimport FloydWarshall from \"./components/algorithms/FloydWarshall.js\"\n\n\n/**\n * KamadaKawai positions the nodes initially based on\n *\n * \"AN ALGORITHM FOR DRAWING GENERAL UNDIRECTED GRAPHS\"\n * -- Tomihisa KAMADA and Satoru KAWAI in 1989\n *\n * Possible optimizations in the distance calculation can be implemented.\n */\nclass KamadaKawai {\n constructor(body, edgeLength, edgeStrength) {\n this.body = body;\n this.springLength = edgeLength;\n this.springConstant = edgeStrength;\n this.distanceSolver = new FloydWarshall();\n }\n\n /**\n * Not sure if needed but can be used to update the spring length and spring constant\n * @param options\n */\n setOptions(options) {\n if (options) {\n if (options.springLength) {\n this.springLength = options.springLength;\n }\n if (options.springConstant) {\n this.springConstant = options.springConstant;\n }\n }\n }\n\n\n /**\n * Position the system\n * @param nodesArray\n * @param edgesArray\n */\n solve(nodesArray, edgesArray, ignoreClusters = false) {\n // get distance matrix\n let D_matrix = this.distanceSolver.getDistances(this.body, nodesArray, edgesArray); // distance matrix\n\n // get the L Matrix\n this._createL_matrix(D_matrix);\n\n // get the K Matrix\n this._createK_matrix(D_matrix);\n\n // calculate positions\n let threshold = 0.01;\n let innerThreshold = 1;\n let iterations = 0;\n let maxIterations = Math.max(1000,Math.min(10*this.body.nodeIndices.length,6000));\n let maxInnerIterations = 5;\n\n let maxEnergy = 1e9;\n let highE_nodeId = 0, dE_dx = 0, dE_dy = 0, delta_m = 0, subIterations = 0;\n\n while (maxEnergy > threshold && iterations < maxIterations) {\n iterations += 1;\n [highE_nodeId, maxEnergy, dE_dx, dE_dy] = this._getHighestEnergyNode(ignoreClusters);\n delta_m = maxEnergy;\n subIterations = 0;\n while(delta_m > innerThreshold && subIterations < maxInnerIterations) {\n subIterations += 1;\n this._moveNode(highE_nodeId, dE_dx, dE_dy);\n [delta_m,dE_dx,dE_dy] = this._getEnergy(highE_nodeId);\n }\n }\n }\n\n /**\n * get the node with the highest energy\n * @returns {*[]}\n * @private\n */\n _getHighestEnergyNode(ignoreClusters) {\n let nodesArray = this.body.nodeIndices;\n let nodes = this.body.nodes;\n let maxEnergy = 0;\n let maxEnergyNodeId = nodesArray[0];\n let dE_dx_max = 0, dE_dy_max = 0;\n\n for (let nodeIdx = 0; nodeIdx < nodesArray.length; nodeIdx++) {\n let m = nodesArray[nodeIdx];\n // by not evaluating nodes with predefined positions we should only move nodes that have no positions.\n if ((nodes[m].predefinedPosition === false || nodes[m].isCluster === true && ignoreClusters === true) || nodes[m].options.fixed.x === true || nodes[m].options.fixed.y === true) {\n let [delta_m,dE_dx,dE_dy] = this._getEnergy(m);\n if (maxEnergy < delta_m) {\n maxEnergy = delta_m;\n maxEnergyNodeId = m;\n dE_dx_max = dE_dx;\n dE_dy_max = dE_dy;\n }\n }\n }\n\n return [maxEnergyNodeId, maxEnergy, dE_dx_max, dE_dy_max];\n }\n\n /**\n * calculate the energy of a single node\n * @param m\n * @returns {*[]}\n * @private\n */\n _getEnergy(m) {\n let nodesArray = this.body.nodeIndices;\n let nodes = this.body.nodes;\n\n let x_m = nodes[m].x;\n let y_m = nodes[m].y;\n let dE_dx = 0;\n let dE_dy = 0;\n for (let iIdx = 0; iIdx < nodesArray.length; iIdx++) {\n let i = nodesArray[iIdx];\n if (i !== m) {\n let x_i = nodes[i].x;\n let y_i = nodes[i].y;\n let denominator = 1.0 / Math.sqrt(Math.pow(x_m - x_i, 2) + Math.pow(y_m - y_i, 2));\n dE_dx += this.K_matrix[m][i] * ((x_m - x_i) - this.L_matrix[m][i] * (x_m - x_i) * denominator);\n dE_dy += this.K_matrix[m][i] * ((y_m - y_i) - this.L_matrix[m][i] * (y_m - y_i) * denominator);\n }\n }\n\n let delta_m = Math.sqrt(Math.pow(dE_dx, 2) + Math.pow(dE_dy, 2));\n return [delta_m, dE_dx, dE_dy];\n }\n\n /**\n * move the node based on it's energy\n * the dx and dy are calculated from the linear system proposed by Kamada and Kawai\n * @param m\n * @param dE_dx\n * @param dE_dy\n * @private\n */\n _moveNode(m, dE_dx, dE_dy) {\n let nodesArray = this.body.nodeIndices;\n let nodes = this.body.nodes;\n let d2E_dx2 = 0;\n let d2E_dxdy = 0;\n let d2E_dy2 = 0;\n\n let x_m = nodes[m].x;\n let y_m = nodes[m].y;\n for (let iIdx = 0; iIdx < nodesArray.length; iIdx++) {\n let i = nodesArray[iIdx];\n if (i !== m) {\n let x_i = nodes[i].x;\n let y_i = nodes[i].y;\n let denominator = 1.0 / Math.pow(Math.pow(x_m - x_i, 2) + Math.pow(y_m - y_i, 2), 1.5);\n d2E_dx2 += this.K_matrix[m][i] * (1 - this.L_matrix[m][i] * Math.pow(y_m - y_i, 2) * denominator);\n d2E_dxdy += this.K_matrix[m][i] * (this.L_matrix[m][i] * (x_m - x_i) * (y_m - y_i) * denominator);\n d2E_dy2 += this.K_matrix[m][i] * (1 - this.L_matrix[m][i] * Math.pow(x_m - x_i, 2) * denominator);\n }\n }\n // make the variable names easier to make the solving of the linear system easier to read\n let A = d2E_dx2, B = d2E_dxdy, C = dE_dx, D = d2E_dy2, E = dE_dy;\n\n // solve the linear system for dx and dy\n let dy = (C / A + E / B) / (B / A - D / B);\n let dx = -(B * dy + C) / A;\n\n // move the node\n nodes[m].x += dx;\n nodes[m].y += dy;\n }\n\n\n /**\n * Create the L matrix: edge length times shortest path\n * @param D_matrix\n * @private\n */\n _createL_matrix(D_matrix) {\n let nodesArray = this.body.nodeIndices;\n let edgeLength = this.springLength;\n\n this.L_matrix = [];\n for (let i = 0; i < nodesArray.length; i++) {\n this.L_matrix[nodesArray[i]] = {};\n for (let j = 0; j < nodesArray.length; j++) {\n this.L_matrix[nodesArray[i]][nodesArray[j]] = edgeLength * D_matrix[nodesArray[i]][nodesArray[j]];\n }\n }\n }\n\n\n /**\n * Create the K matrix: spring constants times shortest path\n * @param D_matrix\n * @private\n */\n _createK_matrix(D_matrix) {\n let nodesArray = this.body.nodeIndices;\n let edgeStrength = this.springConstant;\n\n this.K_matrix = [];\n for (let i = 0; i < nodesArray.length; i++) {\n this.K_matrix[nodesArray[i]] = {};\n for (let j = 0; j < nodesArray.length; j++) {\n this.K_matrix[nodesArray[i]][nodesArray[j]] = edgeStrength * Math.pow(D_matrix[nodesArray[i]][nodesArray[j]], -2);\n }\n }\n }\n\n\n\n}\n\nexport default KamadaKawai;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/KamadaKawai.js","/**\n * Created by Alex on 10-Aug-15.\n */\n\n\nclass FloydWarshall {\n constructor(){}\n\n getDistances(body, nodesArray, edgesArray) {\n let D_matrix = {};\n let edges = body.edges;\n\n // prepare matrix with large numbers\n for (let i = 0; i < nodesArray.length; i++) {\n D_matrix[nodesArray[i]] = {};\n D_matrix[nodesArray[i]] = {};\n for (let j = 0; j < nodesArray.length; j++) {\n D_matrix[nodesArray[i]][nodesArray[j]] = (i == j ? 0 : 1e9);\n D_matrix[nodesArray[i]][nodesArray[j]] = (i == j ? 0 : 1e9);\n }\n }\n\n // put the weights for the edges in. This assumes unidirectionality.\n for (let i = 0; i < edgesArray.length; i++) {\n let edge = edges[edgesArray[i]];\n // edge has to be connected if it counts to the distances. If it is connected to inner clusters it will crash so we also check if it is in the D_matrix\n if (edge.connected === true && D_matrix[edge.fromId] !== undefined && D_matrix[edge.toId] !== undefined) {\n D_matrix[edge.fromId][edge.toId] = 1;\n D_matrix[edge.toId][edge.fromId] = 1;\n }\n }\n\n let nodeCount = nodesArray.length;\n\n // Adapted FloydWarshall based on unidirectionality to greatly reduce complexity.\n for (let k = 0; k < nodeCount; k++) {\n for (let i = 0; i < nodeCount-1; i++) {\n for (let j = i+1; j < nodeCount; j++) {\n D_matrix[nodesArray[i]][nodesArray[j]] = Math.min(D_matrix[nodesArray[i]][nodesArray[j]],D_matrix[nodesArray[i]][nodesArray[k]] + D_matrix[nodesArray[k]][nodesArray[j]])\n D_matrix[nodesArray[j]][nodesArray[i]] = D_matrix[nodesArray[i]][nodesArray[j]];\n }\n }\n }\n\n return D_matrix;\n }\n}\n\nexport default FloydWarshall;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/modules/components/algorithms/FloydWarshall.js","/**\n * Canvas shapes used by Network\n */\nif (typeof CanvasRenderingContext2D !== 'undefined') {\n\n /**\n * Draw a circle shape\n */\n CanvasRenderingContext2D.prototype.circle = function (x, y, r) {\n this.beginPath();\n this.arc(x, y, r, 0, 2 * Math.PI, false);\n this.closePath();\n };\n\n /**\n * Draw a square shape\n * @param {Number} x horizontal center\n * @param {Number} y vertical center\n * @param {Number} r size, width and height of the square\n */\n CanvasRenderingContext2D.prototype.square = function (x, y, r) {\n this.beginPath();\n this.rect(x - r, y - r, r * 2, r * 2);\n this.closePath();\n };\n\n /**\n * Draw a triangle shape\n * @param {Number} x horizontal center\n * @param {Number} y vertical center\n * @param {Number} r radius, half the length of the sides of the triangle\n */\n CanvasRenderingContext2D.prototype.triangle = function (x, y, r) {\n // http://en.wikipedia.org/wiki/Equilateral_triangle\n this.beginPath();\n\n // the change in radius and the offset is here to center the shape\n r *= 1.15;\n y += 0.275 * r;\n\n var s = r * 2;\n var s2 = s / 2;\n var ir = Math.sqrt(3) / 6 * s; // radius of inner circle\n var h = Math.sqrt(s * s - s2 * s2); // height\n\n\n this.moveTo(x, y - (h - ir));\n this.lineTo(x + s2, y + ir);\n this.lineTo(x - s2, y + ir);\n this.lineTo(x, y - (h - ir));\n this.closePath();\n\n\n };\n\n /**\n * Draw a triangle shape in downward orientation\n * @param {Number} x horizontal center\n * @param {Number} y vertical center\n * @param {Number} r radius\n */\n CanvasRenderingContext2D.prototype.triangleDown = function (x, y, r) {\n // http://en.wikipedia.org/wiki/Equilateral_triangle\n this.beginPath();\n\n // the change in radius and the offset is here to center the shape\n r *= 1.15;\n y -= 0.275 * r;\n\n var s = r * 2;\n var s2 = s / 2;\n var ir = Math.sqrt(3) / 6 * s; // radius of inner circle\n var h = Math.sqrt(s * s - s2 * s2); // height\n\n this.moveTo(x, y + (h - ir));\n this.lineTo(x + s2, y - ir);\n this.lineTo(x - s2, y - ir);\n this.lineTo(x, y + (h - ir));\n this.closePath();\n };\n\n /**\n * Draw a star shape, a star with 5 points\n * @param {Number} x horizontal center\n * @param {Number} y vertical center\n * @param {Number} r radius, half the length of the sides of the triangle\n */\n CanvasRenderingContext2D.prototype.star = function (x, y, r) {\n // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/\n this.beginPath();\n\n // the change in radius and the offset is here to center the shape\n r *= 0.82;\n y += 0.1 * r;\n\n for (var n = 0; n < 10; n++) {\n var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5;\n this.lineTo(\n x + radius * Math.sin(n * 2 * Math.PI / 10),\n y - radius * Math.cos(n * 2 * Math.PI / 10)\n );\n }\n\n this.closePath();\n };\n\n /**\n * Draw a Diamond shape\n * @param {Number} x horizontal center\n * @param {Number} y vertical center\n * @param {Number} r radius, half the length of the sides of the triangle\n */\n CanvasRenderingContext2D.prototype.diamond = function (x, y, r) {\n // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/\n this.beginPath();\n\n this.lineTo(x, y + r);\n this.lineTo(x + r, y);\n this.lineTo(x, y - r);\n this.lineTo(x - r, y);\n\n\n this.closePath();\n };\n\n /**\n * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas\n */\n CanvasRenderingContext2D.prototype.roundRect = function (x, y, w, h, r) {\n var r2d = Math.PI / 180;\n if (w - ( 2 * r ) < 0) {\n r = ( w / 2 );\n } //ensure that the radius isn't too large for x\n if (h - ( 2 * r ) < 0) {\n r = ( h / 2 );\n } //ensure that the radius isn't too large for y\n this.beginPath();\n this.moveTo(x + r, y);\n this.lineTo(x + w - r, y);\n this.arc(x + w - r, y + r, r, r2d * 270, r2d * 360, false);\n this.lineTo(x + w, y + h - r);\n this.arc(x + w - r, y + h - r, r, 0, r2d * 90, false);\n this.lineTo(x + r, y + h);\n this.arc(x + r, y + h - r, r, r2d * 90, r2d * 180, false);\n this.lineTo(x, y + r);\n this.arc(x + r, y + r, r, r2d * 180, r2d * 270, false);\n this.closePath();\n };\n\n /**\n * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas\n */\n CanvasRenderingContext2D.prototype.ellipse = function (x, y, w, h) {\n var kappa = .5522848,\n ox = (w / 2) * kappa, // control point offset horizontal\n oy = (h / 2) * kappa, // control point offset vertical\n xe = x + w, // x-end\n ye = y + h, // y-end\n xm = x + w / 2, // x-middle\n ym = y + h / 2; // y-middle\n\n this.beginPath();\n this.moveTo(x, ym);\n this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\n this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\n this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\n this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\n this.closePath();\n };\n\n\n /**\n * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas\n */\n CanvasRenderingContext2D.prototype.database = function (x, y, w, h) {\n var f = 1 / 3;\n var wEllipse = w;\n var hEllipse = h * f;\n\n var kappa = .5522848,\n ox = (wEllipse / 2) * kappa, // control point offset horizontal\n oy = (hEllipse / 2) * kappa, // control point offset vertical\n xe = x + wEllipse, // x-end\n ye = y + hEllipse, // y-end\n xm = x + wEllipse / 2, // x-middle\n ym = y + hEllipse / 2, // y-middle\n ymb = y + (h - hEllipse / 2), // y-midlle, bottom ellipse\n yeb = y + h; // y-end, bottom ellipse\n\n this.beginPath();\n this.moveTo(xe, ym);\n\n this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\n this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\n\n this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\n this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\n\n this.lineTo(xe, ymb);\n\n this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb);\n this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb);\n\n this.lineTo(x, ym);\n };\n\n\n /**\n * Draw an arrow at the end of a line with the given angle.\n */\n CanvasRenderingContext2D.prototype.arrowEndpoint = function (x, y, angle, length) {\n // tail\n var xt = x - length * Math.cos(angle);\n var yt = y - length * Math.sin(angle);\n\n // inner tail\n var xi = x - length * 0.9 * Math.cos(angle);\n var yi = y - length * 0.9 * Math.sin(angle);\n\n // left\n var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI);\n var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI);\n\n // right\n var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI);\n var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI);\n\n this.beginPath();\n this.moveTo(x, y);\n this.lineTo(xl, yl);\n this.lineTo(xi, yi);\n this.lineTo(xr, yr);\n this.closePath();\n };\n\n /**\n * Draw an circle an the end of an line with the given angle.\n */\n CanvasRenderingContext2D.prototype.circleEndpoint = function (x, y, angle, length) {\n var radius = length * 0.4;\n var xc = x - radius * Math.cos(angle);\n var yc = y - radius * Math.sin(angle);\n this.circle(xc, yc, radius);\n };\n\n /**\n * Sets up the dashedLine functionality for drawing\n * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas\n * @author David Jordan\n * @date 2012-08-08\n */\n CanvasRenderingContext2D.prototype.dashedLine = function (x, y, x2, y2, pattern) {\n this.beginPath();\n this.moveTo(x, y);\n\n var patternLength = pattern.length;\n var dx = (x2 - x);\n var dy = (y2 - y);\n var slope = dy / dx;\n var distRemaining = Math.sqrt(dx * dx + dy * dy);\n var patternIndex = 0;\n var draw = true;\n var xStep = 0;\n var dashLength = pattern[0];\n\n while (distRemaining >= 0.1) {\n dashLength = pattern[patternIndex++ % patternLength];\n if (dashLength > distRemaining) {\n dashLength = distRemaining;\n }\n\n xStep = Math.sqrt(dashLength * dashLength / (1 + slope * slope));\n xStep = dx < 0 ? -xStep : xStep;\n x += xStep;\n y += slope * xStep;\n\n if (draw === true) {this.lineTo(x,y);}\n else {this.moveTo(x,y);}\n\n distRemaining -= dashLength;\n draw = !draw;\n }\n };\n\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/shapes.js","/**\n * Parse a text source containing data in DOT language into a JSON object.\n * The object contains two lists: one with nodes and one with edges.\n *\n * DOT language reference: http://www.graphviz.org/doc/info/lang.html\n *\n * DOT language attributes: http://graphviz.org/content/attrs\n *\n * @param {String} data Text containing a graph in DOT-notation\n * @return {Object} graph An object containing two parameters:\n * {Object[]} nodes\n * {Object[]} edges\n */\nfunction parseDOT (data) {\n dot = data;\n return parseGraph();\n}\n\n// mapping of attributes from DOT (the keys) to vis.js (the values)\nvar NODE_ATTR_MAPPING = {\n 'fontsize': 'font.size',\n 'fontcolor': 'font.color',\n 'labelfontcolor': 'font.color',\n 'fontname': 'font.face',\n 'color': ['color.border', 'color.background'],\n 'fillcolor': 'color.background',\n 'tooltip': 'title',\n 'labeltooltip': 'title'\n};\nvar EDGE_ATTR_MAPPING = Object.create(NODE_ATTR_MAPPING);\nEDGE_ATTR_MAPPING.color = 'color.color';\n\n// token types enumeration\nvar TOKENTYPE = {\n NULL : 0,\n DELIMITER : 1,\n IDENTIFIER: 2,\n UNKNOWN : 3\n};\n\n// map with all delimiters\nvar DELIMITERS = {\n '{': true,\n '}': true,\n '[': true,\n ']': true,\n ';': true,\n '=': true,\n ',': true,\n\n '->': true,\n '--': true\n};\n\nvar dot = ''; // current dot file\nvar index = 0; // current index in dot file\nvar c = ''; // current token character in expr\nvar token = ''; // current token\nvar tokenType = TOKENTYPE.NULL; // type of the token\n\n/**\n * Get the first character from the dot file.\n * The character is stored into the char c. If the end of the dot file is\n * reached, the function puts an empty string in c.\n */\nfunction first() {\n index = 0;\n c = dot.charAt(0);\n}\n\n/**\n * Get the next character from the dot file.\n * The character is stored into the char c. If the end of the dot file is\n * reached, the function puts an empty string in c.\n */\nfunction next() {\n index++;\n c = dot.charAt(index);\n}\n\n/**\n * Preview the next character from the dot file.\n * @return {String} cNext\n */\nfunction nextPreview() {\n return dot.charAt(index + 1);\n}\n\n/**\n * Test whether given character is alphabetic or numeric\n * @param {String} c\n * @return {Boolean} isAlphaNumeric\n */\nvar regexAlphaNumeric = /[a-zA-Z_0-9.:#]/;\nfunction isAlphaNumeric(c) {\n return regexAlphaNumeric.test(c);\n}\n\n/**\n * Merge all options of object b into object b\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n */\nfunction merge (a, b) {\n if (!a) {\n a = {};\n }\n\n if (b) {\n for (var name in b) {\n if (b.hasOwnProperty(name)) {\n a[name] = b[name];\n }\n }\n }\n return a;\n}\n\n/**\n * Set a value in an object, where the provided parameter name can be a\n * path with nested parameters. For example:\n *\n * var obj = {a: 2};\n * setValue(obj, 'b.c', 3); // obj = {a: 2, b: {c: 3}}\n *\n * @param {Object} obj\n * @param {String} path A parameter name or dot-separated parameter path,\n * like \"color.highlight.border\".\n * @param {*} value\n */\nfunction setValue(obj, path, value) {\n var keys = path.split('.');\n var o = obj;\n while (keys.length) {\n var key = keys.shift();\n if (keys.length) {\n // this isn't the end point\n if (!o[key]) {\n o[key] = {};\n }\n o = o[key];\n }\n else {\n // this is the end point\n o[key] = value;\n }\n }\n}\n\n/**\n * Add a node to a graph object. If there is already a node with\n * the same id, their attributes will be merged.\n * @param {Object} graph\n * @param {Object} node\n */\nfunction addNode(graph, node) {\n var i, len;\n var current = null;\n\n // find root graph (in case of subgraph)\n var graphs = [graph]; // list with all graphs from current graph to root graph\n var root = graph;\n while (root.parent) {\n graphs.push(root.parent);\n root = root.parent;\n }\n\n // find existing node (at root level) by its id\n if (root.nodes) {\n for (i = 0, len = root.nodes.length; i < len; i++) {\n if (node.id === root.nodes[i].id) {\n current = root.nodes[i];\n break;\n }\n }\n }\n\n if (!current) {\n // this is a new node\n current = {\n id: node.id\n };\n if (graph.node) {\n // clone default attributes\n current.attr = merge(current.attr, graph.node);\n }\n }\n\n // add node to this (sub)graph and all its parent graphs\n for (i = graphs.length - 1; i >= 0; i--) {\n var g = graphs[i];\n\n if (!g.nodes) {\n g.nodes = [];\n }\n if (g.nodes.indexOf(current) === -1) {\n g.nodes.push(current);\n }\n }\n\n // merge attributes\n if (node.attr) {\n current.attr = merge(current.attr, node.attr);\n }\n}\n\n/**\n * Add an edge to a graph object\n * @param {Object} graph\n * @param {Object} edge\n */\nfunction addEdge(graph, edge) {\n if (!graph.edges) {\n graph.edges = [];\n }\n graph.edges.push(edge);\n if (graph.edge) {\n var attr = merge({}, graph.edge); // clone default attributes\n edge.attr = merge(attr, edge.attr); // merge attributes\n }\n}\n\n/**\n * Create an edge to a graph object\n * @param {Object} graph\n * @param {String | Number | Object} from\n * @param {String | Number | Object} to\n * @param {String} type\n * @param {Object | null} attr\n * @return {Object} edge\n */\nfunction createEdge(graph, from, to, type, attr) {\n var edge = {\n from: from,\n to: to,\n type: type\n };\n\n if (graph.edge) {\n edge.attr = merge({}, graph.edge); // clone default attributes\n }\n edge.attr = merge(edge.attr || {}, attr); // merge attributes\n\n return edge;\n}\n\n/**\n * Get next token in the current dot file.\n * The token and token type are available as token and tokenType\n */\nfunction getToken() {\n tokenType = TOKENTYPE.NULL;\n token = '';\n\n // skip over whitespaces\n while (c === ' ' || c === '\\t' || c === '\\n' || c === '\\r') { // space, tab, enter\n next();\n }\n\n do {\n var isComment = false;\n\n // skip comment\n if (c === '#') {\n // find the previous non-space character\n var i = index - 1;\n while (dot.charAt(i) === ' ' || dot.charAt(i) === '\\t') {\n i--;\n }\n if (dot.charAt(i) === '\\n' || dot.charAt(i) === '') {\n // the # is at the start of a line, this is indeed a line comment\n while (c != '' && c != '\\n') {\n next();\n }\n isComment = true;\n }\n }\n if (c === '/' && nextPreview() === '/') {\n // skip line comment\n while (c != '' && c != '\\n') {\n next();\n }\n isComment = true;\n }\n if (c === '/' && nextPreview() === '*') {\n // skip block comment\n while (c != '') {\n if (c === '*' && nextPreview() === '/') {\n // end of block comment found. skip these last two characters\n next();\n next();\n break;\n }\n else {\n next();\n }\n }\n isComment = true;\n }\n\n // skip over whitespaces\n while (c === ' ' || c === '\\t' || c === '\\n' || c === '\\r') { // space, tab, enter\n next();\n }\n }\n while (isComment);\n\n // check for end of dot file\n if (c === '') {\n // token is still empty\n tokenType = TOKENTYPE.DELIMITER;\n return;\n }\n\n // check for delimiters consisting of 2 characters\n var c2 = c + nextPreview();\n if (DELIMITERS[c2]) {\n tokenType = TOKENTYPE.DELIMITER;\n token = c2;\n next();\n next();\n return;\n }\n\n // check for delimiters consisting of 1 character\n if (DELIMITERS[c]) {\n tokenType = TOKENTYPE.DELIMITER;\n token = c;\n next();\n return;\n }\n\n // check for an identifier (number or string)\n // TODO: more precise parsing of numbers/strings (and the port separator ':')\n if (isAlphaNumeric(c) || c === '-') {\n token += c;\n next();\n\n while (isAlphaNumeric(c)) {\n token += c;\n next();\n }\n if (token === 'false') {\n token = false; // convert to boolean\n }\n else if (token === 'true') {\n token = true; // convert to boolean\n }\n else if (!isNaN(Number(token))) {\n token = Number(token); // convert to number\n }\n tokenType = TOKENTYPE.IDENTIFIER;\n return;\n }\n\n // check for a string enclosed by double quotes\n if (c === '\"') {\n next();\n while (c != '' && (c != '\"' || (c === '\"' && nextPreview() === '\"'))) {\n token += c;\n if (c === '\"') { // skip the escape character\n next();\n }\n next();\n }\n if (c != '\"') {\n throw newSyntaxError('End of string \" expected');\n }\n next();\n tokenType = TOKENTYPE.IDENTIFIER;\n return;\n }\n\n // something unknown is found, wrong characters, a syntax error\n tokenType = TOKENTYPE.UNKNOWN;\n while (c != '') {\n token += c;\n next();\n }\n throw new SyntaxError('Syntax error in part \"' + chop(token, 30) + '\"');\n}\n\n/**\n * Parse a graph.\n * @returns {Object} graph\n */\nfunction parseGraph() {\n var graph = {};\n\n first();\n getToken();\n\n // optional strict keyword\n if (token === 'strict') {\n graph.strict = true;\n getToken();\n }\n\n // graph or digraph keyword\n if (token === 'graph' || token === 'digraph') {\n graph.type = token;\n getToken();\n }\n\n // optional graph id\n if (tokenType === TOKENTYPE.IDENTIFIER) {\n graph.id = token;\n getToken();\n }\n\n // open angle bracket\n if (token != '{') {\n throw newSyntaxError('Angle bracket { expected');\n }\n getToken();\n\n // statements\n parseStatements(graph);\n\n // close angle bracket\n if (token != '}') {\n throw newSyntaxError('Angle bracket } expected');\n }\n getToken();\n\n // end of file\n if (token !== '') {\n throw newSyntaxError('End of file expected');\n }\n getToken();\n\n // remove temporary default options\n delete graph.node;\n delete graph.edge;\n delete graph.graph;\n\n return graph;\n}\n\n/**\n * Parse a list with statements.\n * @param {Object} graph\n */\nfunction parseStatements (graph) {\n while (token !== '' && token != '}') {\n parseStatement(graph);\n if (token === ';') {\n getToken();\n }\n }\n}\n\n/**\n * Parse a single statement. Can be a an attribute statement, node\n * statement, a series of node statements and edge statements, or a\n * parameter.\n * @param {Object} graph\n */\nfunction parseStatement(graph) {\n // parse subgraph\n var subgraph = parseSubgraph(graph);\n if (subgraph) {\n // edge statements\n parseEdge(graph, subgraph);\n\n return;\n }\n\n // parse an attribute statement\n var attr = parseAttributeStatement(graph);\n if (attr) {\n return;\n }\n\n // parse node\n if (tokenType != TOKENTYPE.IDENTIFIER) {\n throw newSyntaxError('Identifier expected');\n }\n var id = token; // id can be a string or a number\n getToken();\n\n if (token === '=') {\n // id statement\n getToken();\n if (tokenType != TOKENTYPE.IDENTIFIER) {\n throw newSyntaxError('Identifier expected');\n }\n graph[id] = token;\n getToken();\n // TODO: implement comma separated list with \"a_list: ID=ID [','] [a_list] \"\n }\n else {\n parseNodeStatement(graph, id);\n }\n}\n\n/**\n * Parse a subgraph\n * @param {Object} graph parent graph object\n * @return {Object | null} subgraph\n */\nfunction parseSubgraph (graph) {\n var subgraph = null;\n\n // optional subgraph keyword\n if (token === 'subgraph') {\n subgraph = {};\n subgraph.type = 'subgraph';\n getToken();\n\n // optional graph id\n if (tokenType === TOKENTYPE.IDENTIFIER) {\n subgraph.id = token;\n getToken();\n }\n }\n\n // open angle bracket\n if (token === '{') {\n getToken();\n\n if (!subgraph) {\n subgraph = {};\n }\n subgraph.parent = graph;\n subgraph.node = graph.node;\n subgraph.edge = graph.edge;\n subgraph.graph = graph.graph;\n\n // statements\n parseStatements(subgraph);\n\n // close angle bracket\n if (token != '}') {\n throw newSyntaxError('Angle bracket } expected');\n }\n getToken();\n\n // remove temporary default options\n delete subgraph.node;\n delete subgraph.edge;\n delete subgraph.graph;\n delete subgraph.parent;\n\n // register at the parent graph\n if (!graph.subgraphs) {\n graph.subgraphs = [];\n }\n graph.subgraphs.push(subgraph);\n }\n\n return subgraph;\n}\n\n/**\n * parse an attribute statement like \"node [shape=circle fontSize=16]\".\n * Available keywords are 'node', 'edge', 'graph'.\n * The previous list with default attributes will be replaced\n * @param {Object} graph\n * @returns {String | null} keyword Returns the name of the parsed attribute\n * (node, edge, graph), or null if nothing\n * is parsed.\n */\nfunction parseAttributeStatement (graph) {\n // attribute statements\n if (token === 'node') {\n getToken();\n\n // node attributes\n graph.node = parseAttributeList();\n return 'node';\n }\n else if (token === 'edge') {\n getToken();\n\n // edge attributes\n graph.edge = parseAttributeList();\n return 'edge';\n }\n else if (token === 'graph') {\n getToken();\n\n // graph attributes\n graph.graph = parseAttributeList();\n return 'graph';\n }\n\n return null;\n}\n\n/**\n * parse a node statement\n * @param {Object} graph\n * @param {String | Number} id\n */\nfunction parseNodeStatement(graph, id) {\n // node statement\n var node = {\n id: id\n };\n var attr = parseAttributeList();\n if (attr) {\n node.attr = attr;\n }\n addNode(graph, node);\n\n // edge statements\n parseEdge(graph, id);\n}\n\n/**\n * Parse an edge or a series of edges\n * @param {Object} graph\n * @param {String | Number} from Id of the from node\n */\nfunction parseEdge(graph, from) {\n while (token === '->' || token === '--') {\n var to;\n var type = token;\n getToken();\n\n var subgraph = parseSubgraph(graph);\n if (subgraph) {\n to = subgraph;\n }\n else {\n if (tokenType != TOKENTYPE.IDENTIFIER) {\n throw newSyntaxError('Identifier or subgraph expected');\n }\n to = token;\n addNode(graph, {\n id: to\n });\n getToken();\n }\n\n // parse edge attributes\n var attr = parseAttributeList();\n\n // create edge\n var edge = createEdge(graph, from, to, type, attr);\n addEdge(graph, edge);\n\n from = to;\n }\n}\n\n/**\n * Parse a set with attributes,\n * for example [label=\"1.000\", shape=solid]\n * @return {Object | null} attr\n */\nfunction parseAttributeList() {\n var attr = null;\n\n while (token === '[') {\n getToken();\n attr = {};\n while (token !== '' && token != ']') {\n if (tokenType != TOKENTYPE.IDENTIFIER) {\n throw newSyntaxError('Attribute name expected');\n }\n var name = token;\n\n getToken();\n if (token != '=') {\n throw newSyntaxError('Equal sign = expected');\n }\n getToken();\n\n if (tokenType != TOKENTYPE.IDENTIFIER) {\n throw newSyntaxError('Attribute value expected');\n }\n var value = token;\n setValue(attr, name, value); // name can be a path\n\n getToken();\n if (token ==',') {\n getToken();\n }\n }\n\n if (token != ']') {\n throw newSyntaxError('Bracket ] expected');\n }\n getToken();\n }\n\n return attr;\n}\n\n/**\n * Create a syntax error with extra information on current token and index.\n * @param {String} message\n * @returns {SyntaxError} err\n */\nfunction newSyntaxError(message) {\n return new SyntaxError(message + ', got \"' + chop(token, 30) + '\" (char ' + index + ')');\n}\n\n/**\n * Chop off text after a maximum length\n * @param {String} text\n * @param {Number} maxLength\n * @returns {String}\n */\nfunction chop (text, maxLength) {\n return (text.length <= maxLength) ? text : (text.substr(0, 27) + '...');\n}\n\n/**\n * Execute a function fn for each pair of elements in two arrays\n * @param {Array | *} array1\n * @param {Array | *} array2\n * @param {function} fn\n */\nfunction forEach2(array1, array2, fn) {\n if (Array.isArray(array1)) {\n array1.forEach(function (elem1) {\n if (Array.isArray(array2)) {\n array2.forEach(function (elem2) {\n fn(elem1, elem2);\n });\n }\n else {\n fn(elem1, array2);\n }\n });\n }\n else {\n if (Array.isArray(array2)) {\n array2.forEach(function (elem2) {\n fn(array1, elem2);\n });\n }\n else {\n fn(array1, array2);\n }\n }\n}\n\n/**\n * Set a nested property on an object\n * When nested objects are missing, they will be created.\n * For example setProp({}, 'font.color', 'red') will return {font: {color: 'red'}}\n * @param {Object} object\n * @param {string} path A dot separated string like 'font.color'\n * @param {*} value Value for the property\n * @return {Object} Returns the original object, allows for chaining.\n */\nfunction setProp(object, path, value) {\n var names = path.split('.');\n var prop = names.pop();\n\n // traverse over the nested objects\n var obj = object;\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n if (!(name in obj)) {\n obj[name] = {};\n }\n obj = obj[name];\n }\n\n // set the property value\n obj[prop] = value;\n\n return object;\n}\n\n/**\n * Convert an object with DOT attributes to their vis.js equivalents.\n * @param {Object} attr Object with DOT attributes\n * @param {Object} mapping\n * @return {Object} Returns an object with vis.js attributes\n */\nfunction convertAttr (attr, mapping) {\n var converted = {};\n\n for (var prop in attr) {\n if (attr.hasOwnProperty(prop)) {\n var visProp = mapping[prop];\n if (Array.isArray(visProp)) {\n visProp.forEach(function (visPropI) {\n setProp(converted, visPropI, attr[prop]);\n })\n }\n else if (typeof visProp === 'string') {\n setProp(converted, visProp, attr[prop]);\n }\n else {\n setProp(converted, prop, attr[prop]);\n }\n }\n }\n\n return converted;\n}\n\n/**\n * Convert a string containing a graph in DOT language into a map containing\n * with nodes and edges in the format of graph.\n * @param {String} data Text containing a graph in DOT-notation\n * @return {Object} graphData\n */\nfunction DOTToGraph (data) {\n // parse the DOT file\n var dotData = parseDOT(data);\n var graphData = {\n nodes: [],\n edges: [],\n options: {}\n };\n\n // copy the nodes\n if (dotData.nodes) {\n dotData.nodes.forEach(function (dotNode) {\n var graphNode = {\n id: dotNode.id,\n label: String(dotNode.label || dotNode.id)\n };\n merge(graphNode, convertAttr(dotNode.attr, NODE_ATTR_MAPPING));\n if (graphNode.image) {\n graphNode.shape = 'image';\n }\n graphData.nodes.push(graphNode);\n });\n }\n\n // copy the edges\n if (dotData.edges) {\n /**\n * Convert an edge in DOT format to an edge with VisGraph format\n * @param {Object} dotEdge\n * @returns {Object} graphEdge\n */\n var convertEdge = function (dotEdge) {\n var graphEdge = {\n from: dotEdge.from,\n to: dotEdge.to\n };\n merge(graphEdge, convertAttr(dotEdge.attr, EDGE_ATTR_MAPPING));\n graphEdge.arrows = (dotEdge.type === '->') ? 'to' : undefined;\n\n return graphEdge;\n };\n\n dotData.edges.forEach(function (dotEdge) {\n var from, to;\n if (dotEdge.from instanceof Object) {\n from = dotEdge.from.nodes;\n }\n else {\n from = {\n id: dotEdge.from\n }\n }\n\n // TODO: support of solid/dotted/dashed edges (attr = 'style')\n // TODO: support for attributes 'dir' and 'arrowhead' (edge arrows)\n\n if (dotEdge.to instanceof Object) {\n to = dotEdge.to.nodes;\n }\n else {\n to = {\n id: dotEdge.to\n }\n }\n\n if (dotEdge.from instanceof Object && dotEdge.from.edges) {\n dotEdge.from.edges.forEach(function (subEdge) {\n var graphEdge = convertEdge(subEdge);\n graphData.edges.push(graphEdge);\n });\n }\n\n forEach2(from, to, function (from, to) {\n var subEdge = createEdge(graphData, from.id, to.id, dotEdge.type, dotEdge.attr);\n var graphEdge = convertEdge(subEdge);\n graphData.edges.push(graphEdge);\n });\n\n if (dotEdge.to instanceof Object && dotEdge.to.edges) {\n dotEdge.to.edges.forEach(function (subEdge) {\n var graphEdge = convertEdge(subEdge);\n graphData.edges.push(graphEdge);\n });\n }\n });\n }\n\n // copy the options\n if (dotData.attr) {\n graphData.options = dotData.attr;\n }\n\n return graphData;\n}\n\n// exports\nexports.parseDOT = parseDOT;\nexports.DOTToGraph = DOTToGraph;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/dotparser.js","\nfunction parseGephi(gephiJSON, optionsObj) {\n var edges = [];\n var nodes = [];\n var options = {\n edges: {\n inheritColor: false\n },\n nodes: {\n fixed: false,\n parseColor: false\n }\n };\n\n if (optionsObj !== undefined) {\n if (optionsObj.fixed !== undefined) {options.nodes.fixed = optionsObj.fixed}\n if (optionsObj.parseColor !== undefined) {options.nodes.parseColor = optionsObj.parseColor}\n if (optionsObj.inheritColor !== undefined) {options.edges.inheritColor = optionsObj.inheritColor}\n }\n\n var gEdges = gephiJSON.edges;\n var gNodes = gephiJSON.nodes;\n for (var i = 0; i < gEdges.length; i++) {\n var edge = {};\n var gEdge = gEdges[i];\n edge['id'] = gEdge.id;\n edge['from'] = gEdge.source;\n edge['to'] = gEdge.target;\n edge['attributes'] = gEdge.attributes;\n edge['label'] = gEdge.label;\n edge['title'] = gEdge.attributes !== undefined ? gEdge.attributes.title : undefined;\n if (gEdge['type'] === 'Directed') {\n edge['arrows'] = 'to';\n }\n// edge['value'] = gEdge.attributes !== undefined ? gEdge.attributes.Weight : undefined;\n// edge['width'] = edge['value'] !== undefined ? undefined : edgegEdge.size;\n if (gEdge.color && options.inheritColor === false) {\n edge['color'] = gEdge.color;\n }\n edges.push(edge);\n }\n\n for (var i = 0; i < gNodes.length; i++) {\n var node = {};\n var gNode = gNodes[i];\n node['id'] = gNode.id;\n node['attributes'] = gNode.attributes;\n node['title'] = gNode.title;\n node['x'] = gNode.x;\n node['y'] = gNode.y;\n node['label'] = gNode.label;\n node['title'] = gNode.attributes !== undefined ? gNode.attributes.title : undefined;\n if (options.nodes.parseColor === true) {\n node['color'] = gNode.color;\n }\n else {\n node['color'] = gNode.color !== undefined ? {background:gNode.color, border:gNode.color, highlight: {background:gNode.color, border:gNode.color}, hover:{background:gNode.color, border:gNode.color}} : undefined;\n }\n node['size'] = gNode.size;\n node['fixed'] = options.nodes.fixed && gNode.x !== undefined && gNode.y !== undefined;\n nodes.push(node);\n }\n\n return {nodes:nodes, edges:edges};\n}\n\nexports.parseGephi = parseGephi;\n\n\n// WEBPACK FOOTER //\n// ./lib/network/gephiParser.js","// English\nexports['en'] = {\n edit: 'Edit',\n del: 'Delete selected',\n back: 'Back',\n addNode: 'Add Node',\n addEdge: 'Add Edge',\n editNode: 'Edit Node',\n editEdge: 'Edit Edge',\n addDescription: 'Click in an empty space to place a new node.',\n edgeDescription: 'Click on a node and drag the edge to another node to connect them.',\n editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.',\n createEdgeError: 'Cannot link edges to a cluster.',\n deleteClusterError: 'Clusters cannot be deleted.',\n editClusterError: 'Clusters cannot be edited.'\n};\nexports['en_EN'] = exports['en'];\nexports['en_US'] = exports['en'];\n\n// German\nexports['de'] = {\n edit: 'Editieren',\n del: 'L\\u00f6sche Auswahl',\n back: 'Zur\\u00fcck',\n addNode: 'Knoten hinzuf\\u00fcgen',\n addEdge: 'Kante hinzuf\\u00fcgen',\n editNode: 'Knoten editieren',\n editEdge: 'Kante editieren',\n addDescription: 'Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.',\n edgeDescription: 'Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.',\n editEdgeDescription: 'Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.',\n createEdgeError: 'Es ist nicht m\\u00f6glich, Kanten mit Clustern zu verbinden.',\n deleteClusterError: 'Cluster k\\u00f6nnen nicht gel\\u00f6scht werden.',\n editClusterError: 'Cluster k\\u00f6nnen nicht editiert werden.'\n};\nexports['de_DE'] = exports['de'];\n\n// Spanish\nexports['es'] = {\n edit: 'Editar',\n del: 'Eliminar selecci\\u00f3n',\n back: '\\u00c1tras',\n addNode: 'A\\u00f1adir nodo',\n addEdge: 'A\\u00f1adir arista',\n editNode: 'Editar nodo',\n editEdge: 'Editar arista',\n addDescription: 'Haga clic en un lugar vac\\u00edo para colocar un nuevo nodo.',\n edgeDescription: 'Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.',\n editEdgeDescription: 'Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.',\n createEdgeError: 'No se puede conectar una arista a un grupo.',\n deleteClusterError: 'No es posible eliminar grupos.',\n editClusterError: 'No es posible editar grupos.'\n};\nexports['es_ES'] = exports['es'];\n\n//Italiano\nexports['it'] = {\n edit: 'Modifica',\n del: 'Cancella la selezione',\n back: 'Indietro',\n addNode: 'Aggiungi un nodo',\n addEdge: 'Aggiungi un vertice',\n editNode: 'Modifica il nodo',\n editEdge: 'Modifica il vertice',\n addDescription: 'Clicca per aggiungere un nuovo nodo',\n edgeDescription: 'Clicca su un nodo e trascinalo ad un altro nodo per connetterli.',\n editEdgeDescription: 'Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.',\n createEdgeError: 'Non si possono collegare vertici ad un cluster',\n deleteClusterError: 'I cluster non possono essere cancellati',\n editClusterError: 'I clusters non possono essere modificati.'\n};\nexports['it_IT'] = exports['it'];\n\n// Dutch\nexports['nl'] = {\n edit: 'Wijzigen',\n del: 'Selectie verwijderen',\n back: 'Terug',\n addNode: 'Node toevoegen',\n addEdge: 'Link toevoegen',\n editNode: 'Node wijzigen',\n editEdge: 'Link wijzigen',\n addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.',\n edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.',\n editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.',\n createEdgeError: 'Kan geen link maken naar een cluster.',\n deleteClusterError: 'Clusters kunnen niet worden verwijderd.',\n editClusterError: 'Clusters kunnen niet worden aangepast.'\n};\nexports['nl_NL'] = exports['nl'];\nexports['nl_BE'] = exports['nl'];\n\n// Portuguese Brazil\nexports['pt-br'] = {\n edit: 'Editar',\n del: 'Remover selecionado',\n back: 'Voltar',\n addNode: 'Adicionar nó',\n addEdge: 'Adicionar aresta',\n editNode: 'Editar nó',\n editEdge: 'Editar aresta',\n addDescription: 'Clique em um espaço em branco para adicionar um novo nó',\n edgeDescription: 'Clique em um nó e arraste a aresta até outro nó para conectá-los',\n editEdgeDescription: 'Clique nos pontos de controle e os arraste para um nó para conectá-los',\n createEdgeError: 'Não foi possível linkar arestas a um cluster.',\n deleteClusterError: 'Clusters não puderam ser removidos.',\n editClusterError: 'Clusters não puderam ser editados.'\n};\nexports['pt-BR'] = exports['pt-br'];\nexports['pt_BR'] = exports['pt-br'];\nexports['pt_br'] = exports['pt-br'];\n\n// Russian\nexports['ru'] = {\n edit: 'Редактировать',\n del: 'Удалить выбранное',\n back: 'Назад',\n addNode: 'Добавить узел',\n addEdge: 'Добавить ребро',\n editNode: 'Редактировать узел',\n editEdge: 'Редактировать ребро',\n addDescription: 'Кликните в свободное место, чтобы добавить новый узел.',\n edgeDescription: 'Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.',\n editEdgeDescription: 'Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.',\n createEdgeError: 'Невозможно соединить ребра в кластер.',\n deleteClusterError: 'Кластеры не могут быть удалены',\n editClusterError: 'Кластеры недоступны для редактирования.'\n};\nexports['ru_RU'] = exports['ru'];\n\n\n\n// WEBPACK FOOTER //\n// ./lib/network/locales.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/vis.map b/dist/vis.map new file mode 100644 index 00000000..987a4721 --- /dev/null +++ b/dist/vis.map @@ -0,0 +1 @@ +{"version":3,"sources":["vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","extend","_interopRequireDefault","obj","__esModule","default","_getIterator2","_getIterator3","_create","_create2","_keys","_keys2","_typeof2","_typeof3","moment","uuid","isNumber","object","Number","recursiveDOMDelete","DOMobject","hasChildNodes","firstChild","removeChild","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","ASPDateRegex","exec","isNaN","parse","randomUUID","v4","assignAllKeys","prop","hasOwnProperty","fillIfDefined","a","b","allowDeletion","arguments","length","undefined","protoExtend","i","other","selectiveExtend","props","Array","isArray","Error","selectiveDeepExtend","TypeError","constructor","Object","deepExtend","selectiveNotDeepExtend","indexOf","push","equalArray","len","convert","type","match","Boolean","valueOf","isMoment","toDate","getType","toISOString","format","copyAndExtendArray","arr","newValue","newArr","copyArray","getAbsoluteLeft","elem","getBoundingClientRect","left","getAbsoluteRight","right","getAbsoluteTop","top","addClassName","className","classes","split","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","throttle","fn","scheduled","requestAnimationFrame","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","window","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","toString","slice","parseColor","isValidRGB","map","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","cssUtil","cssText","styles","style","trim","parts","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","floor","f","q","t","test","isValidRGBA","rgba","selectiveBridgeObject","fields","referenceObject","objectTo","bridgeObject","insertSort","compare","k","j","mergeOptions","mergeTarget","options","globalOptions","enabled","binarySearchCustom","orderedItems","comparator","field","field2","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easingFunctions","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","getScrollBarWidth","inner","document","createElement","width","height","outer","position","visibility","overflow","appendChild","body","w1","offsetWidth","w2","clientWidth","topMost","pile","accessors","candidate","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","done","member","err","global","hide","Iterators","TO_STRING_TAG","collections","NAME","Collection","proto","prototype","addToUnscopables","step","toIObject","iterated","kind","_t","_i","_k","O","Arguments","IObject","defined","it","cof","propertyIsEnumerable","LIBRARY","$export","redefine","has","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","returnThis","Base","Constructor","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","name","values","P","F","core","ctx","source","own","out","IS_FORCED","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","B","IS_WRAP","W","expProto","C","apply","Function","virtual","R","U","self","__g","version","__e","aFunction","that","dP","createDesc","anObject","IE8_DOM_DEFINE","toPrimitive","defineProperty","Attributes","isObject","get","is","val","bitmap","enumerable","configurable","writable","create","descriptor","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","src","contentWindow","open","write","lt","close","Properties","getKeys","defineProperties","$keys","arrayIndexOf","names","toLength","toIndex","IS_INCLUDES","$this","el","fromIndex","toInteger","ceil","shared","uid","store","px","random","concat","documentElement","def","tag","stat","Symbol","USE_SYMBOL","toObject","ObjectProto","$at","point","TO_STRING","pos","l","charCodeAt","charAt","getIterator","iterFn","classof","getIteratorMethod","ARG","tryGet","T","callee","$Object","D","fails","KEY","exp","_iterator2","_symbol","_symbol2","_typeof","DESCRIPTORS","META","$fails","wks","wksExt","wksDefine","keyOf","enumKeys","gOPNExt","$GOPD","$DP","gOPD","gOPN","$Symbol","$JSON","JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","protoDesc","wrap","sym","isSymbol","iterator","$defineProperty","$defineProperties","$create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","set","symbols","for","keyFor","useSetter","useSimple","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","replacer","$replacer","args","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","fastKey","getWeak","onFreeze","meta","NEED","gOPS","pIE","getSymbols","arg","windowNames","getWindowNames","hiddenKeys","hooks","hookCallback","input","isObjectEmpty","res","hasOwnProp","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","some$1","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","isUndefined","copyConfig","to","from","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","absFloor","number","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","array1","array2","dontConvert","lengthDiff","abs","diffs","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","stack","deprecateSimple","deprecations","isFunction","_config","_ordinalParseLenient","RegExp","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","calendar","mom","now","output","_calendar","longDateFormat","_longDateFormat","formatUpper","toUpperCase","invalidDate","_invalidDate","ordinal","_ordinal","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","addUnitPriority","priority","priorities","getPrioritizedUnits","unitsObj","u","sort","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","zeroFill","targetLength","forceSign","absNumber","zerosToFill","pow","addFormatToken","token","padded","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","expandFormat","formatFunctions","replaceLongDateFormatTokens","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","year","month","UTC","getUTCDate","localeMonths","_months","isFormat","MONTHS_IN_FORMAT","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","monthsShort","months","indexOf$1","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","monthsParse","date","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","defaultMonthsShortRegex","monthsRegex","_monthsStrictRegex","_monthsRegex","defaultMonthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","isLeapYear","getIsLeapYear","createDate","y","M","ms","getFullYear","setFullYear","createUTCDate","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","weekdaysMin","weekdaysShort","weekdays","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","defaultWeekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","defaultWeekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","defaultWeekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","normalizeLocale","chooseLocale","loadLocale","oldLocale","locales","globalLocale","_abbr","code","getSetGlobalLocale","data","getLocale","defineLocale","baseConfig","abbr","parentLocale","localeFamilies","x","updateLocale","listLocales","keys$1","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","_overflowWeeks","WEEK","_overflowWeekday","WEEKDAY","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","extendedIsoRegex","basicIsoRegex","isoDates","isoTimes","tzRegex","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getMonth","getDate","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","weekdayOverflow","GG","createLocal","curWeek","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","_meridiem","meridiemFixWrap","hour","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","duration","years","quarters","quarter","weeks","days","seconds","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","matcher","matches","chunk","chunkOffset","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","matchShortOffset","_changeInProgress","addSubtract","createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","matchOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","isoRegex","parseIso","momentsDifference","inp","parseFloat","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","dur","tmp","isAdding","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","delta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","inspect","zone","prefix","suffix","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","isoWeekday","unix","toJSON","isValid$1","parsingFlags","invalidAt","creationData","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","isoWeek","getISOWeeksInYear","getWeeksInYear","weekInfo","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfYear","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","get$2","makeGetter","substituteTimeAgo","relativeTime$1","posNegDuration","thresholds","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","withSuffix","toISOString$1","abs$1","Y","asSeconds","some","fun","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","match6","matchWord","o","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","pos1","pos2","getSetHour","ordinalParse","meridiemParse","prototypeMin","prototypeMax","lang","isoWeekYear","getSetDayOfMonth","getSetMinute","getSetSecond","getSetMillisecond","isoWeeks","isoWeeksInYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","firstDayOfYear","firstDayOfWeek","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","proto$2","toIsoString","invalid","relativeTimeRounding","relativeTimeThreshold","webpackPolyfill","paths","children","webpackContext","req","resolve","buf","oct","_hexToByte","unparse","bth","_byteToHex","v1","clockseq","_clockseq","msecs","nsecs","_lastNSecs","dt","_lastMSecs","tl","tmh","node","_nodeId","n","rnds","rng","_rng","globalVar","crypto","getRandomValues","_rnds8","Uint8Array","_rnds","_seedBytes","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Hammer","keycharm","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","resetElements","getSVGElement","svgContainer","createElementNS","getDOMElement","DOMContainer","insertBefore","drawPoint","groupTemplate","labelObj","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","rect","_options","_fieldId","fieldId","_type","_subscribers","setOptions","_stringify2","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","subscriber","addedIds","me","_addItem","items","update","updatedIds","oldData","updatedData","addOrUpdate","oldItem","_updateItem","ids","firstType","returnType","itemIds","itemId","_getItem","order","_sort","_filterFields","resultant","getIds","getDataSet","mappedItems","filteredItem","itemFields","av","bv","remove","removedIds","removedItems","_remove","ident","clear","maxField","itemField","minField","distinct","fieldType","count","exists","types","raw","converted","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","original","method","context","entry","clearTimeout","setTimeout","_ids","_onEvent","setData","refresh","oldIds","newIds","viewOptions","getArguments","defaultFilter","dataSet","oldItems","updatedItems","container","SyntaxError","containerElement","dataTable","dataPoints","Settings","setDefaults","DEFAULTS","colX","colY","colZ","colValue","colFilter","getMouseX","clientX","targetTouches","getMouseY","clientY","_assign","_assign2","Emitter","Range","STYLE","autoByDefault","filterLabel","legendLabel","xLabel","yLabel","zLabel","xValueLabel","yValueLabel","zValueLabel","showXAxis","showYAxis","showZAxis","showGrid","showPerspective","showShadow","keepAspectRatio","verticalRatio","dotSizeRatio","showAnimationControls","animationInterval","animationPreload","animationAutoStart","axisColor","gridColor","xCenter","yCenter","DOT","tooltip","tooltipStyle","padding","borderRadius","boxShadow","line","borderLeft","dot","showLegend","backgroundColor","dataColor","fill","stroke","strokeWidth","cameraPosition","horizontal","vertical","distance","xBarWidth","yBarWidth","valueMin","valueMax","xMin","xMax","xStep","yMin","yMax","yStep","zMin","zMax","zStep","_setScale","xRange","range","yRange","zRange","z","valueRange","center","zCenter","camera","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","cameraLocation","getCameraLocation","cameraRotation","getCameraRotation","ax","ay","az","cx","cy","cz","sinTx","sin","cosTx","cos","sinTy","cosTy","sinTz","cosTz","bx","by","ex","eye","ey","ez","dx","dy","dz","getArmLength","currentXCenter","frame","canvas","currentYCenter","_calcTranslations","points","trans","screen","transBottom","bottom","dist","sortDepth","getNumberOfRows","getNumberOfColumns","counter","column","getDistinctValues","distinctValues","getSmallestDifference","smallest_diff","getColumnRange","_checkValueField","BARCOLOR","BARSIZE","DOTCOLOR","DOTSIZE","_setRangeDefaults","defaultMin","defaultMax","_dataInitialize","rawData","_onChange","withBars","BAR","defaultXBarWidth","defaultYBarWidth","expand","defaultXMin","defaultXMax","defaultXStep","defaultYMin","defaultYMax","defaultYStep","defaultZMin","defaultZMax","defaultZStep","defaultValueMin","defaultValueMax","dataFilter","setOnLoadCallback","redraw","_getDataPoints","GRID","SURFACE","dataX","dataY","sortNumber","dataMatrix","xIndex","yIndex","pointRight","pointTop","pointCross","LINE","pointNext","noCanvas","fontWeight","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onclick","_onClick","_setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","getCameraPosition","getArmRotation","_readData","_redrawFilter","setPointDrawingMethod","_redrawBarGraphPoint","_redrawBarColorGraphPoint","_redrawBarSizeGraphPoint","_redrawDotGraphPoint","DOTLINE","_redrawDotLineGraphPoint","_redrawDotColorGraphPoint","_redrawDotSizeGraphPoint","_redrawSurfaceGraphPoint","_redrawGridGraphPoint","_redrawLineGraphPoint","_pointDrawingMethod","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGraph","_redrawInfo","_redrawLegend","_getContext","getContext","lineJoin","lineCap","clearRect","_dotSize","_getLegendWidth","dotSize","isSizeLegend","isValueLegend","margin","lineWidth","font","ymax","hue","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","widthMin","fillStyle","closePath","legendMin","legendMax","start","end","getCurrent","_line","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","drawAxisLabelX","text","armAngle","yMargin","point2d","drawAxisLabelY","drawAxisLabelZ","_line3d","from2d","to2d","prettyStep","xText","yText","zText","gridLenX","gridLenY","textMargin","armVector","from3d","xMin2d","xMax2d","H","V","Hi","X","_getStrokeWidth","_redrawBar","xWidth","yWidth","borderColor","surface","surfaces","corners","avg","transCenter","_polygon","_drawCircle","radius","_calcRadius","arc","PI","_getColorsRegular","_getColorsColor","_getColorsSize","colors","fraction","cross","topSideVisible","showGrayBottom","aDiff","bDiff","crossproduct","crossProduct","zAvg","_drawGridLine","_storeMousePosition","startMouseX","startMouseY","_startCameraOffset","getOffset","leftButtonDown","_onMouseUp","which","button","touchDown","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","moving","diffX","diffY","ctrlKey","scaleX","scaleY","offXNew","armLength","offYNew","setOffset","horizontalNew","verticalNew","snapValue","setArmRotation","parameters","emit","onclick_callback","boundingRect","mouseX","mouseY","dataPoint","_dataPointFromXY","showTooltip","tooltipTimeout","_hideTooltip","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","wheelDelta","detail","oldLength","newLength","setArmLength","_insideTriangle","triangle","bs","cs","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","dom","contentWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","setCameraPosition","setSize","assign","$assign","A","K","aLen","mixin","_callbacks","once","removeListener","removeAllListeners","callbacks","cb","listeners","hasListeners","sub","sum","armLocation","armRotation","cameraOffset","offsetMultiplier","calculateCameraOrientation","_sign","_sign2","mul","rot","xa","za","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","getValue","dataView","progress","prev","bar","MozBorderRadius","slide","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","precision","_current","setRange","isNumeric","setStep","calculatePrettyStep","log10","log","LN10","step1","step2","step5","toPrecision","getStep","checkFirst","combine","newMin","newMax","isEmpty","capitalize","str","prefixFieldName","fieldName","forceCopy","dst","srcKey","dstKey","safeCopy","OPTIONKEYS","PREFIXEDOPTIONKEYS","setSpecialSettings","setBackgroundColor","setDataColor","setStyle","setShowLegend","isLegendGraphStyle","getStyleNumberByName","styleName","STYLENAME","checkStyleNumber","valid","styleNumber","borderWidth","borderStyle","camPos","dot-line","dot-color","dot-size","grid","bar-color","bar-size","propagating","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_firstTarget","hammer","events","propagatedHandler","srcEvent","_handled","stopped","stopPropagation","srcStop","bind","firstTarget","elemHammer","_handlers","Manager","PropagatingHammer","wrapper","pointerType","isFirst","handler","eventType","hammers","idx","exportName","setTimeoutContext","timeout","bindFn","invokeArrayArg","each","message","deprecationMessage","inherit","child","properties","childP","baseP","_super","boolOrFn","TYPE_FUNCTION","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","inStr","find","inArray","findByKey","uniqueArray","results","prefixed","property","camelProp","VENDOR_PREFIXES","uniqueId","_uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","Input","manager","inputTarget","domHandler","ev","enable","init","createInputInstance","inputClass","SUPPORT_POINTER_EVENTS","PointerEventInput","SUPPORT_ONLY_TOUCH","TouchInput","SUPPORT_TOUCH","TouchMouseInput","MouseInput","inputHandler","pointersLen","pointers","changedPointersLen","changedPointers","INPUT_START","isFinal","INPUT_END","INPUT_CANCEL","session","computeInputData","recognize","prevInput","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","timeStamp","deltaTime","angle","getAngle","getDistance","computeDeltaXY","offsetDirection","getDirection","deltaX","deltaY","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","getScale","rotation","getRotation","maxPointers","computeIntervalInputData","offsetDelta","prevDelta","velocity","velocityX","velocityY","last","lastInterval","COMPUTE_INTERVAL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","PROPS_XY","atan2","PROPS_CLIENT_XY","evEl","MOUSE_ELEMENT_EVENTS","evWin","MOUSE_WINDOW_EVENTS","pressed","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","pointerEvents","SingleTouchInput","evTarget","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","started","normalizeSingleTouches","all","touches","changed","changedTouches","TOUCH_TARGET_EVENTS","targetIds","getTouches","allTouches","INPUT_MOVE","identifier","changedTargetTouches","touch","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","removeLastTouch","DEDUP_TIMEOUT","isSyntheticEvent","DEDUP_DISTANCE","TouchAction","cleanTouchActions","actions","TOUCH_ACTION_NONE","hasPanX","TOUCH_ACTION_PAN_X","hasPanY","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_AUTO","Recognizer","state","STATE_POSSIBLE","simultaneous","requireFail","stateStr","STATE_CANCELLED","STATE_ENDED","STATE_CHANGED","STATE_BEGAN","directionStr","getRecognizerByNameIfManager","otherRecognizer","recognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","recognizers","preset","handlers","oldCssProps","touchAction","toggleCssProps","recognizeWith","requireFailure","cssProps","triggerDomEvent","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","TEST_ELEMENT","nextKey","dest","merge","MOBILE_REGEX","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TOUCH_INPUT_MAP","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","compute","getTouchAction","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","STATE_RECOGNIZED","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","force","curRecognizer","existing","STATE_FAILED","Tap","Pan","Swipe","Pinch","Rotate","Press","_exportFunctions","_bound","keydown","keyup","fromCharCode","down","handleEvent","up","keyCode","bound","shiftKey","bindAll","getKey","unbind","newBindings","Timeline","Graph2d","timeline","Core","DateUtil","TimeStep","components","Item","BackgroundItem","BoxItem","PointItem","RangeItem","BackgroundGroup","Component","CurrentTime","CustomTime","DataAxis","DataScale","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","groups","forthArgument","throttleRedraw","defaultOptions","autoResize","orientation","axis","maxHeight","minHeight","rtl","directionFromDom","domNode","getComputedStyle","parentElement","rollingMode","domProps","emitter","hiddenDates","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis2","currentTime","itemSet","itemsData","groupsData","getEventProperties","ondblclick","oncontextmenu","onmouseover","fitDone","getItemRange","setWindow","animation","fit","setGroups","setItems","_redraw","_Configurator","_Configurator2","_Validator","_Validator2","printStyle","allOptions","configureOptions","_createConfigurator","markDirty","refreshItems","validate","selection","getSelection","setSelection","newDataSet","group","focus","itemData","dataset","getDataRange","minItem","maxItem","getStart","getEnd","factor","groupShowing","show","repositionX","startSide","getWidthRight","endSide","getWidthLeft","lhs","rhs","centerContainer","itemFromTarget","groupFromTarget","customTime","customTimeFromTarget","snap","snappedTime","what","foreground","labelSet","groupId","pageX","pageY","toggleRollingMode","rolling","stopRolling","startRolling","_classCallCheck2","_classCallCheck3","_createClass2","_createClass3","_ColorPicker","_ColorPicker2","Configurator","parentModule","defaultContainer","pixelRatio","changedOptions","allowCreation","initialized","popupCounter","showButton","moduleOptions","domElements","popupDiv","popupLimit","popupHistory","colorPicker","_removePopup","_clean","_this","_handleObject","_makeItem","_makeHeader","generateButton","_printOptions","onmouseout","optionsContainer","_push","_showPopupIfNeeded","path","_len","_key","div","objectLabel","select","selectedValue","selected","_update","_makeLabel","popupString","popupValue","oninput","itemIndex","_setupPopup","_this2","html","hideTimeout","deleteTimeout","_this3","correspondingElement","checkbox","checked","_this4","defaultColor","_showColorPicker","_this5","insertTo","setColor","setUpdateCallback","colorString","setCloseCallback","checkOnly","visibleInSet","subObj","newPath","_getValue","_handleArray","_makeTextInput","_makeCheckbox","draw","physics","solver","enabledPath","enabledValue","_label","error","_makeColorField","_makeDropdown","_makeRange","_constructOptions","optionsObj","pointer","getOptions","instance","_defineProperty","_defineProperty2","protoProps","staticProps","desc","hammerUtil","ColorPicker","generated","centerCoordinates","hueCircle","initialColor","previousColor","applied","updateCallback","closeCallback","_bindHammer","htmlColors","black","navy","darkblue","mediumblue","darkgreen","teal","darkcyan","deepskyblue","darkturquoise","mediumspringgreen","lime","springgreen","aqua","cyan","midnightblue","dodgerblue","lightseagreen","forestgreen","seagreen","darkslategray","limegreen","mediumseagreen","turquoise","royalblue","steelblue","darkslateblue","mediumturquoise","indigo","darkolivegreen","cadetblue","cornflowerblue","mediumaquamarine","dimgray","slateblue","olivedrab","slategray","lightslategray","mediumslateblue","lawngreen","chartreuse","aquamarine","maroon","purple","olive","gray","skyblue","lightskyblue","blueviolet","darkred","darkmagenta","saddlebrown","darkseagreen","lightgreen","mediumpurple","darkviolet","palegreen","darkorchid","yellowgreen","sienna","brown","darkgray","lightblue","greenyellow","paleturquoise","lightsteelblue","powderblue","firebrick","darkgoldenrod","mediumorchid","rosybrown","darkkhaki","silver","mediumvioletred","indianred","peru","chocolate","tan","lightgrey","palevioletred","thistle","orchid","goldenrod","crimson","gainsboro","plum","burlywood","lightcyan","lavender","darksalmon","violet","palegoldenrod","lightcoral","khaki","aliceblue","honeydew","azure","sandybrown","wheat","beige","whitesmoke","mintcream","ghostwhite","salmon","antiquewhite","linen","lightgoldenrodyellow","oldlace","fuchsia","magenta","deeppink","orangered","tomato","hotpink","coral","darkorange","lightsalmon","orange","lightpink","pink","gold","peachpuff","navajowhite","moccasin","bisque","mistyrose","blanchedalmond","papayawhip","lavenderblush","seashell","cornsilk","lemonchiffon","floralwhite","snow","yellow","lightyellow","ivory","white","setInitial","htmlColor","_isColorString","rgbaArray","_rgbaArray","rgbObj","alpha","_setColor","_generateHueCircle","_hide","_updatePicker","alert","angleConvert","colorPickerSelector","colorPickerCanvas","pixelRation","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","putImageData","circle","brightnessRange","opacityRange","initialColorDiv","newColorDiv","colorPickerDiv","opacityDiv","brightnessDiv","arrowDiv","_setOpacity","_setBrightness","brightnessLabel","opacityLabel","cancelButton","applyButton","_apply","saveButton","_save","loadButton","_loadLast","drag","pinch","onTouch","_moveSelector","sat","sfac","fillRect","getImageData","centerY","centerX","newTop","newLeft","onRelease","offTouch","offRelease","disablePreventDefaultVertically","pinchRecognizer","errorFound","Validator","referenceOptions","subObject","usedOptions","check","__any__","getSuggestion","__type__","checkFields","referenceOption","refOptionObj","optionType","refOptionType","print","printLocation","localSearch","findInOptions","globalSearch","indexMatch","closestMatch","recursive","closestMatchPath","lowerCaseOption","op","levenshteinDistance","_j","_j2","matrix","deltaDifference","scaleOffset","startToFront","endToFront","moveable","zoomable","zoomMin","zoomMax","animationTimer","_onDragStart","_onDrag","_onDragEnd","_onMouseWheel","_onTouch","_onPinch","rollingModeBtn","validateDirection","conversion","currentTimeTimer","byUser","finalStart","finalEnd","_cancelAnimation","initStart","initEnd","easingName","easingFunction","initTime","anyChanged","dragging","ease","_applyRange","updateHiddenDates","getMillisecondsPerPixel","newStart","newEnd","getRange","totalHidden","previousDelta","_isInsideRange","allowDragging","getHiddenDurationBetween","diffRange","safeStart","snapAwayFromHidden","safeEnd","startDate","endDate","zoomKey","horizontalScroll","pointerDate","getPointer","_pointerToDate","zoom","centerDate","hiddenDuration","hiddenDurationBefore","getHiddenDurationBefore","hiddenDurationAfter","move","_isResized","resized","_previousWidth","_previousHeight","convertHiddenOptions","repeat","dateItem","totalRange","pixelTime","runUntil","dayOffset","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","safeDates","printDates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","switchedYear","switchedMonth","switchedDay","hiddenBeforeStart","getHiddenDurationBeforeStart","rangeAfterEnd","correctTimeForHidden","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","timeOffset","requiredDuration","previousPoint","correctionEnabled","Activator","onMouseWheel","isActive","verticalScroll","scrollTop","adjusted","_setScrollTop","onMouseScrollSide","handleDragOver","itemAddedToTimeline","dataTransfer","dropEffect","handleDrop","getData","_onAddItem","backgroundVertical","backgroundHorizontal","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","scrollTopMin","initialDrawDone","_origRedraw","initialItemSetDrawn","customTimes","redrawCount","drawPoints","onRender","clickToUse","activator","_initAutoResize","component","configurator","configure","appliedOptions","setModuleOptions","active","_stopAutoResize","setCustomTime","getCustomTime","setCustomTimeTitle","title","setCustomTitle","addCustomTime","timestamp","removeCustomTime","getVisibleItems","getWindow","zoomIn","percentage","newInterval","zoomOut","borderRootHeight","borderRootWidth","autoHeight","containerHeight","scrollbarWidth","_setDOM","_updateScrollTop","visibilityTop","visibilityBottom","contentsOverflow","centerWidth","repaint","setCurrentTime","getCurrentTime","_startAutoResize","_onResize","lastWidth","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","align","stackSubgroups","groupOrderSwap","fromGroup","toGroup","targetOrder","groupOrder","selectable","multiselect","itemsAlwaysDraggable","editable","updateTime","updateGroup","overrideItems","groupEditable","onAdd","onUpdate","onMove","onRemove","onMoving","onAddGroup","onMoveGroup","onRemoveGroup","followMouse","overflowMethod","tooltipOnItemUpdateTime","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","stackDirty","popup","touchParams","groupTouchParams","_Popup","_Popup2","UNGROUPED","BACKGROUND","box","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","groupHammer","_onGroupClick","_onGroupDragStart","_onGroupDrag","_onGroupDragEnd","_onMouseOver","_onMouseOut","addCallback","dirty","displayed","unselect","rawVisibleItems","visibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","scrolled","lastRangeStart","restack","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","nestedGroups","nestedGroupId","updatedNestedGroup","nestedInGroup","showNested","_order","getGroups","removeItem","_getType","_removeItem","groupData","groupOptions","_orderNestedGroups","newGroupIdsOrder","nestedGroup","nestedGroupIds","oldGroupId","oldSubGroupId","subgroup","oldGroup","_constructByEndArray","endArray","dragLeftItem","dragRightItem","itemProps","_getGroupIndex","itemIsDragging","selectedItem","initialX","dragLeft","_cloneItemData","dragRight","baseGroupIndex","itemsToDrag","groupIndex","groupOffset","metaKey","_onDragStartAddItem","xAbs","newItem","offsetLeft","updateGroupAllowed","newGroupBase","initial","initialEnd","initialStart","newOffset","_moveToGroup","collapsedDirClassName","originalOrder","movingUp","targetGroupTop","draggedGroupHeight","targetGroup","draggedGroup","newOrder","origOrder","draggedId","numGroups","curPos","orgOffset","slippedPosition","switchGroup","shouldBeGroup","switchGroupId","oldSelection","newSelection","itemFromRelatedTarget","getTitle","setText","setPosition","offsetTop","_onUpdateItem","newItemData","itemGroup","lastSelectedGroup","multiselectPerGroup","_getItemRange","_item","itemFromElement","cur","relatedTarget","itemSetFromTarget","Popup","Element","doShow","maxWidth","isLeft","isTop","minimumStep","autoScale","FORMAT","minorLabels","majorLabels","setMoment","setFormat","setMinimumStep","roundToMinor","hasNext","setScale","setAutoScale","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","isMajor","getLabelMinor","getLabelMajor","getClassName","even","today","_moment","currentMonth","subgroups","subgroupIndex","subgroupOrderer","subgroupOrder","isVisible","itemsInRange","byStart","byEnd","checkRangedItems","marker","templateFunction","paddingRight","paddingLeft","getLabelWidth","markerHeight","lastMarkerHeight","_calculateSubGroupHeights","_isGroupVisible","customOrderedItems","_updateItemsInRange","nostack","_updateSubgroupsSizes","_calculateHeight","repositionY","resetSubgroups","setParent","orderSubgroups","_checkIfVisible","sortArray","sortField","removeFromDataSet","startArray","orderByStart","orderByEnd","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","searchFunction","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","collidingItem","jj","collision","otherSubgroup","collisionByTimes","baseClassName","visibleFrame","_updateContents","_updateDataAttributes","_updateStyle","_repaintOnItemUpdateTimeTooltip","_repaintDeleteButton","_repaintDragCenter","_repaintDragLeft","_repaintDragRight","limitSize","contentStartPosition","parentWidth","boxWidth","_updateEditStatus","dragCenter","dragCenterItem","deleteButton","onItemUpdateTimeTooltip","itemDistanceFromTop","template","itemVisibleFrameContent","visibleFrameTemplateFunction","frameElement","itemVisibleFrameContentElement","getElementsByClassName","visibleFrameTemplate","_contentToString","dataAttributes","attributes","setAttribute","removeAttribute","outerHTML","widthInMs","previousRight","previousLeft","itemSetHeight","marginLeft","marginRight","itemSubgroup","lines","majorTexts","minorTexts","lineTop","showMinorLabels","showMajorLabels","maxMinorChars","parentChanged","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineHeight","minorLineWidth","majorLineHeight","majorLineWidth","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","minorCharWidth","xNext","prevWidth","labelMinor","xFirstMajorLabel","showMinorGrid","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","warnedForOverflow","leftTime","leftText","widthText","majorCharWidth","pop","createTextNode","childNodes","measureCharMinor","measureCharMajor","overlay","_onTapOverlay","onClick","_hasParent","deactivate","escListener","activate","eventParams","warned","substring","elementsCensor","showCurrentTime","bool","boolean","function","any","null","groupsDraggable","linegraph","initialLoad","getLegend","isGroupVisible","yAxisLeft","yAxisRight","legendLeft","legendRight","screenToValue","yAxisOrientation","defaultGroup","sampling","graphHeight","shaded","barChart","sideBySide","interpolation","parametrization","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","forceGraphUpdate","lastStart","svgElements","groupsUsingDefaultStyles","svg","framework","Bars","Lines","Points","_removeGroup","_updateAllGroupData","removeGroup","_updateGroup","addGroup","groupsContent","idMap","groupCounts","existing_items","extended","orginalY","_updateGraph","rangePerPixelInv","_getSortedGroupIds","grouplist","zIndex","bz","groupRanges","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","below","excludeFromStacking","_stack","_convertYcoordinates","calcPath","subGroupId","drawShading","subData","subPrevPoint","subNextPoint","dateComparator","first","dataContainer","increment","amountOfPoints","xDistance","pointsPerPixel","sampledData","combinedDataLeft","combinedDataRight","getYRange","getStackedYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","master","masterAxis","lineOffset","tempGroups","axisUsed","datapoints","screen_x","screen_y","screen_end","svgHeight","convertValue","setZeroPosition","linegraphOptions","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","alignZeros","linegraphSVG","DOMelements","labels","conversionFactor","minWidth","stepPixels","zeroCrossing","amountOfSteps","iconsRemoved","amountOfGroups","lineContainer","graphOptions","_redrawGroupIcons","iconOffset","groupArray","iconHeight","_cleanupIcons","activeGroups","_redrawLabels","_redrawTitle","customRange","autoScaleEnd","autoScaleStart","followScale","maxLabelSize","getLines","major","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","characterHeight","largestWidth","textMinor","textMajor","textTitle","measureCharTitle","titleCharWidth","zeroAlign","formattingFunction","majorSteps","minorSteps","customLines","minorStepIdx","magnitudefactor","determineScale","rounded","setCharHeight","setHeight","minimumStepValue","orderOfMagnitude","solutionFound","is_major","getFirstMajor","majorStep","formatValue","bottomOffset","oldStepIdx","oldStart","oldEnd","increaseMagnitude","decreaseMagnitude","otherZero","otherStep","newRange","myOriginalZero","majorOffset","zeroOffset","pixels","usingDefaultStyle","zeroPosition","drawIcon","icon","Bargraph","fillHeight","outline","barWidth","originalWidth","bar1Height","bar2Height","processedGroupData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","amount","resolved","accumulatedNegative","accumulatedPositive","dataWidth","pointData","groupLabel","_getStackedYRange","xpos","getGroupTemplate","callbackResult","getCallback","Line","_catmullRom","_linear","fillPath","pathArray","subPathArray","dFill","zero","serializePath","inverse","_catmullRomUniform","p0","bp1","bp2","d1","d2","d3","N","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","side","iconSize","iconSpacing","excludeFromLegend","textArea","scrollableHeight","drawLegendIcons","paddingTop","Network","network","Images","dotparser","gephiParser","convertDot","DOTToGraph","convertGephi","parseGephi","nodes","nodeIndices","edges","edgeIndices","eventListeners","onTap","onDoubleTap","onHold","onDragStart","onDrag","onDragEnd","onPinch","onMouseMove","onContext","functions","createNode","createEdge","view","bindEventListeners","images","_Images2","_Groups2","_Canvas2","selectionHandler","_SelectionHandler2","interactionHandler","_InteractionHandler2","_View2","renderer","_CanvasRenderer2","_PhysicsEngine2","layoutEngine","_LayoutEngine2","clustering","_Clustering2","manipulation","_ManipulationSystem2","nodesHandler","_NodesHandler2","edgesHandler","_EdgesHandler2","_KamadaKawai2","_Images","_Groups","_NodesHandler","_EdgesHandler","_PhysicsEngine","_Clustering","_CanvasRenderer","_Canvas","_View","_InteractionHandler","_SelectionHandler","_LayoutEngine","_ManipulationSystem","_KamadaKawai","layout","interaction","networkOptions","_updateVisibleIndices","nodeId","edgeId","_updateValueRange","unselectAll","dotData","gephi","gephiData","valueTotal","setValueRange","canvasToDOM","DOMtoCanvas","findNode","isCluster","openCluster","cluster","getNodesInCluster","clusterByConnection","clusterByHubsize","clusterOutliers","getSeed","enableEditMode","disableEditMode","addNodeMode","editNode","editNodeMode","addEdgeMode","editEdgeMode","deleteSelected","getPositions","storePositions","moveNode","getBoundingBox","getConnectedNodes","objectId","getConnectedEdges","startSimulation","stopSimulation","stabilize","getSelectedNodes","getSelectedEdges","getNodeAt","getEdgeAt","edge","selectNodes","selectEdges","getViewPosition","releaseNode","getOptionsFromConfigurator","imageBroken","url","imageToCache","brokenUrl","imageToLoadBrokenUrlOn","onerror","_addImageToCache","Image","imageToRedrawWith","cachedImage","img","onload","_redrawWithImage","_tryloadBrokenUrl","Groups","defaultIndex","groupsArray","defaultGroups","useDefaultGroups","optionFields","groupName","groupname","_index","_Node","_Node2","_Label","_Label2","NodesHandler","nodesListeners","borderWidthSelected","brokenImage","fixed","face","strokeColor","vadjust","multi","bold","mod","boldital","ital","mono","image","labelHighlightBold","level","mass","scaling","maxVisible","drawThreshold","customScalingFunction","shadow","shape","shapeProperties","borderDashes","useImageSize","useBorderWithImage","nodeOptions","parseOptions","updateShape","updateLabelModule","_reset","_nodeId2","doNotEmit","oldNodesData","newNodes","positionInitially","changedData","dataChanged","clearPositions","dataArray","_node","_node2","boundingBox","nodeList","nodeObj","toId","fromId","edgeList","_Box","_Box2","_Circle","_Circle2","_CircularImage","_CircularImage2","_Database","_Database2","_Diamond","_Diamond2","_Dot","_Dot2","_Ellipse","_Ellipse2","_Icon","_Icon2","_Image","_Image2","_Square","_Square2","_Star","_Star2","_Text","_Text2","_Triangle","_Triangle2","_TriangleDown","_TriangleDown2","Node","imagelist","baseSize","baseFontSize","predefinedPosition","labelModule","currentShape","groupObj","choosify","imageObj","load","unselected","imageObjAlt","propagateFonts","chooser","chosen","chosenNode","shadowColor","shadowSize","shadowX","shadowY","constrain","distanceToBorder","sizeDiff","fontDiff","getFormattingValues","updateBoundingBox","resize","parentOptions","newOptions","parsedColor","_slicedToArray2","_slicedToArray3","Label","edgelabel","pointToSelf","fontOptions","yLine","isEdgeLabel","elementOptions","labelDirty","constrainWidth","maxWdt","minWdt","widthConstraint","widthConstraintMaximum","widthConstraintMinimum","constrainHeight","minHgt","valign","heightConstraint","heightConstraintMinimum","heightConstraintValign","chosenLabel","margins","widthBias","heightBias","mods","optionsFontMod","modOptionsArray","ratio","_ratio","baseline","viewFontSize","calculateLabelSize","_drawBackground","_drawText","fontSize","_setAlignment2","_setAlignment","_setAlignment3","labelHeight","lineCount","blocks","block","_getColor2","_getColor","_getColor3","fontColor","strokeText","initialStrokeColor","_processLabel","markupSystem","system","decodeMarkupSystem","splitMarkdownBlocks","splitHtmlBlocks","beginable","spacing","buffer","modStack","modName","emitBlock","ch","unshift","selectedState","hoverState","accumulate","addAndAccumulate","_nlLines","splitBlocks","_values","words","atStart","measure","lastMeasure","pre","measureText","_values2","_measure","_values3","_words","_text","_measure2","_lastMeasure","_pre","_text2","_measure3","newOptionsArray","_isIterable2","_isIterable3","sliceIterator","_arr","_n","_e","_s","isIterable","_getPrototypeOf","_getPrototypeOf2","_possibleConstructorReturn2","_possibleConstructorReturn3","_inherits2","_inherits3","_NodeBase2","_NodeBase3","Box","_NodeBase","__proto__","_setMargins","differentState","textSize","getTextSize","roundRect","enableShadow","disableShadow","save","enableBorderDashes","disableBorderDashes","restore","$getPrototypeOf","ReferenceError","_setPrototypeOf","_setPrototypeOf2","subClass","superClass","setPrototypeOf","buggy","NodeBase","adjustSizes","shadowBlur","shadowOffsetX","shadowOffsetY","setLineDash","dashes","_CircleImageBase2","_CircleImageBase3","Circle","_CircleImageBase","diameter","_drawRawCircle","CircleImageBase","labelOffset","imageLoaded","setImages","imageTmp","globalAlpha","can2","ctx2","drawImage","iterations","labelDimensions","CircularImage","_swapToImageResizeWhenImageLoaded","_resizeImage","switchImages","clip","_drawImageAtPosition","_drawImageLabel","Database","database","_distanceToBorder","_ShapeBase2","_ShapeBase3","Diamond","_ShapeBase","_resizeShape","_drawShape","ShapeBase","sizeMultiplier","Dot","Ellipse","ellipse","Icon","_icon","neutralborderWidth","selectionLineWidth","Square","Star","Text","Triangle","TriangleDown","_Edge","_Edge2","EdgesHandler","edgesListeners","arrows","scaleFactor","arrowStrikethrough","hoverWidth","selectionWidth","selfReferenceSize","smooth","forceDirection","roundness","emitChange","edgeData","edgeOptions","reconnectEdges","updateEdgeType","_edgeId","oldEdgesData","edgesData","oldEdge","disconnect","showInternalIds","connect","cleanup","_CubicBezierEdge","_CubicBezierEdge2","_BezierEdgeDynamic","_BezierEdgeDynamic2","_BezierEdgeStatic","_BezierEdgeStatic2","_StraightEdge","_StraightEdge2","Edge","baseWidth","edgeType","connected","_setInteractionWidths","chosenEdge","toArrow","fromArrow","middleArrow","inheritsColor","toArrowScale","toArrowType","middleArrowScale","middleArrowType","fromArrowScale","fromArrowType","selectedWidth","changeInType","attachEdge","detachEdge","widthDiff","viaNode","getViaNode","arrowData","fromPoint","toPoint","getArrowData","drawLine","drawArrows","drawLabel","drawArrowHead","node1","node2","getPoint","translate","_rotateForLabelAlignment","_pointOnCircle","xFrom","yFrom","xTo","yTo","xObj","yObj","getDistanceToEdge","angleInDegrees","rotate","colorsDefined","_CubicBezierEdgeBase2","_CubicBezierEdgeBase3","CubicBezierEdge","_CubicBezierEdgeBase","viaNodes","via1","via2","bezierCurveTo","x1","y1","x2","y2","_getViaCoordinates","nearNode","_findBorderPositionBezier","x3","y3","_ref","_ref2","_getDistanceToBezierEdge","_ref3","_ref4","vec","_BezierEdgeBase2","_BezierEdgeBase3","CubicBezierEdgeBase","_BezierEdgeBase","minDistance","lastX","lastY","_getDistanceToLine","_EdgeBase2","_EdgeBase3","BezierEdgeBase","_EdgeBase","distanceToPoint","difference","via","EdgeBase","colorDirty","getColor","_drawDashedLine","_drawLine","_getCircleData2","_getCircleData","_getCircleData3","_circle","pattern","lineDashOffset","_getCircleData4","_getCircleData5","dashedLine","_getCircleData6","_getCircleData7","_x","_y","_radius","_findBorderPosition","_findBorderPositionCircle","_getCircleData8","_getCircleData9","grd","createLinearGradient","fromColor","toColor","addColorStop","_getDistanceToEdge","_getCircleData10","_getCircleData11","py","something","arrowPoint","guideOffset","findBorderPosition","guidePos","_getCircleData12","_getCircleData13","circleEndpoint","arrowEndpoint","BezierEdgeDynamic","_boundFunction","positionBezierNode","physicsChange","setupSupportNode","parentEdgeId","quadraticCurveTo","cr","BezierEdgeStatic","xVia","yVia","pi","originalAngle","myAngle","_pi","_originalAngle","_myAngle","StraightEdge","edgeSegmentLength","toBorderDist","toBorderPoint","borderPos","_BarnesHutSolver","_BarnesHutSolver2","_RepulsionSolver","_RepulsionSolver2","_HierarchicalRepulsionSolver","_HierarchicalRepulsionSolver2","_SpringSolver","_SpringSolver2","_HierarchicalSpringSolver","_HierarchicalSpringSolver2","_CentralGravitySolver","_CentralGravitySolver2","_FA2BasedRepulsionSolver","_FA2BasedRepulsionSolver2","_FA2BasedCentralGravitySolver","_FA2BasedCentralGravitySolver2","PhysicsEngine","physicsBody","physicsNodeIndices","physicsEdgeIndices","forces","velocities","physicsEnabled","simulationInterval","requiresTimeout","previousStates","referenceState","freezeCache","renderTimer","adaptiveTimestep","adaptiveTimestepEnabled","adaptiveCounter","adaptiveInterval","stabilized","startedStabilization","stabilizationIterations","ready","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","avoidOverlap","forceAtlas2Based","repulsion","nodeDistance","hierarchicalRepulsion","maxVelocity","minVelocity","stabilization","updateInterval","onlyDynamicEdges","timestep","layoutFailed","initPhysics","updatePhysicsData","nodesSolver","edgesSolver","gravitySolver","modelOptions","viewFunction","simulationStep","_emitStabilized","startTime","physicsTick","runDoubleSpeed","amountOfIterations","calculateForces","moveNodes","revert","_evaluateStepQuality","nodeIds","positions","vx","vy","reference","maxNodeVelocity","averageNodeVelocity","nodeVelocity","_performStep","solve","targetIterations","_freezeNodes","_stabilizationBatch","_finalizeStabilization","_restoreFrozenNodes","forceSize","arrowSize","BarnesHutSolver","barnesHutTree","randomSeed","thetaInversed","overlapAvoidanceFactor","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","_calculateForces","gravityForce","fx","fy","minX","minY","maxX","maxY","rootSize","halfRootSize","_splitBranch","_placeInTree","totalMass","totalMassInv","biggestSize","skipMassUpdate","_updateBranchMass","_placeInRegion","region","seededRandom","containedNode","_insertRegion","childSize","_drawBranch","branch","RepulsionSolver","repulsingForce","HierarchicalRepulsionSolver","SpringSolver","edgeLength","node3","_calculateSpringForce","springForce","HierarchicalSpringSolver","springFx","springFy","_i2","totalFx","totalFy","_i3","correctionFx","correctionFy","_i4","_nodeId3","CentralGravitySolver","_BarnesHutSolver3","ForceAtlas2BasedRepulsionSolver","degree","_CentralGravitySolver3","ForceAtlas2BasedCentralGravitySolver","_NetworkUtil","_NetworkUtil2","_Cluster","_Cluster2","ClusterEngine","clusteredNodes","clusteredEdges","hubsize","_getHubSize","_checkOptions","nodesToCluster","refreshData","joinCondition","childNodesObj","childEdgesObj","clonedOptions","cloneOptions","_cluster","edgeCount","clusters","usedNodes","relevantEdgeCount","gatheringSuccessful","childNodeId","_getConnectedId","clusterByEdgeCount","clusterNodeProperties","parentNodeId","parentClonedOptions","childClonedOptions","childNodeIDs","childNode","childEdge","clusterEdgeProperties","otherNodeId","childKeys","createEdges","_edge","newEdge","clusteringEdgeReplacingId","edgeReplacedById","_backupEdgeOptions","allowSingleNodeCluster","processProperties","childNodesOptions","childEdgesOptions","_clonedOptions","clusterId","_getClusterPosition","clusterNode","containedNodes","containedEdges","_createClusterEdges","originalOptions","clusterNodeId","releaseFunction","clusterPosition","newPositions","_containedNode","_nodeId4","_containedNode2","_nodeId5","_containedNode3","edgesToBeDeleted","otherCluster","transferEdge","replacedEdge","_restoreEdge","nodesArray","reverse","clusteredNodeId","startEdgeId","allEdgeIds","getClusteredEdges","clusteredEdgeId","baseEdgeId","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","hubThreshold","NetworkUtil","allNodes","specificNodes","amountOfConnections","_Node3","Cluster","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","CanvasRenderer","redrawRequested","renderingActive","renderRequests","allowRedraw","hideEdgesOnDrag","hideNodesOnDrag","_determineBrowserMethod","_resizeNodes","_requestRedraw","_startRendering","cancelAnimationFrame","_renderStep","_drawEdges","_drawNodes","alwaysShow","topLeft","bottomRight","viewableArea","isSelected","isBoundingBoxOverlappingWith","browserType","Canvas","resizeTimer","resizeFunction","cameraState","canvasViewCenter","hammerFrame","_cleanUp","previousWidth","previousHeight","widthRatio","heightRatio","newScale","currentViewCenter","distanceFromCenter","tabIndex","_prepareValue","emitEvent","oldWidth","oldHeight","previousRatio","_getCameraState","_setCameraState","_XconvertCanvasToDOM","_YconvertCanvasToDOM","_XconvertDOMtoCanvas","_YconvertDOMtoCanvas","View","animationSpeed","renderRefreshRate","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","initialZoom","zoomLevel","positionDefined","yDistance","xZoomLevel","yZoomLevel","findCenter","animationOptions","nodePosition","lockedOnNode","animateView","locked","_transitionRedraw","viewCenter","_lockedRedraw","finished","_NavigationHandler","_NavigationHandler2","InteractionHandler","navigationHandler","popupObj","popupTimer","dragNodes","dragView","keyboard","speed","bindToWindow","navigationButtons","tooltipDelay","zoomView","pinched","checkSelectionChanges","_generateClickEvent","previouslySelectedEdgeCount","_getSelectedEdgeCount","previouslySelectedNodeCount","_getSelectedNodeCount","previousSelection","selectAdditionalOnPoint","selectOnPoint","selectedEdgesCount","selectedNodesCount","currentSelection","_determineIfDifferent2","_determineIfDifferent","nodesChanged","edgesChanged","nodeSelected","selectObject","selectionObj","xFixed","yFixed","scaleOld","preScaleDragPointer","scaleFrac","tx","ty","postScaleDragPointer","popupVisible","_checkHidePopup","_checkShowPopup","hoverObject","pointerObj","previousPopupObjId","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","overlappingEdges","popupTargetType","popupTargetId","_pointerToPositionObject","stillOnObj","overNode","NavigationHandler","iconsCreated","navigationHammers","boundFunctions","activated","configureKeyboardBindings","loadNavigationElements","cleanNavigation","navigationDOM","navigationDivs","navigationDivActions","_fit","bindToRedraw","_stopMovement","boundAction","unbindFromRedraw","SelectionHandler","hoverObj","selectConnectedEdges","hoverConnectedEdges","updateSelection","selectionChanged","deselectObject","emptySelection","DOM","highlightEdges","_selectConnectedEdges","_addToSelection","_removeFromSelection","canvasPos","returnNode","positionObject","_getAllNodesOverlappingWith","_getEdgesOverlappingWith","returnEdge","mindist","overlappingEdge","_unselectConnectedEdges","clusterSize","_addToHover","hoverChanged","blurObject","_hoverConnectedEdges","idArray","RangeError","LayoutEngine","initialRandomSeed","setPhysics","optionsBackup","improvedLayout","hierarchical","levelSeparation","nodeSpacing","treeSpacing","blockShifting","edgeMinimization","parentCentralization","sortMethod","setupHierarchicalLayout","layoutNetwork","prevHierarchicalState","adaptAllOptionsForHierarchicalLayout","startLength","before","clusterBridges","_declusterAll","info","kamadaKawai","_shiftToCenter","getRangeCore","clustersPresent","definedLevel","undefinedLevel","hierarchicalLevels","lastNodeOnLevel","hierarchicalChildrenReference","hierarchicalParentReference","hierarchicalTrees","treeIndex","distributionOrdering","distributionIndex","distributionOrderingPresence","_determineLevelsByHubsize","_determineLevelsDirected","_determineLevelsCustomCallback","distribution","_getDistribution","_generateMap","_placeNodesByHierarchy","_condenseHierarchy","stillShifting","branches","shiftTree","_getPositionForHierarchy","_setPositionForHierarchy","getTreeSize","getTreeSizes","treeWidths","getBranchNodes","getBranchBoundary","branchMap","maxLevel","minSpace","maxSpace","branchNode","_getSpaceAroundNode2","_getSpaceAroundNode","_getSpaceAroundNode3","minSpaceNode","maxSpaceNode","getMaxLevel","accumulator","_getMaxLevel","getCollisionLevel","maxLevel1","maxLevel2","hasSameParent","parents1","parents2","shiftElementsCloser","levels","centerParents","levelNodes","branchShiftCallback","centerParent","branchNodes1","branchNodes2","_getBranchBoundary","_getBranchBoundary2","max1","_getBranchBoundary3","_getBranchBoundary4","min2","minSpace2","_shiftBlock","_centerParent","minimizeEdgeLength","allEdges","nodeLevel","C2","referenceNodes","aboveEdges","otherNode","getFx","getDFx","getGuess","guess","guessMap","dfx","branchNodes","_getBranchBoundary5","_getBranchBoundary6","minSpaceBranch","maxSpaceBranch","branchOffset","_getSpaceAroundNode4","_getSpaceAroundNode5","newPosition","treeSizes","shiftBy","useMap","prevNode","nextNode","nextPos","parents","parentId","minPos","maxPos","_i5","_getSpaceAroundNode6","_getSpaceAroundNode7","positionedNodes","nodeArray","_indexArrayToNodes","_sortNodeArray","handledNodeCount","_validataPositionAndContinue","parentLevel","_i6","childNodeLevel","_i7","previousPos","sharedParent","_findCommonParent","withChild","_placeBranchNodes","hubSize","levelDownstream","nodeA","nodeB","_crawlNetwork","levelByDirection","_setMinLevelToZero","minLevel","_this6","fillInRelations","_this7","startingNodeId","crawler","tree","_this8","shifter","childA","childB","_this9","iterateParents","findParent","foundParent","ManipulationSystem","editMode","manipulationDiv","editModeDiv","closeDiv","manipulationHammers","temporaryUIFunctions","temporaryEventFunctions","temporaryIds","guiEnabled","inMode","selectedControlNode","initiallyActive","addNode","addEdge","editEdge","deleteNode","deleteEdge","controlNodeStyle","_restore","_setup","showManipulatorToolbar","_createEditButton","manipulationDOM","selectedNodeCount","selectedEdgeCount","selectedTotalCount","needSeperator","_createAddNodeButton","_createSeperator","_createAddEdgeButton","_createEditNodeButton","_createEditEdgeButton","_createDeleteButton","_bindHammerToDiv","toggleEditMode","_temporaryBindEvent","_createBackButton","_createDescription","_performAddNode","_getSelectedNode","finalizedData","_temporaryBindUI","_handleConnect","_finishConnect","_dragControlNode","editWithoutDrag","edgeBeingEditedId","_performEditEdge","controlNodeFrom","_getNewTargetNode","controlNodeTo","_controlNodeTouch","_controlNodeDragStart","_controlNodeDrag","_controlNodeDragEnd","findBorderPositions","selectedNodes","selectedEdges","deleteFunction","_createWrappers","_removeManipulationDOM","_createButton","_cleanManipulatorHammers","_cleanupTemporaryNodesAndEdges","_unbindTemporaryUIs","_unbindTemporaryEvents","deleteBtnClass","labelClassName","newFunction","boundFunction","UIfunctionName","functionName","eventName","domElement","indexTempEdge","indexTempNode","fromSelect","toSelect","overlappingNodeIds","targetNode","connectionEdge","connectFromId","_performAddEdge","clickData","defaultData","sourceNodeId","targetNodeId","eeFunct","maximum","minimum","_FloydWarshall","_FloydWarshall2","KamadaKawai","edgeStrength","distanceSolver","edgesArray","ignoreClusters","D_matrix","getDistances","_createL_matrix","_createK_matrix","maxIterations","maxEnergy","highE_nodeId","dE_dx","dE_dy","delta_m","subIterations","_getHighestEnergyNode2","_getHighestEnergyNode","_getHighestEnergyNode3","_moveNode","_getEnergy2","_getEnergy","_getEnergy3","maxEnergyNodeId","dE_dx_max","dE_dy_max","nodeIdx","_getEnergy4","_getEnergy5","x_m","y_m","iIdx","x_i","y_i","denominator","K_matrix","L_matrix","d2E_dx2","d2E_dxdy","d2E_dy2","FloydWarshall","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","diamond","r2d","ox","oy","xe","ye","xm","ym","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","xc","yc","patternLength","slope","distRemaining","patternIndex","dashLength","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","setValue","graphs","attr","getToken","tokenType","TOKENTYPE","NULL","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","maxLength","forEach2","elem1","elem2","setProp","convertAttr","mapping","visProp","visPropI","graphData","dotNode","graphNode","NODE_ATTR_MAPPING","convertEdge","dotEdge","graphEdge","EDGE_ATTR_MAPPING","subEdge","fontsize","fontcolor","labelfontcolor","fontname","fillcolor","labeltooltip","{","}","[","]",";","=",",","->","--","gephiJSON","inheritColor","gEdges","gNodes","gEdge","gNode","edit","del","back","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","editClusterError"],"mappings":"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","file":"vis"} \ No newline at end of file diff --git a/dist/vis.min.css b/dist/vis.min.css index bb67cb35..f345ff53 100644 --- a/dist/vis.min.css +++ b/dist/vis.min.css @@ -1 +1 @@ -.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:12px}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration-wrapper::after{clear:both;content:"";display:block}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:700}div.vis-configuration.vis-config-label{width:120px;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:100px}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;padding:1px;margin:0;pointer-events:none}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid #fff;background-color:rgba(0,0,0,0);width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8', GradientType=0 );border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3876c2', endColorstr='#385380', GradientType=0 );box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#9d9d9d', endColorstr='#c8c8c8', GradientType=0 )}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8', GradientType=0 );border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:12px;margin-top:-12px}div.vis-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,.2);pointer-events:none;z-index:5}div.vis-color-picker{position:absolute;top:0;left:30px;margin-top:-140px;margin-left:30px;width:310px;height:444px;z-index:1;padding:10px;border-radius:15px;background-color:#fff;display:none;box-shadow:rgba(0,0,0,.5) 0 0 10px 0}div.vis-color-picker div.vis-arrow{position:absolute;top:147px;left:5px}div.vis-color-picker div.vis-arrow::after,div.vis-color-picker div.vis-arrow::before{right:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.vis-color-picker div.vis-arrow:after{border-color:rgba(255,255,255,0);border-right-color:#fff;border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{position:absolute;width:289px;height:289px;cursor:pointer}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{position:absolute;top:137px;left:137px;width:15px;height:15px;border-radius:15px;border:1px solid #fff;background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(to bottom,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4c4c4c', endColorstr='#131313', GradientType=0 )}div.vis-color-picker div.vis-initial-color,div.vis-color-picker div.vis-new-color{width:140px;height:20px;top:380px;font-size:10px;color:rgba(0,0,0,.4);line-height:20px;vertical-align:middle;position:absolute}div.vis-color-picker div.vis-new-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;left:159px;text-align:right;padding-right:2px}div.vis-color-picker div.vis-initial-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;left:10px;text-align:left;padding-left:2px}div.vis-color-picker div.vis-label{position:absolute;width:300px;left:10px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{position:absolute;width:68px;height:25px;border-radius:10px;vertical-align:middle;text-align:center;line-height:25px;top:410px;border:2px solid #d9d9d9;background-color:#f7f7f7;cursor:pointer}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{width:290px;height:20px}div.vis-network div.vis-manipulation{box-sizing:content-box;border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0 );padding-top:4px;position:absolute;left:0;top:0;width:100%;height:28px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:5px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-close:hover{opacity:.6}div.vis-network div.vis-edit-mode div.vis-button,div.vis-network div.vis-manipulation div.vis-button{float:left;font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin-left:10px;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-manipulation div.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.vis-network div.vis-manipulation div.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.vis-network div.vis-manipulation div.vis-button.vis-back{background-image:url(img/network/backIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.vis-network div.vis-manipulation div.vis-button.vis-none:active{box-shadow:1px 1px 8px transparent}div.vis-network div.vis-manipulation div.vis-button.vis-none{padding:0}div.vis-network div.vis-manipulation div.notification{margin:2px;font-weight:700}div.vis-network div.vis-manipulation div.vis-button.vis-add{background-image:url(img/network/addNodeIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit,div.vis-network div.vis-manipulation div.vis-button.vis-edit{background-image:url(img/network/editIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation div.vis-button.vis-connect{background-image:url(img/network/connectIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-delete{background-image:url(img/network/deleteIcon.png)}div.vis-network div.vis-edit-mode div.vis-label,div.vis-network div.vis-manipulation div.vis-label{margin:0 0 0 23px;line-height:25px}div.vis-network div.vis-manipulation div.vis-separator-line{float:left;display:inline-block;width:1px;height:21px;background-color:#bdbdbd;margin:0 7px 0 15px}div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}.vis-current-time{background-color:#FF7F6E;width:2px;z-index:1;pointer-events:none}.vis-rolling-mode-btn{height:40px;width:40px;position:absolute;top:7px;right:20px;border-radius:50%;font-size:28px;cursor:pointer;opacity:.8;color:#fff;font-weight:700;text-align:center;background:#3876c2}.vis-rolling-mode-btn:before{content:"\26F6"}.vis-rolling-mode-btn:hover{opacity:1}.vis-custom-time{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block}.vis-item.vis-point.vis-selected,.vis-item.vis-selected{background-color:#FFF785}.vis-item.vis-selected{border-color:#FFC200;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0 0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item-visible-frame{white-space:nowrap}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-onUpdateTime-tooltip{position:absolute;background:#4f81bd;color:#fff;width:200px;text-align:center;white-space:nowrap;padding:5px;border-radius:1px}.vis-item .vis-delete,.vis-item .vis-delete-rtl{position:absolute;top:0;width:24px;height:24px;box-sizing:border-box;padding:0 5px;cursor:pointer;-webkit-transition:background .2s linear;-moz-transition:background .2s linear;-ms-transition:background .2s linear;-o-transition:background .2s linear;transition:background .2s linear}.vis-item .vis-delete{right:-24px}.vis-item .vis-delete-rtl{left:-24px}.vis-item .vis-delete-rtl:after,.vis-item .vis-delete:after{content:"\00D7";color:red;font-family:arial,sans-serif;font-size:22px;font-weight:700;-webkit-transition:color .2s linear;-moz-transition:color .2s linear;-ms-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.vis-item .vis-delete-rtl:hover,.vis-item .vis-delete:hover{background:red}.vis-item .vis-delete-rtl:hover:after,.vis-item .vis-delete:hover:after{color:#fff}.vis-item .vis-drag-center{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.vis-item.vis-range .vis-drag-left,.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0}.vis-item.vis-range .vis-drag-left{left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{right:-4px;cursor:e-resize}.vis-range.vis-item.vis-readonly .vis-drag-left,.vis-range.vis-item.vis-readonly .vis-drag-right{cursor:auto}.vis-labelset .vis-label.draggable,.vis-nesting-group{cursor:pointer}.vis-itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:none}.vis-nested-group{background:#f5f5f5}.vis-label.vis-nesting-group.expanded:before{content:"\25BC"}.vis-label.vis-nesting-group.collapsed-rtl:before{content:"\25C0"}.vis-label.vis-nesting-group.collapsed:before{content:"\25B6"}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-labelset,.vis-labelset .vis-label{position:relative;box-sizing:border-box}.vis-labelset{overflow:hidden}.vis-labelset .vis-label{left:0;top:0;width:100%;color:#4d4d4d;border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label:last-child{border-bottom:none}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-panel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-left.vis-panel.vis-vertical-scroll,.vis-right.vis-panel.vis-vertical-scroll{height:100%;overflow-x:hidden;overflow-y:scroll}.vis-background,.vis-time-axis,.vis-timeline{overflow:hidden}.vis-left.vis-panel.vis-vertical-scroll{direction:rtl}.vis-left.vis-panel.vis-vertical-scroll .vis-content,.vis-right.vis-panel.vis-vertical-scroll{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll .vis-content{direction:rtl}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-top{border-left-style:solid;border-right-style:solid}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}.vis-time-axis{position:relative}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-vertical-rtl{position:absolute;border-right:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-timeline{position:relative;border:1px solid #bfbfbf;padding:0;margin:0;box-sizing:border-box} \ No newline at end of file +.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:12px}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration-wrapper::after{clear:both;content:"";display:block}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:700}div.vis-configuration.vis-config-label{width:120px;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:100px}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;padding:1px;margin:0;pointer-events:none}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid #fff;background-color:rgba(0,0,0,0);width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%)}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:none;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:12px;margin-top:-12px}div.vis-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,.2);pointer-events:none;z-index:5}div.vis-color-picker{position:absolute;top:0;left:30px;margin-top:-140px;margin-left:30px;width:310px;height:444px;z-index:1;padding:10px;border-radius:15px;background-color:#fff;display:none;box-shadow:rgba(0,0,0,.5) 0 0 10px 0}div.vis-color-picker div.vis-arrow{position:absolute;top:147px;left:5px}div.vis-color-picker div.vis-arrow::after,div.vis-color-picker div.vis-arrow::before{right:100%;top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.vis-color-picker div.vis-arrow:after{border-color:rgba(255,255,255,0);border-right-color:#fff;border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{position:absolute;width:289px;height:289px;cursor:pointer}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{position:absolute;top:137px;left:137px;width:15px;height:15px;border-radius:15px;border:1px solid #fff;background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(to bottom,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%)}div.vis-color-picker div.vis-new-color{position:absolute;width:140px;height:20px;border:1px solid rgba(0,0,0,.1);border-radius:5px;top:380px;left:159px;text-align:right;padding-right:2px;font-size:10px;color:rgba(0,0,0,.4);vertical-align:middle;line-height:20px}div.vis-color-picker div.vis-initial-color{position:absolute;width:140px;height:20px;border:1px solid rgba(0,0,0,.1);border-radius:5px;top:380px;left:10px;text-align:left;padding-left:2px;font-size:10px;color:rgba(0,0,0,.4);vertical-align:middle;line-height:20px}div.vis-color-picker div.vis-label{position:absolute;width:300px;left:10px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{position:absolute;width:68px;height:25px;border-radius:10px;vertical-align:middle;text-align:center;line-height:25px;top:410px;border:2px solid #d9d9d9;background-color:#f7f7f7;cursor:pointer}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{width:290px;height:20px}div.vis-network div.vis-manipulation{box-sizing:content-box;border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);padding-top:4px;position:absolute;left:0;top:0;width:100%;height:28px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:5px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-close:hover{opacity:.6}div.vis-network div.vis-edit-mode div.vis-button,div.vis-network div.vis-manipulation div.vis-button{float:left;font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin-left:10px;cursor:pointer;padding:0 8px 0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-manipulation div.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.vis-network div.vis-manipulation div.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.vis-network div.vis-manipulation div.vis-button.vis-back{background-image:url(img/network/backIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.vis-network div.vis-manipulation div.vis-button.vis-none:active{box-shadow:1px 1px 8px transparent}div.vis-network div.vis-manipulation div.vis-button.vis-none{padding:0}div.vis-network div.vis-manipulation div.notification{margin:2px;font-weight:700}div.vis-network div.vis-manipulation div.vis-button.vis-add{background-image:url(img/network/addNodeIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit,div.vis-network div.vis-manipulation div.vis-button.vis-edit{background-image:url(img/network/editIcon.png)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation div.vis-button.vis-connect{background-image:url(img/network/connectIcon.png)}div.vis-network div.vis-manipulation div.vis-button.vis-delete{background-image:url(img/network/deleteIcon.png)}div.vis-network div.vis-edit-mode div.vis-label,div.vis-network div.vis-manipulation div.vis-label{margin:0 0 0 23px;line-height:25px}div.vis-network div.vis-manipulation div.vis-separator-line{float:left;display:inline-block;width:1px;height:21px;background-color:#bdbdbd;margin:0 7px 0 15px}div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}.vis-current-time{background-color:#ff7f6e;width:2px;z-index:1;pointer-events:none}.vis-rolling-mode-btn{height:40px;width:40px;position:absolute;top:7px;right:20px;border-radius:50%;font-size:28px;cursor:pointer;opacity:.8;color:#fff;font-weight:700;text-align:center;background:#3876c2}.vis-rolling-mode-btn:before{content:"\26F6"}.vis-rolling-mode-btn:hover{opacity:1}.vis-custom-time{background-color:#6e94ff;width:2px;cursor:move;z-index:1}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-item{position:absolute;color:#1a1a1a;border-color:#97b0f8;border-width:1px;background-color:#d5ddf6;display:inline-block;z-index:1}.vis-item.vis-selected{border-color:#ffc200;background-color:#fff785;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-point.vis-selected{background-color:#fff785}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0 0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item-visible-frame{white-space:nowrap}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-onUpdateTime-tooltip{position:absolute;background:#4f81bd;color:#fff;width:200px;text-align:center;white-space:nowrap;padding:5px;border-radius:1px;transition:.4s;-o-transition:.4s;-moz-transition:.4s;-webkit-transition:.4s}.vis-item .vis-delete,.vis-item .vis-delete-rtl{position:absolute;top:0;width:24px;height:24px;box-sizing:border-box;padding:0 5px;cursor:pointer;-webkit-transition:background .2s linear;-moz-transition:background .2s linear;-ms-transition:background .2s linear;-o-transition:background .2s linear;transition:background .2s linear}.vis-item .vis-delete{right:-24px}.vis-item .vis-delete-rtl{left:-24px}.vis-item .vis-delete-rtl:after,.vis-item .vis-delete:after{content:"\00D7";color:red;font-family:arial,sans-serif;font-size:22px;font-weight:700;-webkit-transition:color .2s linear;-moz-transition:color .2s linear;-ms-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.vis-item .vis-delete-rtl:hover,.vis-item .vis-delete:hover{background:red}.vis-item .vis-delete-rtl:hover:after,.vis-item .vis-delete:hover:after{color:#fff}.vis-item .vis-drag-center{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.vis-item.vis-range .vis-drag-left{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;right:-4px;cursor:e-resize}.vis-range.vis-item.vis-readonly .vis-drag-left,.vis-range.vis-item.vis-readonly .vis-drag-right{cursor:auto}.vis-itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:none}.vis-nesting-group{cursor:pointer}.vis-nested-group{background:#f5f5f5}.vis-label.vis-nesting-group.expanded:before{content:"\25BC"}.vis-label.vis-nesting-group.collapsed-rtl:before{content:"\25C0"}.vis-label.vis-nesting-group.collapsed:before{content:"\25B6"}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis-labelset .vis-label{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box}.vis-labelset .vis-label{border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label.draggable{cursor:pointer}.vis-labelset .vis-label:last-child{border-bottom:none}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-panel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-left.vis-panel.vis-vertical-scroll,.vis-right.vis-panel.vis-vertical-scroll{height:100%;overflow-x:hidden;overflow-y:scroll}.vis-left.vis-panel.vis-vertical-scroll{direction:rtl}.vis-left.vis-panel.vis-vertical-scroll .vis-content{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll .vis-content{direction:rtl}.vis-panel.vis-bottom,.vis-panel.vis-center,.vis-panel.vis-top{border-left-style:solid;border-right-style:solid}.vis-background{overflow:hidden}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}.vis-time-axis{position:relative;overflow:hidden}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-vertical-rtl{position:absolute;border-right:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-timeline{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 828c9378..3486c348 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -4,11 +4,11 @@ * * A dynamic, browser-based visualization library. * - * @version 4.18.1 - * @date 2017-01-29 + * @version 4.19.0 + * @date 2017-03-18 * * @license - * Copyright (C) 2011-2016 Almende B.V, http://almende.com + * Copyright (C) 2011-2017 Almende B.V, http://almende.com * * Vis.js is dual licensed under both * @@ -22,25 +22,25 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){var o=i(1);o.extend(e,i(89)),o.extend(e,i(112)),o.extend(e,i(154))},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}var n=i(2),s=o(n),r=i(55),a=o(r),h=i(58),d=o(h),l=i(62),u=o(l),c=i(82),p=o(c),f=i(84),m=i(88);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.elementsCensor=function(t){if(t){var e=function(t,e){return e instanceof Element?"DOM Element":e};return JSON.parse((0,p.default)(t,e))}},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=v.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return m.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!==(0,u.default)(t[i])&&(t[i]=e)},e.fillIfDefined=function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var n in t)void 0!==i[n]&&("object"!==(0,u.default)(i[n])?void 0!==i[n]&&null!==i[n]||void 0===t[n]||o!==!0?t[n]=i[n]:delete t[n]:"object"===(0,u.default)(t[n])&&e.fillIfDefined(t[n],i[n],o))},e.protoExtend=function(t,e){for(var i=1;i3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&t.indexOf(s)==-1)if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(t.indexOf("rgba")!=-1)return t;if(t.indexOf("rgb")!=-1){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var g={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return(0,d.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=g.split(t.style.cssText),n=g.split(i),s=e.extend(o,n);t.style.cssText=g.join(s)},e.removeCssText=function(t,e){var i=g.split(t.style.cssText),o=g.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=g.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==("undefined"==typeof i?"undefined":(0,u.default)(i))){for(var o=(0,a.default)(i),n=0;n0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=(arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{});if(null===e[i])t[i]=(0,a.default)(o[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var n in e[i])e[i].hasOwnProperty(n)&&(t[i][n]=e[i][n])}},e.binarySearchCustom=function(t,e,i,o){for(var n=1e4,s=0,r=0,a=t.length-1;r<=a&&s0)return"before"==o?Math.max(0,h-1):h;if(n(r,e)<0&&n(a,e)>0)return"before"==o?h:Math.min(t.length-1,h+1);n(r,e)<0?u=h+1:c=h-1,l++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var i=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return i==o&&(o=e.clientWidth),document.body.removeChild(e),i-o},e.topMost=function(t,e){var i=void 0;Array.isArray(e)||(e=[e]);var o=!0,n=!1,r=void 0;try{for(var a,h=(0,s.default)(t);!(o=(a=h.next()).done);o=!0){var d=a.value;if(d){i=d[e[0]];for(var l=1;l=t.length?(this._t=void 0,n(1)):"keys"==e?n(0,i):"values"==e?n(0,t[i]):n(0,[i,t[i]])},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,i){var o=i(10),n=i(12);t.exports=function(t){return o(n(t))}},function(t,e,i){var o=i(11);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},function(t,e){var i={}.toString;t.exports=function(t){return i.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,i){var o=i(14),n=i(15),s=i(30),r=i(20),a=i(31),h=i(8),d=i(32),l=i(46),u=i(48),c=i(47)("iterator"),p=!([].keys&&"next"in[].keys()),f="@@iterator",m="keys",v="values",g=function(){return this};t.exports=function(t,e,i,y,b,_,w){d(i,e,y);var x,k,O,D=function(t){if(!p&&t in T)return T[t];switch(t){case m:return function(){return new i(this,t)};case v:return function(){return new i(this,t)}}return function(){return new i(this,t)}},M=e+" Iterator",S=b==v,C=!1,T=t.prototype,E=T[c]||T[f]||b&&T[b],P=E||D(b),I=b?S?D("entries"):P:void 0,N="Array"==e?T.entries||E:E;if(N&&(O=u(N.call(new t)),O!==Object.prototype&&(l(O,M,!0),o||a(O,c)||r(O,c,g))),S&&E&&E.name!==v&&(C=!0,P=function(){return E.call(this)}),o&&!w||!p&&!C&&T[c]||r(T,c,P),h[e]=P,h[M]=g,b)if(x={values:S?P:D(v),keys:_?P:D(m),entries:I},w)for(k in x)k in T||s(T,k,x[k]);else n(n.P+n.F*(p||C),e,x);return x}},function(t,e){t.exports=!0},function(t,e,i){var o=i(16),n=i(17),s=i(18),r=i(20),a="prototype",h=function(t,e,i){var d,l,u,c=t&h.F,p=t&h.G,f=t&h.S,m=t&h.P,v=t&h.B,g=t&h.W,y=p?n:n[e]||(n[e]={}),b=y[a],_=p?o:f?o[e]:(o[e]||{})[a];p&&(i=e);for(d in i)l=!c&&_&&void 0!==_[d],l&&d in y||(u=l?_[d]:i[d],y[d]=p&&"function"!=typeof _[d]?i[d]:v&&l?s(u,o):g&&_[d]==u?function(t){var e=function(e,i,o){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,i)}return new t(e,i,o)}return t.apply(this,arguments)};return e[a]=t[a],e}(u):m&&"function"==typeof u?s(Function.call,u):u,m&&((y.virtual||(y.virtual={}))[d]=u,t&h.R&&b&&!b[d]&&r(b,d,u)))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},function(t,e){var i=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(t,e){var i=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=i)},function(t,e,i){var o=i(19);t.exports=function(t,e,i){if(o(t),void 0===e)return t;switch(i){case 1:return function(i){return t.call(e,i)};case 2:return function(i,o){return t.call(e,i,o)};case 3:return function(i,o,n){return t.call(e,i,o,n)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,i){var o=i(21),n=i(29);t.exports=i(25)?function(t,e,i){return o.f(t,e,n(1,i))}:function(t,e,i){return t[e]=i,t}},function(t,e,i){var o=i(22),n=i(24),s=i(28),r=Object.defineProperty;e.f=i(25)?Object.defineProperty:function(t,e,i){if(o(t),e=s(e,!0),o(i),n)try{return r(t,e,i)}catch(t){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(t[e]=i.value),t}},function(t,e,i){var o=i(23);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,i){t.exports=!i(25)&&!i(26)(function(){return 7!=Object.defineProperty(i(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,i){t.exports=!i(26)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,i){var o=i(23),n=i(16).document,s=o(n)&&o(n.createElement);t.exports=function(t){return s?n.createElement(t):{}}},function(t,e,i){var o=i(23);t.exports=function(t,e){if(!o(t))return t;var i,n;if(e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;if("function"==typeof(i=t.valueOf)&&!o(n=i.call(t)))return n;if(!e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,i){t.exports=i(20)},function(t,e){var i={}.hasOwnProperty;t.exports=function(t,e){return i.call(t,e)}},function(t,e,i){var o=i(33),n=i(29),s=i(46),r={};i(20)(r,i(47)("iterator"),function(){return this}),t.exports=function(t,e,i){t.prototype=o(r,{next:n(1,i)}),s(t,e+" Iterator")}},function(t,e,i){var o=i(22),n=i(34),s=i(44),r=i(41)("IE_PROTO"),a=function(){},h="prototype",d=function(){var t,e=i(27)("iframe"),o=s.length,n="<",r=">";for(e.style.display="none",i(45).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(n+"script"+r+"document.F=Object"+n+"/script"+r),t.close(),d=t.F;o--;)delete d[h][s[o]];return d()};t.exports=Object.create||function(t,e){var i;return null!==t?(a[h]=o(t),i=new a,a[h]=null,i[r]=t):i=d(),void 0===e?i:n(i,e)}},function(t,e,i){var o=i(21),n=i(22),s=i(35);t.exports=i(25)?Object.defineProperties:function(t,e){n(t);for(var i,r=s(e),a=r.length,h=0;a>h;)o.f(t,i=r[h++],e[i]);return t}},function(t,e,i){var o=i(36),n=i(44);t.exports=Object.keys||function(t){return o(t,n)}},function(t,e,i){var o=i(31),n=i(9),s=i(37)(!1),r=i(41)("IE_PROTO");t.exports=function(t,e){var i,a=n(t),h=0,d=[];for(i in a)i!=r&&o(a,i)&&d.push(i);for(;e.length>h;)o(a,i=e[h++])&&(~s(d,i)||d.push(i));return d}},function(t,e,i){var o=i(9),n=i(38),s=i(40);t.exports=function(t){return function(e,i,r){var a,h=o(e),d=n(h.length),l=s(r,d);if(t&&i!=i){for(;d>l;)if(a=h[l++],a!=a)return!0}else for(;d>l;l++)if((t||l in h)&&h[l]===i)return t||l||0;return!t&&-1}}},function(t,e,i){var o=i(39),n=Math.min;t.exports=function(t){return t>0?n(o(t),9007199254740991):0}},function(t,e){var i=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:i)(t)}},function(t,e,i){var o=i(39),n=Math.max,s=Math.min;t.exports=function(t,e){return t=o(t),t<0?n(t+e,0):s(t,e)}},function(t,e,i){var o=i(42)("keys"),n=i(43);t.exports=function(t){return o[t]||(o[t]=n(t))}},function(t,e,i){var o=i(16),n="__core-js_shared__",s=o[n]||(o[n]={});t.exports=function(t){return s[t]||(s[t]={})}},function(t,e){var i=0,o=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++i+o).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,i){t.exports=i(16).document&&document.documentElement},function(t,e,i){var o=i(21).f,n=i(31),s=i(47)("toStringTag");t.exports=function(t,e,i){t&&!n(t=i?t:t.prototype,s)&&o(t,s,{configurable:!0,value:e})}},function(t,e,i){var o=i(42)("wks"),n=i(43),s=i(16).Symbol,r="function"==typeof s,a=t.exports=function(t){return o[t]||(o[t]=r&&s[t]||(r?s:n)("Symbol."+t))};a.store=o},function(t,e,i){var o=i(31),n=i(49),s=i(41)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=n(t),o(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,i){var o=i(12);t.exports=function(t){return Object(o(t))}},function(t,e,i){var o=i(51)(!0);i(13)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,i=this._i;return i>=e.length?{value:void 0,done:!0}:(t=o(e,i),this._i+=t.length,{value:t,done:!1})})},function(t,e,i){var o=i(39),n=i(12);t.exports=function(t){return function(e,i){var s,r,a=String(n(e)),h=o(i),d=a.length;return h<0||h>=d?t?"":void 0:(s=a.charCodeAt(h),s<55296||s>56319||h+1===d||(r=a.charCodeAt(h+1))<56320||r>57343?t?a.charAt(h):s:t?a.slice(h,h+2):(s-55296<<10)+(r-56320)+65536)}}},function(t,e,i){var o=i(22),n=i(53);t.exports=i(17).getIterator=function(t){var e=n(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return o(e.call(t))}},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).getIteratorMethod=function(t){if(void 0!=t)return t[n]||t["@@iterator"]||s[o(t)]}},function(t,e,i){var o=i(11),n=i(47)("toStringTag"),s="Arguments"==o(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,i,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=r(e=Object(t),n))?i:s?o(e):"Object"==(a=o(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,i){t.exports={default:i(56),__esModule:!0}},function(t,e,i){i(57);var o=i(17).Object;t.exports=function(t,e){return o.create(t,e)}},function(t,e,i){var o=i(15);o(o.S,"Object",{create:i(33)})},function(t,e,i){t.exports={default:i(59),__esModule:!0}},function(t,e,i){i(60),t.exports=i(17).Object.keys},function(t,e,i){var o=i(49),n=i(35);i(61)("keys",function(){return function(t){return n(o(t))}})},function(t,e,i){var o=i(15),n=i(17),s=i(26);t.exports=function(t,e){var i=(n.Object||{})[t]||Object[t],r={};r[t]=e(i),o(o.S+o.F*s(function(){i(1)}),"Object",r)}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(63),s=o(n),r=i(66),a=o(r),h="function"==typeof a.default&&"symbol"==typeof s.default?function(t){return typeof t}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":typeof t};e.default="function"==typeof a.default&&"symbol"===h(s.default)?function(t){return"undefined"==typeof t?"undefined":h(t)}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":"undefined"==typeof t?"undefined":h(t)}},function(t,e,i){t.exports={default:i(64),__esModule:!0}},function(t,e,i){i(50),i(4),t.exports=i(65).f("iterator")},function(t,e,i){e.f=i(47)},function(t,e,i){t.exports={default:i(67),__esModule:!0}},function(t,e,i){i(68),i(79),i(80),i(81),t.exports=i(17).Symbol},function(t,e,i){var o=i(16),n=i(31),s=i(25),r=i(15),a=i(30),h=i(69).KEY,d=i(26),l=i(42),u=i(46),c=i(43),p=i(47),f=i(65),m=i(70),v=i(71),g=i(72),y=i(75),b=i(22),_=i(9),w=i(28),x=i(29),k=i(33),O=i(76),D=i(78),M=i(21),S=i(35),C=D.f,T=M.f,E=O.f,P=o.Symbol,I=o.JSON,N=I&&I.stringify,z="prototype",R=p("_hidden"),L=p("toPrimitive"),A={}.propertyIsEnumerable,B=l("symbol-registry"),F=l("symbols"),H=l("op-symbols"),j=Object[z],W="function"==typeof P,Y=o.QObject,G=!Y||!Y[z]||!Y[z].findChild,V=s&&d(function(){return 7!=k(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(t,e,i){var o=C(j,e);o&&delete j[e],T(t,e,i),o&&t!==j&&T(j,e,o)}:T,U=function(t){var e=F[t]=k(P[z]);return e._k=t,e},q=W&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},X=function(t,e,i){return t===j&&X(H,e,i),b(t),e=w(e,!0),b(i),n(F,e)?(i.enumerable?(n(t,R)&&t[R][e]&&(t[R][e]=!1),i=k(i,{enumerable:x(0,!1)})):(n(t,R)||T(t,R,x(1,{})),t[R][e]=!0),V(t,e,i)):T(t,e,i)},Z=function(t,e){b(t);for(var i,o=g(e=_(e)),n=0,s=o.length;s>n;)X(t,i=o[n++],e[i]);return t},K=function(t,e){return void 0===e?k(t):Z(k(t),e)},Q=function(t){var e=A.call(this,t=w(t,!0));return!(this===j&&n(F,t)&&!n(H,t))&&(!(e||!n(this,t)||!n(F,t)||n(this,R)&&this[R][t])||e)},J=function(t,e){if(t=_(t),e=w(e,!0),t!==j||!n(F,e)||n(H,e)){var i=C(t,e);return!i||!n(F,e)||n(t,R)&&t[R][e]||(i.enumerable=!0),i}},$=function(t){for(var e,i=E(_(t)),o=[],s=0;i.length>s;)n(F,e=i[s++])||e==R||e==h||o.push(e);return o},tt=function(t){for(var e,i=t===j,o=E(i?H:_(t)),s=[],r=0;o.length>r;)!n(F,e=o[r++])||i&&!n(j,e)||s.push(F[e]);return s};W||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=c(arguments.length>0?arguments[0]:void 0),e=function(i){this===j&&e.call(H,i),n(this,R)&&n(this[R],t)&&(this[R][t]=!1),V(this,t,x(1,i))};return s&&G&&V(j,t,{configurable:!0,set:e}),U(t)},a(P[z],"toString",function(){return this._k}),D.f=J,M.f=X,i(77).f=O.f=$,i(74).f=Q,i(73).f=tt,s&&!i(14)&&a(j,"propertyIsEnumerable",Q,!0),f.f=function(t){return U(p(t))}),r(r.G+r.W+r.F*!W,{Symbol:P});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),it=0;et.length>it;)p(et[it++]);for(var et=S(p.store),it=0;et.length>it;)m(et[it++]);r(r.S+r.F*!W,"Symbol",{for:function(t){return n(B,t+="")?B[t]:B[t]=P(t)},keyFor:function(t){if(q(t))return v(B,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){G=!0},useSimple:function(){G=!1}}),r(r.S+r.F*!W,"Object",{create:K,defineProperty:X,defineProperties:Z,getOwnPropertyDescriptor:J,getOwnPropertyNames:$,getOwnPropertySymbols:tt}),I&&r(r.S+r.F*(!W||d(function(){var t=P();return"[null]"!=N([t])||"{}"!=N({a:t})||"{}"!=N(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!q(t)){for(var e,i,o=[t],n=1;arguments.length>n;)o.push(arguments[n++]);return e=o[1],"function"==typeof e&&(i=e),!i&&y(e)||(e=function(t,e){if(i&&(e=i.call(this,t,e)),!q(e))return e}),o[1]=e,N.apply(I,o)}}}),P[z][L]||i(20)(P[z],L,P[z].valueOf),u(P,"Symbol"),u(Math,"Math",!0),u(o.JSON,"JSON",!0)},function(t,e,i){var o=i(43)("meta"),n=i(23),s=i(31),r=i(21).f,a=0,h=Object.isExtensible||function(){return!0},d=!i(26)(function(){return h(Object.preventExtensions({}))}),l=function(t){r(t,o,{value:{i:"O"+ ++a,w:{}}})},u=function(t,e){if(!n(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!s(t,o)){if(!h(t))return"F";if(!e)return"E";l(t)}return t[o].i},c=function(t,e){if(!s(t,o)){if(!h(t))return!0;if(!e)return!1;l(t)}return t[o].w},p=function(t){return d&&f.NEED&&h(t)&&!s(t,o)&&l(t),t},f=t.exports={KEY:o,NEED:!1,fastKey:u,getWeak:c,onFreeze:p}},function(t,e,i){var o=i(16),n=i(17),s=i(14),r=i(65),a=i(21).f;t.exports=function(t){var e=n.Symbol||(n.Symbol=s?{}:o.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:r.f(t)})}},function(t,e,i){var o=i(35),n=i(9);t.exports=function(t,e){for(var i,s=n(t),r=o(s),a=r.length,h=0;a>h;)if(s[i=r[h++]]===e)return i}},function(t,e,i){var o=i(35),n=i(73),s=i(74);t.exports=function(t){var e=o(t),i=n.f;if(i)for(var r,a=i(t),h=s.f,d=0;a.length>d;)h.call(t,r=a[d++])&&e.push(r);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,i){var o=i(11);t.exports=Array.isArray||function(t){return"Array"==o(t)}},function(t,e,i){var o=i(9),n=i(77).f,s={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return n(t)}catch(t){return r.slice()}};t.exports.f=function(t){return r&&"[object Window]"==s.call(t)?a(t):n(o(t))}},function(t,e,i){var o=i(36),n=i(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return o(t,n)}},function(t,e,i){var o=i(74),n=i(29),s=i(9),r=i(28),a=i(31),h=i(24),d=Object.getOwnPropertyDescriptor;e.f=i(25)?d:function(t,e){if(t=s(t),e=r(e,!0),h)try{return d(t,e)}catch(t){}if(a(t,e))return n(!o.f.call(t,e),t[e])}},function(t,e){},function(t,e,i){i(70)("asyncIterator")},function(t,e,i){i(70)("observable")},function(t,e,i){t.exports={default:i(83),__esModule:!0}},function(t,e,i){var o=i(17),n=o.JSON||(o.JSON={stringify:JSON.stringify});t.exports=function(t){return n.stringify.apply(n,arguments)}},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(85)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return vo.apply(null,arguments)}function i(t){vo=t}function o(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function n(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){var e;for(e in t)return!1;return!0}function r(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function a(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){var i,o=[];for(i=0;i0)for(i in bo)o=bo[i],n=e[o],v(n)||(t[o]=n);return t}function y(t){g(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),_o===!1&&(_o=!0,e.updateOffset(this),_o=!1)}function b(t){return t instanceof y||null!=t&&null!=t._isAMomentObject}function _(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=_(e)),i}function x(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;o0?"future":"past"];return M(i)?i(e):i.replace(/%s/i,e)}function L(t,e){var i=t.toLowerCase();Po[i]=Po[i+"s"]=Po[e]=t}function A(t){return"string"==typeof t?Po[t]||Po[t.toLowerCase()]:void 0}function B(t){var e,i,o={};for(i in t)d(t,i)&&(e=A(i),e&&(o[e]=t[i]));return o}function F(t,e){Io[t]=e}function H(t){var e=[];for(var i in t)e.push({unit:i,priority:Io[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}function j(t,i){return function(o){return null!=o?(Y(this,t,o),e.updateOffset(this,i),this):W(this,t)}}function W(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Y(t,e,i){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](i)}function G(t){return t=A(t),M(this[t])?this[t]():this}function V(t,e){if("object"==typeof t){t=B(t);for(var i=H(t),o=0;o=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function q(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(Lo[t]=n),e&&(Lo[e[0]]=function(){return U(n.apply(this,arguments),e[1],e[2])}),i&&(Lo[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function X(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function Z(t){var e,i,o=t.match(No);for(e=0,i=o.length;e=0&&zo.test(t);)t=t.replace(zo,i),zo.lastIndex=0,o-=1;return t}function J(t,e,i){tn[t]=M(e)?e:function(t,o){return t&&i?i:e}}function $(t,e){return d(tn,t)?tn[t](e._strict,e._locale):new RegExp(tt(t))}function tt(t){return et(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function et(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function it(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),r(e)&&(o=function(t,i){i[e]=w(t)}),i=0;i=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function _t(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function wt(t,e,i){var o=7+e-i,n=(7+_t(t,0,o).getUTCDay()-e)%7;return-n+o-1}function xt(t,e,i,o,n){var s,r,a=(7+i-o)%7,h=wt(t,o,n),d=1+7*(e-1)+a+h;return d<=0?(s=t-1,r=vt(s)+d):d>vt(t)?(s=t+1,r=d-vt(t)):(s=t,r=d),{year:s,dayOfYear:r}}function kt(t,e,i){var o,n,s=wt(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return r<1?(n=t.year()-1,o=r+Ot(n,e,i)):r>Ot(t.year(),e,i)?(o=r-Ot(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function Ot(t,e,i){var o=wt(t,e,i),n=wt(t+1,e,i);return(vt(t)-o+n)/7}function Dt(t){return kt(t,this._week.dow,this._week.doy).week}function Mt(){return this._week.dow}function St(){return this._week.doy}function Ct(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Tt(t){var e=kt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Et(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Pt(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function It(t,e){return t?o(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:this._weekdays}function Nt(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function zt(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function Rt(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;o<7;++o)s=u([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=cn.call(this._weekdaysParse,r),n!==-1?n:null):"ddd"===e?(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:null):(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null):"dddd"===e?(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null))):"ddd"===e?(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null))):(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:null)))}function Lt(t,e,i){var o,n,s;if(this._weekdaysParseExact)return Rt.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;o<7;o++){if(n=u([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function At(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Et(t,this.localeData()),this.add(t-e,"d")):e}function Bt(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Ft(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Pt(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function Ht(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=kn),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function jt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=On),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Wt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Dn),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Yt(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],h=[],d=[];for(e=0;e<7;e++)i=u([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),h.push(s),d.push(o),d.push(n),d.push(s);for(r.sort(t),a.sort(t),h.sort(t),d.sort(t),e=0;e<7;e++)a[e]=et(a[e]),h[e]=et(h[e]),d[e]=et(d[e]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Gt(){return this.hours()%12||12}function Vt(){return this.hours()||24}function Ut(t,e){q(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function qt(t,e){return e._meridiemParse}function Xt(t){return"p"===(t+"").toLowerCase().charAt(0)}function Zt(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Kt(t){return t?t.toLowerCase().replace("_","-"):t}function Qt(t){for(var e,i,o,n,s=0;s0;){if(o=Jt(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&x(n,i,!0)>=e-1)break;e--}s++}return null}function Jt(e){var i=null;if(!En[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Mn._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),$t(i)}catch(t){}return En[e]}function $t(t,e){var i;return t&&(i=v(e)?ie(t):te(t,e),i&&(Mn=i)),Mn._abbr}function te(t,e){if(null!==e){var i=Tn;if(e.abbr=t,null!=En[t])D("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=En[t]._config;else if(null!=e.parentLocale){if(null==En[e.parentLocale])return Pn[e.parentLocale]||(Pn[e.parentLocale]=[]),Pn[e.parentLocale].push({name:t,config:e}),null;i=En[e.parentLocale]._config}return En[t]=new T(C(i,e)),Pn[t]&&Pn[t].forEach(function(t){te(t.name,t.config)}),$t(t),En[t]}return delete En[t],null}function ee(t,e){if(null!=e){var i,o=Tn;null!=En[t]&&(o=En[t]._config),e=C(o,e),i=new T(e),i.parentLocale=En[t],En[t]=i,$t(t)}else null!=En[t]&&(null!=En[t].parentLocale?En[t]=En[t].parentLocale:null!=En[t]&&delete En[t]);return En[t]}function ie(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Mn;if(!o(t)){if(e=Jt(t))return e;t=[t]}return Qt(t)}function oe(){return Oo(En)}function ne(t){var e,i=t._a;return i&&p(t).overflow===-2&&(e=i[nn]<0||i[nn]>11?nn:i[sn]<1||i[sn]>st(i[on],i[nn])?sn:i[rn]<0||i[rn]>24||24===i[rn]&&(0!==i[an]||0!==i[hn]||0!==i[dn])?rn:i[an]<0||i[an]>59?an:i[hn]<0||i[hn]>59?hn:i[dn]<0||i[dn]>999?dn:-1,p(t)._overflowDayOfYear&&(esn)&&(e=sn),p(t)._overflowWeeks&&e===-1&&(e=ln),p(t)._overflowWeekday&&e===-1&&(e=un),p(t).overflow=e),t}function se(t){var e,i,o,n,s,r,a=t._i,h=In.exec(a)||Nn.exec(a);if(h){for(p(t).iso=!0,e=0,i=Rn.length;evt(n)&&(p(t)._overflowDayOfYear=!0),i=_t(n,0,t._dayOfYear),t._a[nn]=i.getUTCMonth(),t._a[sn]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[rn]&&0===t._a[an]&&0===t._a[hn]&&0===t._a[dn]&&(t._nextDay=!0,t._a[rn]=0),t._d=(t._useUTC?_t:bt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[rn]=24)}}function le(t){var e,i,o,n,s,r,a,h;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)s=1,r=4,i=ae(e.GG,t._a[on],kt(be(),1,4).year),o=ae(e.W,1),n=ae(e.E,1),(n<1||n>7)&&(h=!0);else{s=t._locale._week.dow,r=t._locale._week.doy;var d=kt(be(),s,r);i=ae(e.gg,t._a[on],d.year),o=ae(e.w,d.week),null!=e.d?(n=e.d,(n<0||n>6)&&(h=!0)):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(h=!0)):n=s}o<1||o>Ot(i,s,r)?p(t)._overflowWeeks=!0:null!=h?p(t)._overflowWeekday=!0:(a=xt(i,o,n,s,r),t._a[on]=a.year,t._dayOfYear=a.dayOfYear)}function ue(t){if(t._f===e.ISO_8601)return void se(t);t._a=[],p(t).empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=Q(t._f,t._locale).match(No)||[],i=0;i0&&p(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Lo[s]?(o?p(t).empty=!1:p(t).unusedTokens.push(s),nt(s,o,t)):t._strict&&!o&&p(t).unusedTokens.push(s);p(t).charsLeftOver=h-d,a.length>0&&p(t).unusedInput.push(a),t._a[rn]<=12&&p(t).bigHour===!0&&t._a[rn]>0&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[rn]=ce(t._locale,t._a[rn],t._meridiem),de(t),ne(t)}function ce(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&e<12&&(e+=12),o||12!==e||(e=0),e):e}function pe(t){var e,i,o,n,s;if(0===t._f.length)return p(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ae(){if(!v(this._isDSTShifted))return this._isDSTShifted;var t={};if(g(t,this),t=ve(t),t._a){var e=t._isUTC?u(t._a):be(t._a);this._isDSTShifted=this.isValid()&&x(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Be(){return!!this.isValid()&&!this._isUTC}function Fe(){return!!this.isValid()&&this._isUTC}function He(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function je(t,e){var i,o,n,s=t,a=null;return Oe(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:r(t)?(s={},e?s[e]=t:s.milliseconds=t):(a=Wn.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:w(a[sn])*i,h:w(a[rn])*i,m:w(a[an])*i,s:w(a[hn])*i,ms:w(De(1e3*a[dn]))*i}):(a=Yn.exec(t))?(i="-"===a[1]?-1:1,s={y:We(a[2],i),M:We(a[3],i),w:We(a[4],i),d:We(a[5],i),h:We(a[6],i),m:We(a[7],i),s:We(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Ge(be(s.from),be(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new ke(s),Oe(t)&&d(t,"_locale")&&(o._locale=t._locale),o}function We(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Ye(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Ge(t,e){var i;return t.isValid()&&e.isValid()?(e=Ce(e,t),t.isBefore(e)?i=Ye(t,e):(i=Ye(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function Ve(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(D(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=je(i,o),Ue(this,n,t),this}}function Ue(t,i,o,n){var s=i._milliseconds,r=De(i._days),a=De(i._months);t.isValid()&&(n=null==n||n,s&&t._d.setTime(t._d.valueOf()+s*o),r&&Y(t,"Date",W(t,"Date")+r*o),a&<(t,W(t,"Month")+a*o),n&&e.updateOffset(t,r||a))}function qe(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"}function Xe(t,i){var o=t||be(),n=Ce(o,this).startOf("day"),s=e.calendarFormat(this,n)||"sameElse",r=i&&(M(i[s])?i[s].call(this,o):i[s]);return this.format(r||this.localeData().calendar(s,this,be(o)))}function Ze(){return new y(this)}function Ke(t,e){var i=b(t)?t:be(t);return!(!this.isValid()||!i.isValid())&&(e=A(v(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()s&&(e=s),Ii.call(this,t,e,i,o,n))}function Ii(t,e,i,o,n){var s=xt(t,e,i,o,n),r=_t(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Ni(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function zi(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function Ri(t,e){e[dn]=w(1e3*("0."+t))}function Li(){return this._isUTC?"UTC":""}function Ai(){return this._isUTC?"Coordinated Universal Time":""}function Bi(t){return be(1e3*t)}function Fi(){return be.apply(null,arguments).parseZone()}function Hi(t){return t}function ji(t,e,i,o){var n=ie(),s=u().set(o,e);return n[i](s,t)}function Wi(t,e,i){if(r(t)&&(e=t,t=void 0),t=t||"",null!=e)return ji(t,e,i,"month");var o,n=[];for(o=0;o<12;o++)n[o]=ji(t,o,i,"month");return n}function Yi(t,e,i,o){"boolean"==typeof t?(r(e)&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,r(e)&&(i=e,e=void 0),e=e||"");var n=ie(),s=t?n._week.dow:0;if(null!=i)return ji(e,(i+s)%7,o,"day");var a,h=[];for(a=0;a<7;a++)h[a]=ji(e,(a+s)%7,o,"day");return h}function Gi(t,e){return Wi(t,e,"months")}function Vi(t,e){return Wi(t,e,"monthsShort")}function Ui(t,e,i){return Yi(t,e,i,"weekdays")}function qi(t,e,i){return Yi(t,e,i,"weekdaysShort")}function Xi(t,e,i){return Yi(t,e,i,"weekdaysMin")}function Zi(){var t=this._data;return this._milliseconds=ts(this._milliseconds),this._days=ts(this._days),this._months=ts(this._months),t.milliseconds=ts(t.milliseconds),t.seconds=ts(t.seconds),t.minutes=ts(t.minutes),t.hours=ts(t.hours),t.months=ts(t.months),t.years=ts(t.years),this}function Ki(t,e,i,o){var n=je(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function Qi(t,e){return Ki(this,t,e,1)}function Ji(t,e){return Ki(this,t,e,-1)}function $i(t){return t<0?Math.floor(t):Math.ceil(t)}function to(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data;return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*$i(io(a)+r),r=0,a=0),h.milliseconds=s%1e3,t=_(s/1e3),h.seconds=t%60,e=_(t/60),h.minutes=e%60,i=_(e/60),h.hours=i%24,r+=_(i/24),n=_(eo(r)),a+=n,r-=$i(io(n)),o=_(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function eo(t){return 4800*t/146097}function io(t){return 146097*t/4800}function oo(t){var e,i,o=this._milliseconds;if(t=A(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+eo(e), -"month"===t?i:i/12;switch(e=this._days+Math.round(io(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function no(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12)}function so(t){return function(){return this.as(t)}}function ro(t){return t=A(t),this[t+"s"]()}function ao(t){return function(){return this._data[t]}}function ho(){return _(this.days()/7)}function lo(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function uo(t,e,i){var o=je(t).abs(),n=vs(o.as("s")),s=vs(o.as("m")),r=vs(o.as("h")),a=vs(o.as("d")),h=vs(o.as("M")),d=vs(o.as("y")),l=n0,l[4]=i,lo.apply(null,l)}function co(t){return void 0===t?vs:"function"==typeof t&&(vs=t,!0)}function po(t,e){return void 0!==gs[t]&&(void 0===e?gs[t]:(gs[t]=e,!0))}function fo(t){var e=this.localeData(),i=uo(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function mo(){var t,e,i,o=ys(this._milliseconds)/1e3,n=ys(this._days),s=ys(this._months);t=_(o/60),e=_(t/60),o%=60,t%=60,i=_(s/12),s%=12;var r=i,a=s,h=n,d=e,l=t,u=o,c=this.asSeconds();return c?(c<0?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(d||l||u?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(u?u+"S":""):"P0D"}var vo,go;go=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;o68?1900:2e3)};var yn=j("FullYear",!0);q("w",["ww",2],"wo","week"),q("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),F("week",5),F("isoWeek",5),J("w",Wo),J("ww",Wo,Bo),J("W",Wo),J("WW",Wo,Bo),ot(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=w(t)});var bn={dow:0,doy:6};q("d",0,"do","day"),q("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),q("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),q("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),q("e",0,0,"weekday"),q("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),F("day",11),F("weekday",11),F("isoWeekday",11),J("d",Wo),J("e",Wo),J("E",Wo),J("dd",function(t,e){return e.weekdaysMinRegex(t)}),J("ddd",function(t,e){return e.weekdaysShortRegex(t)}),J("dddd",function(t,e){return e.weekdaysRegex(t)}),ot(["dd","ddd","dddd"],function(t,e,i,o){var n=i._locale.weekdaysParse(t,o,i._strict);null!=n?e.d=n:p(i).invalidWeekday=t}),ot(["d","e","E"],function(t,e,i,o){e[o]=w(t)});var _n="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),wn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),kn=$o,On=$o,Dn=$o;q("H",["HH",2],0,"hour"),q("h",["hh",2],0,Gt),q("k",["kk",2],0,Vt),q("hmm",0,0,function(){return""+Gt.apply(this)+U(this.minutes(),2)}),q("hmmss",0,0,function(){return""+Gt.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),q("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),q("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Ut("a",!0),Ut("A",!1),L("hour","h"),F("hour",13),J("a",qt),J("A",qt),J("H",Wo),J("h",Wo),J("HH",Wo,Bo),J("hh",Wo,Bo),J("hmm",Yo),J("hmmss",Go),J("Hmm",Yo),J("Hmmss",Go),it(["H","HH"],rn),it(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),it(["h","hh"],function(t,e,i){e[rn]=w(t),p(i).bigHour=!0}),it("hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o)),p(i).bigHour=!0}),it("hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[hn]=w(t.substr(n)),p(i).bigHour=!0}),it("Hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o))}),it("Hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[hn]=w(t.substr(n))});var Mn,Sn=/[ap]\.?m?\.?/i,Cn=j("Hours",!0),Tn={calendar:Do,longDateFormat:Mo,invalidDate:So,ordinal:Co,ordinalParse:To,relativeTime:Eo,months:fn,monthsShort:mn,week:bn,weekdays:_n,weekdaysMin:xn,weekdaysShort:wn,meridiemParse:Sn},En={},Pn={},In=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Nn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,zn=/Z|[+-]\d\d(?::?\d\d)?/,Rn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ln=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],An=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=O("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),e.ISO_8601=function(){};var Bn=O("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=be.apply(null,arguments);return this.isValid()&&t.isValid()?tthis?this:t:m()}),Hn=function(){return Date.now?Date.now():+new Date};Me("Z",":"),Me("ZZ",""),J("Z",Qo),J("ZZ",Qo),it(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Se(Qo,t)});var jn=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var Wn=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Yn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;je.fn=ke.prototype;var Gn=Ve(1,"add"),Vn=Ve(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Un=O("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});q(0,["gg",2],0,function(){return this.weekYear()%100}),q(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Mi("gggg","weekYear"),Mi("ggggg","weekYear"),Mi("GGGG","isoWeekYear"),Mi("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),F("weekYear",1),F("isoWeekYear",1),J("G",Zo),J("g",Zo),J("GG",Wo,Bo),J("gg",Wo,Bo),J("GGGG",Uo,Ho),J("gggg",Uo,Ho),J("GGGGG",qo,jo),J("ggggg",qo,jo),ot(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=w(t)}),ot(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),q("Q",0,"Qo","quarter"),L("quarter","Q"),F("quarter",7),J("Q",Ao),it("Q",function(t,e){e[nn]=3*(w(t)-1)}),q("D",["DD",2],"Do","date"),L("date","D"),F("date",9),J("D",Wo),J("DD",Wo,Bo),J("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),it(["D","DD"],sn),it("Do",function(t,e){e[sn]=w(t.match(Wo)[0],10)});var qn=j("Date",!0);q("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),F("dayOfYear",4),J("DDD",Vo),J("DDDD",Fo),it(["DDD","DDDD"],function(t,e,i){i._dayOfYear=w(t)}),q("m",["mm",2],0,"minute"),L("minute","m"),F("minute",14),J("m",Wo),J("mm",Wo,Bo),it(["m","mm"],an);var Xn=j("Minutes",!1);q("s",["ss",2],0,"second"),L("second","s"),F("second",15),J("s",Wo),J("ss",Wo,Bo),it(["s","ss"],hn);var Zn=j("Seconds",!1);q("S",0,0,function(){return~~(this.millisecond()/100)}),q(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),q(0,["SSS",3],0,"millisecond"),q(0,["SSSS",4],0,function(){return 10*this.millisecond()}),q(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),q(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),q(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),q(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),q(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),F("millisecond",16),J("S",Vo,Ao),J("SS",Vo,Bo),J("SSS",Vo,Fo);var Kn;for(Kn="SSSS";Kn.length<=9;Kn+="S")J(Kn,Xo);for(Kn="S";Kn.length<=9;Kn+="S")it(Kn,Ri);var Qn=j("Milliseconds",!1);q("z",0,0,"zoneAbbr"),q("zz",0,0,"zoneName");var Jn=y.prototype;Jn.add=Gn,Jn.calendar=Xe,Jn.clone=Ze,Jn.diff=ii,Jn.endOf=mi,Jn.format=ai,Jn.from=hi,Jn.fromNow=di,Jn.to=li,Jn.toNow=ui,Jn.get=G,Jn.invalidAt=Oi,Jn.isAfter=Ke,Jn.isBefore=Qe,Jn.isBetween=Je,Jn.isSame=$e,Jn.isSameOrAfter=ti,Jn.isSameOrBefore=ei,Jn.isValid=xi,Jn.lang=Un,Jn.locale=ci,Jn.localeData=pi,Jn.max=Fn,Jn.min=Bn,Jn.parsingFlags=ki,Jn.set=V,Jn.startOf=fi,Jn.subtract=Vn,Jn.toArray=bi,Jn.toObject=_i,Jn.toDate=yi,Jn.toISOString=si,Jn.inspect=ri,Jn.toJSON=wi,Jn.toString=ni,Jn.unix=gi,Jn.valueOf=vi,Jn.creationData=Di,Jn.year=yn,Jn.isLeapYear=yt,Jn.weekYear=Si,Jn.isoWeekYear=Ci,Jn.quarter=Jn.quarters=Ni,Jn.month=ut,Jn.daysInMonth=ct,Jn.week=Jn.weeks=Ct,Jn.isoWeek=Jn.isoWeeks=Tt,Jn.weeksInYear=Ei,Jn.isoWeeksInYear=Ti,Jn.date=qn,Jn.day=Jn.days=At,Jn.weekday=Bt,Jn.isoWeekday=Ft,Jn.dayOfYear=zi,Jn.hour=Jn.hours=Cn,Jn.minute=Jn.minutes=Xn,Jn.second=Jn.seconds=Zn,Jn.millisecond=Jn.milliseconds=Qn,Jn.utcOffset=Ee,Jn.utc=Ie,Jn.local=Ne,Jn.parseZone=ze,Jn.hasAlignedHourOffset=Re,Jn.isDST=Le,Jn.isLocal=Be,Jn.isUtcOffset=Fe,Jn.isUtc=He,Jn.isUTC=He,Jn.zoneAbbr=Li,Jn.zoneName=Ai,Jn.dates=O("dates accessor is deprecated. Use date instead.",qn),Jn.months=O("months accessor is deprecated. Use month instead",ut),Jn.years=O("years accessor is deprecated. Use year instead",yn),Jn.zone=O("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Pe),Jn.isDSTShifted=O("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ae);var $n=T.prototype;$n.calendar=E,$n.longDateFormat=P,$n.invalidDate=I,$n.ordinal=N,$n.preparse=Hi,$n.postformat=Hi,$n.relativeTime=z,$n.pastFuture=R,$n.set=S,$n.months=rt,$n.monthsShort=at,$n.monthsParse=dt,$n.monthsRegex=ft,$n.monthsShortRegex=pt,$n.week=Dt,$n.firstDayOfYear=St,$n.firstDayOfWeek=Mt,$n.weekdays=It,$n.weekdaysMin=zt,$n.weekdaysShort=Nt,$n.weekdaysParse=Lt,$n.weekdaysRegex=Ht,$n.weekdaysShortRegex=jt,$n.weekdaysMinRegex=Wt,$n.isPM=Xt,$n.meridiem=Zt,$t("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=O("moment.lang is deprecated. Use moment.locale instead.",$t),e.langData=O("moment.langData is deprecated. Use moment.localeData instead.",ie);var ts=Math.abs,es=so("ms"),is=so("s"),os=so("m"),ns=so("h"),ss=so("d"),rs=so("w"),as=so("M"),hs=so("y"),ds=ao("milliseconds"),ls=ao("seconds"),us=ao("minutes"),cs=ao("hours"),ps=ao("days"),fs=ao("months"),ms=ao("years"),vs=Math.round,gs={s:45,m:45,h:22,d:26,M:11},ys=Math.abs,bs=ke.prototype;return bs.abs=Zi,bs.add=Qi,bs.subtract=Ji,bs.as=oo,bs.asMilliseconds=es,bs.asSeconds=is,bs.asMinutes=os,bs.asHours=ns,bs.asDays=ss,bs.asWeeks=rs,bs.asMonths=as,bs.asYears=hs,bs.valueOf=no,bs._bubble=to,bs.get=ro,bs.milliseconds=ds,bs.seconds=ls,bs.minutes=us,bs.hours=cs,bs.days=ps,bs.weeks=ho,bs.months=fs,bs.years=ms,bs.humanize=fo,bs.toISOString=mo,bs.toString=mo,bs.toJSON=mo,bs.locale=ci,bs.localeData=pi,bs.toIsoString=O("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",mo),bs.lang=Un,q("X",0,0,"unix"),q("x",0,0,"valueOf"),J("x",Zo),J("X",Jo),it("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),it("x",function(t,e,i){i._d=new Date(w(t))}),e.version="2.17.1",i(be),e.fn=Jn,e.min=we,e.max=xe,e.now=Hn,e.utc=u,e.unix=Bi,e.months=Gi,e.isDate=a,e.locale=$t,e.invalid=m,e.duration=je,e.isMoment=b,e.weekdays=Ui,e.parseZone=Fi,e.localeData=ie,e.isDuration=Oe,e.monthsShort=Vi,e.weekdaysMin=Xi,e.defineLocale=te,e.updateLocale=ee,e.locales=oe,e.weekdaysShort=qi,e.normalizeUnits=A,e.relativeTimeRounding=co,e.relativeTimeThreshold=po,e.calendarFormat=qe,e.prototype=Jn,e})}).call(e,i(86)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=87},function(t,e){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){n<16&&(e[o+n++]=u[t])});n<16;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:g+1,d=a-v+(h-g)/1e4;if(d<0&&void 0===t.clockseq&&(r=r+1&16383),(d<0||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,g=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||f,p=0;p<6;p++)s[n+p]=c[p];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;a<16;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;e<16;e++)0===(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},c=0;c<256;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var p=r(),f=[1|p[0],p[1],p[2],p[3],p[4],p[5]],m=16383&(p[6]<<8|p[7]),v=0,g=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e,i){e.util=i(1),e.DOMutil=i(90),e.DataSet=i(91),e.DataView=i(93),e.Queue=i(92),e.Graph3d=i(94),e.graph3d={Camera:i(98),Filter:i(103),Point2d:i(97),Point3d:i(96),Slider:i(104),StepNumber:i(105)},e.moment=i(84),e.Hammer=i(108),e.keycharm=i(111)},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){n<0&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=(0,l.default)(this._options.type),o=0,n=i.length;on?1:or)&&(s=h,r=d)}return s},n.prototype.min=function(t){var e,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(e=0,i=n.length;ethis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var s=i(58),r=o(s),a=i(1),h=i(91);n.prototype.setData=function(t){var e,i,o,n,s;if(this._data){for(this._data.off&&this._data.off("*",this.listener),e=this._data.getIds({filter:this._options&&this._options.filter}),s=[],o=0,n=e.length;o0&&(h[n-1].pointNext=r),h.push(r);return h},o.prototype.create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);this.frame=document.createElement("div"),this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas);var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t),this.frame.filter=document.createElement("div"),this.frame.filter.style.position="absolute",this.frame.filter.style.bottom="0px",this.frame.filter.style.left="0px",this.frame.filter.style.width="100%",this.frame.appendChild(this.frame.filter);var e=this,i=function(t){e._onMouseDown(t)},o=function(t){e._onTouchStart(t)},n=function(t){e._onWheel(t)},s=function(t){e._onTooltip(t)},r=function(t){e._onClick(t)};d.addEventListener(this.frame.canvas,"keydown",onkeydown),d.addEventListener(this.frame.canvas,"mousedown",i),d.addEventListener(this.frame.canvas,"touchstart",o),d.addEventListener(this.frame.canvas,"mousewheel",n),d.addEventListener(this.frame.canvas,"mousemove",s),d.addEventListener(this.frame.canvas,"click",r),this.containerElement.appendChild(this.frame)},o.prototype._setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this._resizeCanvas()},o.prototype._resizeCanvas=function(){this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.frame.filter.style.width=this.frame.canvas.clientWidth-20+"px"},o.prototype.animationStart=function(){if(!this.frame.filter||!this.frame.filter.slider)throw new Error("No animation available");this.frame.filter.slider.play()},o.prototype.animationStop=function(){this.frame.filter&&this.frame.filter.slider&&this.frame.filter.slider.stop()},o.prototype._resizeCenter=function(){"%"===this.xCenter.charAt(this.xCenter.length-1)?this.currentXCenter=parseFloat(this.xCenter)/100*this.frame.canvas.clientWidth:this.currentXCenter=parseFloat(this.xCenter),"%"===this.yCenter.charAt(this.yCenter.length-1)?this.currentYCenter=parseFloat(this.yCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight):this.currentYCenter=parseFloat(this.yCenter)},o.prototype.getCameraPosition=function(){var t=this.camera.getArmRotation();return t.distance=this.camera.getArmLength(),t},o.prototype._readData=function(t){this._dataInitialize(t,this.style),this.dataFilter?this.dataPoints=this.dataFilter._getDataPoints():this.dataPoints=this._getDataPoints(this.dataTable),this._redrawFilter()},o.prototype.setData=function(t){this._readData(t),this.redraw(),this.animationAutoStart&&this.dataFilter&&this.animationStart()},o.prototype.setOptions=function(t){this.animationStop(),v.setOptions(t,this),this.setPointDrawingMethod(),this._setSize(this.width,this.height),this.dataTable&&this.setData(this.dataTable),this.animationAutoStart&&this.dataFilter&&this.animationStart()},o.prototype.setPointDrawingMethod=function(){var t=void 0;switch(this.style){case o.STYLE.BAR:t=o.prototype._redrawBarGraphPoint;break;case o.STYLE.BARCOLOR:t=o.prototype._redrawBarColorGraphPoint;break;case o.STYLE.BARSIZE:t=o.prototype._redrawBarSizeGraphPoint;break;case o.STYLE.DOT:t=o.prototype._redrawDotGraphPoint;break;case o.STYLE.DOTLINE:t=o.prototype._redrawDotLineGraphPoint;break;case o.STYLE.DOTCOLOR:t=o.prototype._redrawDotColorGraphPoint;break;case o.STYLE.DOTSIZE:t=o.prototype._redrawDotSizeGraphPoint;break;case o.STYLE.SURFACE:t=o.prototype._redrawSurfaceGraphPoint;break;case o.STYLE.GRID:t=o.prototype._redrawGridGraphPoint;break;case o.STYLE.LINE:t=o.prototype._redrawLineGraphPoint;break;default:throw new Error("Can not determine point drawing method for graph style '"+this.style+"'")}this._pointDrawingMethod=t},o.prototype.redraw=function(){if(void 0===this.dataPoints)throw new Error("Graph data not initialized");this._resizeCanvas(),this._resizeCenter(),this._redrawSlider(),this._redrawClear(),this._redrawAxis(),this._redrawDataGraph(),this._redrawInfo(),this._redrawLegend()},o.prototype._getContext=function(){var t=this.frame.canvas,e=t.getContext("2d");return e.lineJoin="round",e.lineCap="round",e},o.prototype._redrawClear=function(){var t=this.frame.canvas,e=t.getContext("2d");e.clearRect(0,0,t.width,t.height)},o.prototype._dotSize=function(){return this.frame.clientWidth*this.dotSizeRatio},o.prototype._getLegendWidth=function(){var t;if(this.style===o.STYLE.DOTSIZE){var e=this._dotSize();t=e/2+2*e}else t=this.style===o.STYLE.BARSIZE?this.xBarWidth:20;return t},o.prototype._redrawLegend=function(){if(this.showLegend===!0&&this.style!==o.STYLE.LINE&&this.style!==o.STYLE.BARSIZE){var t=this.style===o.STYLE.BARSIZE||this.style===o.STYLE.DOTSIZE,e=this.style===o.STYLE.DOTSIZE||this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.BARCOLOR,i=Math.max(.25*this.frame.clientHeight,100),n=this.margin,s=this._getLegendWidth(),r=this.frame.clientWidth-this.margin,a=r-s,h=n+i,d=this._getContext();if(d.lineWidth=1,d.font="14px arial",t===!1){var l,c=0,p=i;for(l=c;l0?(t.textAlign="center",t.textBaseline="top",s.y+=n):Math.sin(2*o)<0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(i,s.x,s.y)},o.prototype.drawAxisLabelY=function(t,e,i,o,n){void 0===n&&(n=0);var s=this._convert3Dto2D(e);Math.cos(2*o)<0?(t.textAlign="center",t.textBaseline="top",s.y+=n):Math.sin(2*o)>0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(i,s.x,s.y)},o.prototype.drawAxisLabelZ=function(t,e,i,o){void 0===o&&(o=0);var n=this._convert3Dto2D(e);t.textAlign="right",t.textBaseline="middle",t.fillStyle=this.axisColor,t.fillText(i,n.x-o,n.y)},o.prototype._line3d=function(t,e,i,o){var n=this._convert3Dto2D(e),s=this._convert3Dto2D(i);this._line(t,n,s,o)},o.prototype._redrawAxis=function(){var t,e,i,o,n,s,r,a,h,d,c,p=this._getContext();p.font=24/this.camera.getArmLength()+"px arial";var m=.025/this.scale.x,v=.025/this.scale.y,g=5/this.camera.getArmLength(),y=this.camera.getArmRotation().horizontal,b=new u(Math.cos(y),Math.sin(y)),_=this.xRange,w=this.yRange,x=this.zRange;for(p.lineWidth=1,o=void 0===this.defaultXStep,i=new f(_.min,_.max,this.xStep,o),i.start(!0);!i.end();){var k=i.getCurrent();this.showGrid?(t=new l(k,w.min,x.min),e=new l(k,w.max,x.min),this._line3d(p,t,e,this.gridColor)):(t=new l(k,w.min,x.min),e=new l(k,w.min+m,x.min),this._line3d(p,t,e,this.axisColor),t=new l(k,w.max,x.min),e=new l(k,w.max-m,x.min),this._line3d(p,t,e,this.axisColor)),r=b.x>0?w.min:w.max;var O=new l(k,r,x.min),D=" "+this.xValueLabel(k)+" ";this.drawAxisLabelX(p,O,D,y,g),i.next()}for(p.lineWidth=1,o=void 0===this.defaultYStep,i=new f(w.min,w.max,this.yStep,o),i.start(!0);!i.end();){var M=i.getCurrent();this.showGrid?(t=new l(_.min,M,x.min),e=new l(_.max,M,x.min),this._line3d(p,t,e,this.gridColor)):(t=new l(_.min,M,x.min),e=new l(_.min+v,M,x.min),this._line3d(p,t,e,this.axisColor),t=new l(_.max,M,x.min),e=new l(_.max-v,M,x.min),this._line3d(p,t,e,this.axisColor)),s=b.y>0?_.min:_.max,O=new l(s,M,x.min);var D=" "+this.yValueLabel(M)+" ";this.drawAxisLabelY(p,O,D,y,g),i.next()}for(p.lineWidth=1,o=void 0===this.defaultZStep,i=new f(x.min,x.max,this.zStep,o),i.start(!0),s=b.x>0?_.min:_.max,r=b.y<0?w.min:w.max;!i.end();){var S=i.getCurrent(),C=new l(s,r,S),T=this._convert3Dto2D(C);e=new u(T.x-g,T.y),this._line(p,T,e,this.axisColor);var D=this.zValueLabel(S)+" ";this.drawAxisLabelZ(p,C,D,5),i.next()}p.lineWidth=1,t=new l(s,r,x.min),e=new l(s,r,x.max),this._line3d(p,t,e,this.axisColor);var E,P;p.lineWidth=1,E=new l(_.min,w.min,x.min),P=new l(_.max,w.min,x.min),this._line3d(p,E,P,this.axisColor),E=new l(_.min,w.max,x.min),P=new l(_.max,w.max,x.min),this._line3d(p,E,P,this.axisColor),p.lineWidth=1,t=new l(_.min,w.min,x.min),e=new l(_.min,w.max,x.min),this._line3d(p,t,e,this.axisColor),t=new l(_.max,w.min,x.min),e=new l(_.max,w.max,x.min),this._line3d(p,t,e,this.axisColor);var I=this.xLabel;I.length>0&&(c=.1/this.scale.y,s=(_.max+3*_.min)/4,r=b.x>0?w.min-c:w.max+c,n=new l(s,r,x.min),this.drawAxisLabelX(p,n,I,y));var N=this.yLabel;N.length>0&&(d=.1/this.scale.x,s=b.y>0?_.min-d:_.max+d,r=(w.max+3*w.min)/4,n=new l(s,r,x.min),this.drawAxisLabelY(p,n,N,y));var z=this.zLabel;z.length>0&&(h=30,s=b.x>0?_.min:_.max,r=b.y<0?w.min:w.max,a=(x.max+3*x.min)/4,n=new l(s,r,a),this.drawAxisLabelZ(p,n,z,h))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._getStrokeWidth=function(t){return void 0!==t?this.showPerspective?1/-t.trans.z*this.dataColor.strokeWidth:-(this.eye.z/this.camera.getArmLength())*this.dataColor.strokeWidth:this.dataColor.strokeWidth},o.prototype._redrawBar=function(t,e,i,o,n,s){var r,a,h=this,d=e.point,u=this.zRange.min,c=[{point:new l(d.x-i,d.y-o,d.z)},{point:new l(d.x+i,d.y-o,d.z)},{point:new l(d.x+i,d.y+o,d.z)},{point:new l(d.x-i,d.y+o,d.z)}],p=[{point:new l(d.x-i,d.y-o,u)},{point:new l(d.x+i,d.y-o,u)},{point:new l(d.x+i,d.y+o,u)},{point:new l(d.x-i,d.y+o,u)}];c.forEach(function(t){t.screen=h._convert3Dto2D(t.point)}),p.forEach(function(t){t.screen=h._convert3Dto2D(t.point)});var f=[{corners:c,center:l.avg(p[0].point,p[2].point)},{corners:[c[0],c[1],p[1],p[0]],center:l.avg(p[1].point,p[0].point)},{corners:[c[1],c[2],p[2],p[1]],center:l.avg(p[2].point,p[1].point)},{corners:[c[2],c[3],p[3],p[2]],center:l.avg(p[3].point,p[2].point)},{corners:[c[3],c[0],p[0],p[3]],center:l.avg(p[0].point,p[3].point)}];for(e.surfaces=f,r=0;r0}if(a){var p,f=(e.point.z+i.point.z+o.point.z+n.point.z)/4,m=240*(1-(f-this.zRange.min)*this.scale.z/this.verticalRatio),v=1;this.showShadow?(p=Math.min(1+u.x/c/2,1),s=this._hsv2rgb(m,v,p),r=s):(p=1,s=this._hsv2rgb(m,v,p),r=this.axisColor)}else s="gray",r=this.axisColor;t.lineWidth=this._getStrokeWidth(e);var g=[e,i,n,o];this._polygon(t,g,s,r)}},o.prototype._drawGridLine=function(t,e,i){if(void 0!==e&&void 0!==i){var o=(e.point.z+i.point.z)/2,n=240*(1-(o-this.zRange.min)*this.scale.z/this.verticalRatio);t.lineWidth=2*this._getStrokeWidth(e),t.strokeStyle=this._hsv2rgb(n,1,1),this._line(t,e.screen,i.screen)}},o.prototype._redrawGridGraphPoint=function(t,e){this._drawGridLine(t,e,e.pointRight),this._drawGridLine(t,e,e.pointTop)},o.prototype._redrawLineGraphPoint=function(t,e){void 0!==e.pointNext&&(t.lineWidth=this._getStrokeWidth(e),t.strokeStyle=this.dataColor.stroke,this._line(t,e.screen,e.pointNext.screen))},o.prototype._redrawDataGraph=function(){var t,e=this._getContext();if(!(void 0===this.dataPoints||this.dataPoints.length<=0))for(this._calcTranslations(this.dataPoints),t=0;t0?1:t<0?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=100,s=null,r=null,a=null,h=new u(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){s=this.dataPoints[i];var d=s.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var c=d[l],p=c.corners,f=[p[0].screen,p[1].screen,p[2].screen],m=[p[2].screen,p[3].screen,p[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))return s}}else for(i=0;i"+this.xLabel+":"+t.point.x+""+this.yLabel+":"+t.point.y+""+this.zLabel+":"+t.point.z+"",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,a=o.offsetWidth,h=o.offsetHeight,d=t.screen.x-n/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-a/2+"px",o.style.top=t.screen.y-h/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},o.prototype.setCameraPosition=function(t){v.setCameraPosition(t,this),this.redraw()},o.prototype.setSize=function(t,e){this._setSize(t,e),this.redraw()},t.exports=o},function(t,e){function i(t){if(t)return o(t)}function o(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;ns&&(t=o(t)*s),i(e)>s&&(e=o(e)*s),this.cameraOffset.x=t,this.cameraOffset.y=e,this.calculateCameraOrientation()},n.prototype.getOffset=function(t,e){return this.cameraOffset},n.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},n.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),void 0===t&&void 0===e||this.calculateCameraOrientation()},n.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},n.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.setOffset(this.cameraOffset.x,this.cameraOffset.y),this.calculateCameraOrientation())},n.prototype.getArmLength=function(){return this.armLength},n.prototype.getCameraLocation=function(){return this.cameraLocation},n.prototype.getCameraRotation=function(){return this.cameraRotation},n.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal;var t=this.cameraRotation.x,e=(this.cameraRotation.y,this.cameraRotation.z),i=this.cameraOffset.x,o=this.cameraOffset.y,n=Math.sin,s=Math.cos;this.cameraLocation.x=this.cameraLocation.x+i*s(e)+o*-n(e)*s(t),this.cameraLocation.y=this.cameraLocation.y+i*n(e)+o*s(e)*s(t),this.cameraLocation.z=this.cameraLocation.z+o*n(t)},t.exports=n},function(t,e,i){t.exports={default:i(100),__esModule:!0}},function(t,e,i){i(101),t.exports=i(17).Math.sign},function(t,e,i){var o=i(15);o(o.S,"Math",{sign:i(102)})},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,i){function o(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:t0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var n=i(93);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){if(void 0!==this.index)return this.values[this.index]},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(o),this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(tthis.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,o=i+3;return o},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e){function i(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}i.prototype.isNumeric=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},i.prototype.setRange=function(t,e,i,o){if(!this.isNumeric(t))throw new Error("Parameter 'start' is not numeric; value: "+t);if(!this.isNumeric(e))throw new Error("Parameter 'end' is not numeric; value: "+t);if(!this.isNumeric(i))throw new Error("Parameter 'step' is not numeric; value: "+t);this._start=t?t:0,this._end=e?e:0,this.setStep(i,o)},i.prototype.setStep=function(t,e){void 0===t||t<=0||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=i.calculatePrettyStep(t):this._step=t)},i.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),s<=0&&(s=1),s},i.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},i.prototype.getStep=function(){return this._step},i.prototype.start=function(t){void 0===t&&(t=!1),this._current=this._start-this._start%this._step,t&&this.getCurrent()this._end},t.exports=i},function(t,e){function i(){this.min=void 0,this.max=void 0}i.prototype.adjust=function(t){void 0!==t&&((void 0===this.min||this.min>t)&&(this.min=t),(void 0===this.max||this.maxi)throw new Error("Passed expansion value makes range invalid");this.min=e,this.max=i}},i.prototype.range=function(){return this.max-this.min},i.prototype.center=function(){return(this.min+this.max)/2},t.exports=i},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function s(t){return void 0===t||""===t||"string"!=typeof t?t:t.charAt(0).toUpperCase()+t.slice(1)}function r(t,e){return void 0===t||""===t?e:t+s(e)}function a(t,e,i,o){var n,s;for(var a in i)n=i[a],s=r(o,n),e[s]=t[n]}function h(t,e,i,o){var n,s;for(var a in i)n=i[a],void 0!==t[n]&&(s=r(o,n),e[s]=t[n])}function d(t,e){if(void 0===t||n(t))throw new Error("No DEFAULTS passed");if(void 0===e)throw new Error("No dst passed");S=t,a(t,e,D),a(t,e,M,"default"),u(t,e),e.margin=10,e.showGrayBottom=!1,e.showTooltip=!1,e.onclick_callback=null,e.eye=new x(0,0,-1)}function l(t,e){if(void 0!==t){if(void 0===e)throw new Error("No dst passed");if(void 0===S||n(S))throw new Error("DEFAULTS not set for module Settings");h(t,e,D),h(t,e,M,"default"),u(t,e)}}function u(t,e){void 0!==t.backgroundColor&&v(t.backgroundColor,e),g(t.dataColor,e),m(t.style,e),c(t.showLegend,e),y(t.cameraPosition,e),void 0!==t.tooltip&&(e.showTooltip=t.tooltip),void 0!=t.onclick&&(e.onclick_callback=t.onclick)}function c(t,e){if(void 0===t){var i=void 0===S.showLegend;if(i){var o=e.style===k.DOTCOLOR||e.style===k.DOTSIZE;e.showLegend=o}}else e.showLegend=t}function p(t){var e=O[t];return void 0===e?-1:e}function f(t){var e=!1;for(var i in k)if(k[i]===t){e=!0;break}return e}function m(t,e){if(void 0!==t){var i;if("string"==typeof t){if(i=p(t),i===-1)throw new Error("Style '"+t+"' is invalid")}else{if(!f(t))throw new Error("Style '"+t+"' is invalid");i=t}e.style=i}}function v(t,e){var i="white",o="gray",n=1;if("string"==typeof t)i=t,o="none",n=0;else{if("object"!==("undefined"==typeof t?"undefined":(0,_.default)(t)))throw new Error("Unsupported type of backgroundColor");void 0!==t.fill&&(i=t.fill),void 0!==t.stroke&&(o=t.stroke),void 0!==t.strokeWidth&&(n=t.strokeWidth)}e.frame.style.backgroundColor=i,e.frame.style.borderColor=o,e.frame.style.borderWidth=n+"px",e.frame.style.borderStyle="solid"}function g(t,e){void 0!==t&&(void 0===e.dataColor&&(e.dataColor={}),"string"==typeof t?(e.dataColor.fill=t,e.dataColor.stroke=t):(t.fill&&(e.dataColor.fill=t.fill),t.stroke&&(e.dataColor.stroke=t.stroke),void 0!==t.strokeWidth&&(e.dataColor.strokeWidth=t.strokeWidth)))}function y(t,e){var i=t;void 0!==i&&(void 0===e.camera&&(e.camera=new w),e.camera.setArmRotation(i.horizontal,i.vertical),e.camera.setArmLength(i.distance))}var b=i(62),_=o(b),w=i(98),x=i(96),k={BAR:0,BARCOLOR:1,BARSIZE:2,DOT:3,DOTLINE:4,DOTCOLOR:5,DOTSIZE:6,GRID:7,LINE:8,SURFACE:9},O={dot:k.DOT,"dot-line":k.DOTLINE,"dot-color":k.DOTCOLOR,"dot-size":k.DOTSIZE,line:k.LINE,grid:k.GRID,surface:k.SURFACE,bar:k.BAR,"bar-color":k.BARCOLOR,"bar-size":k.BARSIZE},D=["width","height","filterLabel","legendLabel","xLabel","yLabel","zLabel","xValueLabel","yValueLabel","zValueLabel","showGrid","showPerspective","showShadow","keepAspectRatio","verticalRatio","dotSizeRatio","showAnimationControls","animationInterval","animationPreload","animationAutoStart","axisColor","gridColor","xCenter","yCenter"],M=["xBarWidth","yBarWidth","valueMin","valueMax","xMin","xMax","xStep","yMin","yMax","yStep","zMin","zMax","zStep"],S=void 0;t.exports.STYLE=k,t.exports.setDefaults=d,t.exports.setOptions=l,t.exports.setCameraPosition=y},function(t,e,i){if("undefined"!=typeof window){var o=i(109),n=window.Hammer||i(110);t.exports=o(n,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null;return function e(i,o){function n(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0};var o=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof o&&(e.srcEvent.stopPropagation=function(){o(),e.stopPropagation()}),e.firstTarget=t;for(var n=t;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a0?d._handlers[t]=o:(i.off(t,s),delete d._handlers[t]))}),d},d.emit=function(e,o){t=o.target,i.emit(e,o)},d.destroy=function(){var t=i.element.hammer,e=t.indexOf(d);e!==-1&&t.splice(e,1),t.length||delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(p(t,i),e)}function d(t,e,i){return!!Array.isArray(t)&&(l(t,i[e],i),!0)}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function c(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&mt(o,i)}function p(t,e){return function(){return t.apply(e,arguments)}}function f(t,e){return typeof t==yt?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function v(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function g(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function y(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function O(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=N(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=z(o);e.timeStamp=wt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=B(a,h),e.distance=A(a,h),P(i,e),e.offsetDirection=L(e.deltaX,e.deltaY);var d=R(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=d.x,e.overallVelocityY=d.y,e.overallVelocity=_t(d.x)>_t(d.y)?d.x:d.y,e.scale=r?H(r.pointers,o):1,e.rotation=r?F(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,I(i,e);var l=t.element;y(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==zt&&s.eventType!==Lt||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function I(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=At&&(h>Nt||r.velocity===a)){var d=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,u=R(h,d,l);o=u.x,n=u.y,i=_t(u.x)>_t(u.y)?u.x:u.y,s=L(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function N(t){for(var e=[],i=0;i=_t(e)?t<0?Ft:Ht:e<0?jt:Wt}function A(t,e,i){i||(i=Ut);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function B(t,e,i){i||(i=Ut);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function F(t,e){return B(e[1],e[0],qt)+B(t[1],t[0],qt)}function H(t,e){return A(e[0],e[1],qt)/A(t[0],t[1],qt)}function j(){this.evEl=Zt,this.evWin=Kt,this.pressed=!1,S.apply(this,arguments)}function W(){this.evEl=$t,this.evWin=te,S.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Y(){this.evTarget=ie,this.evWin=oe,this.started=!1,S.apply(this,arguments)}function G(t,e){var i=x(t.touches),o=x(t.changedTouches);return e&(Lt|At)&&(i=k(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=se,this.targetIds={},S.apply(this,arguments)}function U(t,e){var i=x(t.touches),o=this.targetIds;if(e&(zt|Rt)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=x(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return y(t.target,h)}),e===zt)for(n=0;n-1&&o.splice(t,1)};setTimeout(n,re)}}function K(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,o=0;o-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;o<_e&&e(i.options.event+et(o)),e(i.options.event),t.additionalEvent&&e(t.additionalEvent),o>=_e&&e(i.options.event+et(o))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=ke)},canEmit:function(){for(var t=0;te.threshold&&n&e.direction},attrTest:function(t){return nt.prototype.attrTest.call(this,t)&&(this.state&ye||!(this.state&ye)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=it(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),c(rt,nt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[pe]; -},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ye)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),c(at,tt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[ue]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(Lt|At)&&!n)this.reset();else if(t.eventType&zt)this.reset(),this._timer=h(function(){this.state=we,this.tryEmit()},e.time,this);else if(t.eventType&Lt)return we;return ke},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===we&&(t&&t.eventType&Lt?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=wt(),this.manager.emit(this.options.event,this._input)))}}),c(ht,nt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[pe]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ye)}}),c(dt,nt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Yt|Gt,pointers:1},getTouchAction:function(){return st.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Yt|Gt)?e=t.overallVelocity:i&Yt?e=t.overallVelocityX:i&Gt&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&_t(e)>this.options.velocity&&t.eventType&Lt},emit:function(t){var e=it(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),c(lt,tt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ce]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distances)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=!e||void 0===e.animation||e.animation;this.range.setRange(r-a/2,r+a/2,h)}}},n.prototype.fit=function(t){var e,i=!t||void 0===t.animation||t.animation,o=this.itemsData&&this.itemsData.getDataSet();1===o.length&&void 0===o.get()[0].end?(e=this.getDataRange(),this.moveTo(e.min.valueOf(),{animation:i})):(e=this.getItemRange(),this.range.setRange(e.min,e.max,i))},n.prototype.getItemRange=function(){var t=this,e=this.getDataRange(),i=null!==e.min?e.min.valueOf():null,o=null!==e.max?e.max.valueOf():null,n=null,s=null;if(null!=i&&null!=o){var r,a,h,d,u;!function(){var e=function(t){return l.convert(t.data.start,"Date").valueOf()},c=function(t){var e=void 0!=t.data.end?t.data.end:t.data.start;return l.convert(e,"Date").valueOf()};r=o-i,r<=0&&(r=10),a=r/t.props.center.width,l.forEach(t.itemSet.items,function(t){t.groupShowing&&(t.show(),t.repositionX());var r=e(t),h=c(t);if(this.options.rtl)var d=r-(t.getWidthRight()+10)*a,l=h+(t.getWidthLeft()+10)*a;else var d=r-(t.getWidthLeft()+10)*a,l=h+(t.getWidthRight()+10)*a;do&&(o=l,s=t)}.bind(t)),n&&s&&(h=n.getWidthLeft()+10,d=s.getWidthRight()+10,u=t.props.center.width-h-d,u>0&&(t.options.rtl?(i=e(n)-d*r/u,o=c(s)+h*r/u):(i=e(n)-h*r/u,o=c(s)+d*r/u)))}()}return{min:null!=i?new Date(i):null,max:null!=o?new Date(o):null}},n.prototype.getDataRange=function(){var t=null,e=null,i=this.itemsData&&this.itemsData.getDataSet();return i&&i.forEach(function(i){var o=l.convert(i.start,"Date").valueOf(),n=l.convert(void 0!=i.end?i.end:i.start,"Date").valueOf();(null===t||oe)&&(e=n)}),{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},n.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY;if(this.options.rtl)var o=l.getAbsoluteRight(this.dom.centerContainer)-e;else var o=e-l.getAbsoluteLeft(this.dom.centerContainer);var n=i-l.getAbsoluteTop(this.dom.centerContainer),s=this.itemSet.itemFromTarget(t),r=this.itemSet.groupFromTarget(t),a=g.customTimeFromTarget(t),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),u=this.body.util.getStep(),c=this._toTime(o),p=h?h(c,d,u):c,f=l.getTarget(t),m=null;return null!=s?m="item":null!=a?m="custom-time":l.hasParent(f,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&l.hasParent(f,this.timeAxis2.dom.foreground)?m="axis":l.hasParent(f,this.itemSet.dom.labelSet)?m="group-label":l.hasParent(f,this.currentTime.bar)?m="current-time":l.hasParent(f,this.dom.center)&&(m="background"),{event:t,item:s?s.id:null,group:r?r.groupId:null,what:m,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:c,snappedTime:p}},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(82),s=o(n),r=i(62),a=o(r),h=i(115),d=o(h),l=i(116),u=o(l),c=i(120),p=o(c),f=i(1),m=function(){function t(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,d.default)(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},f.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new p.default(n),this.wrapper=void 0}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===("undefined"==typeof t?"undefined":(0,a.default)(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),this.options.filter===!1&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):e!==!0&&e.indexOf(n)===-1||(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);this.options.showButton===!0&&!function(){var e=document.createElement("div");e.className="vis-configuration vis-config-button",e.innerHTML="generate options",e.onclick=function(){t._printOptions()},e.onmouseover=function(){e.className="vis-configuration vis-config-button hover"},e.onmouseout=function(){e.className="vis-configuration vis-config-button"},t.optionsContainer=document.createElement("div"),t.optionsContainer.className="vis-configuration vis-config-option-container",t.domElements.push(t.optionsContainer),t.domElements.push(e)}(),this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?o-1:0),s=1;s2&&void 0!==arguments[2]&&arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,i===!0?o.innerHTML=""+t+":":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&t.indexOf(e)!==-1&&(n=t.indexOf(e));for(var s=0;ss&&1!==s&&(a.max=Math.ceil(e*l),d=a.max,h="range increased"),a.value=e}else a.value=o;var u=document.createElement("input");u.className="vis-configuration vis-config-rangeinput",u.value=a.value;var c=this;a.onchange=function(){u.value=this.value,c._update(Number(this.value),i)},a.oninput=function(){u.value=this.value};var p=this._makeLabel(i[i.length-1],i),f=this._makeItem(i,p,a,u);""!==h&&this.popupHistory[f]!==d&&(this.popupHistory[f]=d,this._setupPopup(h,f))}},{key:"_setupPopup",value:function(t,e){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],h=f.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var d=this._getValue(h);if(a instanceof Array)this._handleArray(a,d,h);else if("string"==typeof a)this._makeTextInput(a,d,h);else if("boolean"==typeof a)this._makeCheckbox(a,d,h);else if(a instanceof Object){var l=!0;if(e.indexOf("physics")!==-1&&this.moduleOptions.physics.solver!==r&&(l=!1),l===!0)if(void 0!==a.enabled){var u=f.copyAndExtendArray(h,"enabled"),c=this._getValue(u);if(c===!0){var p=this._makeLabel(r,h,!0);this._makeItem(h,p),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,c,h)}else{var m=this._makeLabel(r,h,!0);this._makeItem(h,m),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i;t="true"===t||t,t="false"!==t&&t;for(var n=0;nvar options = "+(0,s.default)(t,null,2)+""}},{key:"getOptions",value:function(){for(var t={},e=0;e0&&void 0!==arguments[0]?arguments[0]:1;(0,a.default)(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return(0,d.default)(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};if("string"==typeof t)return e[t]}},{key:"setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),c.isString(t)===!0){if(c.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(c.isValidRGBA(t)===!0){var r=t.substr(5).substr(0,t.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(c.isValidHex(t)===!0){var a=c.hexToRGB(t);i={r:a.r,g:a.g,b:a.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var h=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:h}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+(0, -s.default)(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e===!0&&(this.previousColor=c.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e===!0&&(this.initialColor=c.extend({},t)),this.color=t;var i=c.RGBToHSV(t.r,t.g,t.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=c.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=c.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.color,e=c.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(t){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(t){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var i=this;this.opacityRange.onchange=function(){i._setOpacity(this.value)},this.opacityRange.oninput=function(){i._setOpacity(this.value)},this.brightnessRange.onchange=function(){i._setBrightness(this.value)},this.brightnessRange.oninput=function(){i._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new l(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),u.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var a=2*Math.PI/360,h=1/360,d=1/this.r,l=void 0;for(s=0;s<360;s++)for(r=0;rs.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),g):n.distance<=r?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),g):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print((0,d.default)(i))+t.printLocation(o,e),g),m=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=1e9,r="",a=[],h=e.toLowerCase(),d=void 0;for(var l in i){var u=void 0;if(void 0!==i[l].__type__&&n===!0){var c=t.findInOptions(e,i[l],f.copyAndExtendArray(o,l));s>c.distance&&(r=c.closestMatch,a=c.path,s=c.distance,d=c.indexMatch)}else l.toLowerCase().indexOf(h)!==-1&&(d=l),u=t.levenshteinDistance(e,l),s>u&&(r=l,a=f.copyArray(o),s=u)}return{closestMatch:r,path:a,distance:s,indexMatch:d}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Problem value found at: \n",o="\n\n"+i+"options = {\n",n=0;n1e3&&(i=1e3),e.body.dom.rollingModeBtn.style.visibility="hidden",e.currentTimeTimer=setTimeout(t,i)}var e=this;t()},n.prototype.stopRolling=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),this.rolling=!1,this.body.dom.rollingModeBtn.style.visibility="visible")},n.prototype.setRange=function(t,e,i,o,n){o!==!0&&(o=!1);var s=void 0!=t?c.convert(t,"Date").valueOf():null,r=void 0!=e?c.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var h=this,l=this.start,p=this.end,f="object"===("undefined"==typeof i?"undefined":(0,u.default)(i))&&"duration"in i?i.duration:500,v="object"===("undefined"==typeof i?"undefined":(0,u.default)(i))&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",g=c.easingFunctions[v];if(!g)throw new Error("Unknown easing function "+(0,d.default)(v)+". Choose from: "+(0,a.default)(c.easingFunctions).join(", "));var y=(new Date).valueOf(),b=!1,_=function t(){if(!h.props.touch.dragging){var e=(new Date).valueOf(),i=e-y,a=g(i/f),d=i>f,u=d||null===s?s:l+(s-l)*a,v=d||null===r?r:p+(r-p)*a;w=h._applyRange(u,v),m.updateHiddenDates(h.options.moment,h.body,h.options.hiddenDates),b=b||w;var _={start:new Date(h.start),end:new Date(h.end),byUser:o,event:c.elementsCensor(n)};w&&h.body.emitter.emit("rangechange",_),d?b&&h.body.emitter.emit("rangechanged",_):h.animationTimer=setTimeout(t,20)}};return _()}var w=this._applyRange(s,r);if(m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),w){var x={start:new Date(this.start),end:new Date(this.end),byUser:o,event:c.elementsCensor(n)};this.body.emitter.emit("rangechange",x),this.body.emitter.emit("rangechanged",x)}},n.prototype.getMillisecondsPerPixel=function(){return(this.end-this.start)/this.body.dom.center.clientWidth},n.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},n.prototype._applyRange=function(t,e){var i,o=null!=t?c.convert(t,"Date").valueOf():this.start,n=null!=e?c.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?c.convert(this.options.max,"Date").valueOf():null,r=null!=this.options.min?c.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(ns&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=r&&o=this.start-h&&n<=this.end?(o=this.start,n=this.end):(i=a-(n-o),o-=i/2,n+=i/2)}}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);d<0&&(d=0),n-o>d&&(this.end-this.start===d&&othis.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},n.prototype.getRange=function(){return{start:this.start,end:this.end}},n.prototype.conversion=function(t,e){return n.conversion(this.start,this.end,t,e)},n.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},n.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this._isInsideRange(t)&&this.props.touch.allowDragging&&(this.stopRolling(),this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},n.prototype._onDrag=function(t){if(t&&this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;s(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height;if(this.options.rtl)var a=i/r*o;else var a=-i/r*o;var h=this.props.touch.start+a,d=this.props.touch.end+a,l=m.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),u=m.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(l!=h||u!=d)return this.deltaDifference+=i,this.props.touch.start=l,this.props.touch.end=u,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d);var p=new Date(this.start),f=new Date(this.end);this.body.emitter.emit("rangechange",{start:p,end:f,byUser:!0,event:c.elementsCensor(t)}),this.body.emitter.emit("panmove")}},n.prototype._onDragEnd=function(t){this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0,event:c.elementsCensor(t)}))},n.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),this.options.zoomKey&&!t[this.options.zoomKey]&&this.options.zoomable||!this.options.zoomable&&this.options.moveable){if(this.options.horizontalScroll){t.preventDefault();var i=e*(this.end-this.start)/20,o=this.start-i,n=this.end-i;this.setRange(o,n,!1,!0,t)}}else if(this.options.zoomable&&this.options.moveable&&this._isInsideRange(t)&&e){var s;s=e<0?1-e/5:1/(1+e/5);var r;if(this.rolling)r=(this.start+this.end)/2;else{var a=this.getPointer({x:t.clientX,y:t.clientY},this.body.dom.center);r=this._pointerToDate(a)}this.zoom(s,r,e,t),t.preventDefault()}},n.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},n.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=this.getPointer(t.center,this.body.dom.center)),this.stopRolling();var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,i),s=o-n,r=i-n+(this.props.touch.start-(i-n))*e,a=i+s+(this.props.touch.end-(i+s))*e;this.startToFront=1-e<=0,this.endToFront=e-1<=0;var h=m.snapAwayFromHidden(this.body.hiddenDates,r,1-e,!0),d=m.snapAwayFromHidden(this.body.hiddenDates,a,e-1,!0);h==r&&d==a||(this.props.touch.start=h,this.props.touch.end=d,this.scaleOffset=1-t.scale,r=h,a=d),this.setRange(r,a,!1,!0,t),this.startToFront=!1,this.endToFront=!0}},n.prototype._isInsideRange=function(t){var e=t.center?t.center.x:t.clientX;if(this.options.rtl)var i=e-c.getAbsoluteLeft(this.body.dom.centerContainer);else var i=c.getAbsoluteRight(this.body.dom.centerContainer)-e;var o=this.body.util.toTime(i);return o>=this.start&&o<=this.end},n.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(s(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},n.prototype.getPointer=function(t,e){return this.options.rtl?{x:c.getAbsoluteRight(e)-t.x,y:t.y-c.getAbsoluteTop(e)}:{x:t.x-c.getAbsoluteLeft(e),y:t.y-c.getAbsoluteTop(e)}},n.prototype.zoom=function(t,e,i,o){null==e&&(e=(this.start+this.end)/2);var n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),s=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,e),r=n-s,a=e-s+(this.start-(e-s))*t,h=e+r+(this.end-(e+r))*t;this.startToFront=!(i>0),this.endToFront=!(-i>0);var d=m.snapAwayFromHidden(this.body.hiddenDates,a,i,!0),l=m.snapAwayFromHidden(this.body.hiddenDates,h,-i,!0);d==a&&l==h||(a=d,h=l),this.setRange(a,h,!1,!0,o),this.startToFront=!1,this.endToFront=!0},n.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},n.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n,!1,!0,event)},t.exports=n},function(t,e,i){function o(t,e){this.options=null,this.props=null}var n=i(1);o.prototype.setOptions=function(t){t&&n.extend(this.options,t)},o.prototype.redraw=function(){return!1},o.prototype.destroy=function(){},o.prototype._isResized=function(){var 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},t.exports=o},function(t,e){e.convertHiddenOptions=function(t,i,o){if(o&&!Array.isArray(o))return e.convertHiddenOptions(t,i,[o]);if(i.hiddenDates=[],o&&1==Array.isArray(o)){for(var n=0;n=4*a){var c=0,p=s.clone();switch(o[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}for(;d=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o=r&&nt.range.end){var h={start:t.range.start,end:i};i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,h,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale}i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,t.range,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale},e.toTime=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return new Date(i/n.scale+n.offset)}var s=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end),r=t.range.end-t.range.start-s,a=r*i/o,h=e.getAccumulatedHiddenDuration(t.body.hiddenDates,t.range,a),d=new Date(h+a+t.range.start);return d},e.getHiddenDurationBetween=function(t,e,i){for(var o=0,n=0;n=e&&r=e&&r<=i&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,o,n){return n=t(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,o,n)},e.getHiddenDurationBefore=function(t,e,i,o){var n=0;o=t(o).toDate().valueOf();for(var s=0;s=i.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?o<0?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&t-1||h))return t.dataTransfer.dropEffect="move",h=!0,!1}function n(t){try{var e=JSON.parse(t.dataTransfer.getData("text"));if(!e.content)return}catch(t){return!1}return h=!1,t.center={x:t.clientX,y:t.clientY},s.itemSet._onAddItem(t),!1}this.dom={},this.dom.container=t,this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"), -this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.rollingModeBtn=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.rollingModeBtn.className="vis-rolling-mode-btn",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.rollingModeBtn),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.on("rangechange",function(){this.initialDrawDone===!0&&this._redraw()}.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("panmove",this._onDrag.bind(this));var s=this;this._origRedraw=this._redraw.bind(this),this._redraw=c.throttle(this._origRedraw),this.on("_change",function(t){s.itemSet&&s.itemSet.initialItemSetDrawn&&t&&1==t.queue?s._redraw():s._origRedraw()}),this.hammer=new l(this.dom.root);var r=this.hammer.get("pinch").set({enable:!0});u.disablePreventDefaultVertically(r),this.hammer.get("pan").set({threshold:5,direction:l.DIRECTION_HORIZONTAL}),this.listeners={};var a=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];a.forEach(function(t){var e=function(e){s.isActive()&&s.emit(t,e)};s.hammer.on(t,e),s.listeners[t]=e}),u.onTouch(this.hammer,function(t){s.emit("touch",t)}.bind(this)),u.onRelease(this.hammer,function(t){s.emit("release",t)}.bind(this)),this.dom.centerContainer.addEventListener?(this.dom.centerContainer.addEventListener("mousewheel",e.bind(this),!1),this.dom.centerContainer.addEventListener("DOMMouseScroll",e.bind(this),!1)):this.dom.centerContainer.attachEvent("onmousewheel",e.bind(this)),this.dom.left.parentNode.addEventListener("scroll",i.bind(this)),this.dom.right.parentNode.addEventListener("scroll",i.bind(this));var h=!1;if(this.dom.center.addEventListener("dragover",o.bind(this),!1),this.dom.center.addEventListener("drop",n.bind(this),!1),this.customTimes=[],this.touch={},this.redrawCount=0,this.initialDrawDone=!1,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},n.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates","locale","locales","moment","rtl","zoomKey","horizontalScroll","verticalScroll"];if(c.selectiveExtend(e,this.options,t),this.dom.rollingModeBtn.style.visibility="hidden",this.options.rtl&&(this.dom.container.style.direction="rtl",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical-rtl"),this.options.verticalScroll&&(this.options.rtl?this.dom.rightContainer.className="vis-panel vis-right vis-vertical-scroll":this.dom.leftContainer.className="vis-panel vis-left vis-vertical-scroll"),this.options.orientation={item:void 0,axis:void 0},"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"===(0,h.default)(t.orientation)&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new p(this.body);i.setOptions=function(t){var e=t?c.extend({},t):{};e.orientation="top",p.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);o!==-1&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),"hiddenDates"in this.options&&m.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new f(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),"configure"in t){this.configurator||(this.configurator=this._createConfigurator()),this.configurator.setOptions(t.configure);var n=c.deepExtend({},this.options);this.components.forEach(function(t){c.deepExtend(n,t.options)}),this.configurator.setModuleOptions({global:n})}this._redraw()},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},n.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));i.length>0&&i[0].setCustomTime(t)},n.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));return e[0].getCustomTime()},n.prototype.setCustomTimeTitle=function(t,e){var i=this.customTimes.filter(function(t){return t.options.id===e});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));if(i.length>0)return i[0].setCustomTitle(t)},n.prototype.getEventProperties=function(t){return{event:t}},n.prototype.addCustomTime=function(t,e){var i=void 0!==t?c.convert(t,"Date").valueOf():new Date,o=this.customTimes.some(function(t){return t.options.id===e});if(o)throw new Error("A custom time with id "+(0,r.default)(e)+" already exists");var n=new v(this.body,c.extend({},this.options,{time:i,id:e}));return this.customTimes.push(n),this.components.push(n),this._redraw(),e},n.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},n.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},n.prototype.fit=function(t){var e=this.getDataRange();if(null!==e.min||null!==e.max){var i=e.max-e.min,o=new Date(e.min.valueOf()-.01*i),n=new Date(e.max.valueOf()+.01*i),s=!t||void 0===t.animation||t.animation;this.range.setRange(o,n,s)}},n.prototype.getDataRange=function(){throw new Error("Cannot invoke abstract method getDataRange")},n.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0===n.animation||n.animation,this.range.setRange(n.start,n.end,o)}else o=!i||void 0===i.animation||i.animation,this.range.setRange(t,e,o)},n.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=c.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=!e||void 0===e.animation||e.animation;this.range.setRange(n,s,r)},n.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},n.prototype.zoomIn=function(t){if(!(!t||t<0||t>1)){var e=this.getWindow(),i=e.start.valueOf(),o=e.end.valueOf(),n=o-i,s=n/(1+t),r=(n-s)/2,a=i+r,h=o-r;this.setWindow({start:a,end:h})}},n.prototype.zoomOut=function(t){if(!(!t||t<0||t>1)){var e=this.getWindow(),i=e.start.valueOf(),o=e.end.valueOf(),n=o-i,s=i-n*t/2,r=o+n*t/2;this.setWindow({start:s,end:r})}},n.prototype.redraw=function(){this._redraw()},n.prototype._redraw=function(){this.redrawCount++;var t=!1,e=this.options,i=this.props,o=this.dom;if(o&&o.container&&0!=o.root.offsetWidth){m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),"top"==e.orientation?(c.addClassName(o.root,"vis-top"),c.removeClassName(o.root,"vis-bottom")):(c.removeClassName(o.root,"vis-top"),c.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=c.option.asSize(e.maxHeight,""),o.root.style.minHeight=c.option.asSize(e.minHeight,""),o.root.style.width=c.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top,i.borderRootHeight=o.root.offsetHeight-o.root.clientHeight,i.borderRootWidth=o.root.offsetWidth-o.root.clientWidth,0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(i.borderRootWidth=i.borderRootHeight),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var n=Math.max(i.left.height,i.center.height,i.right.height),s=i.top.height+n+i.bottom.height+i.borderRootHeight+i.border.top+i.border.bottom;o.root.style.height=c.option.asSize(e.height,s+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-i.borderRootHeight;var r=i.root.height-i.top.height-i.bottom.height-i.borderRootHeight;i.centerContainer.height=r,i.leftContainer.height=r,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-i.borderRootWidth,this.initialDrawDone||(i.scrollbarWidth=c.getScrollBarWidth()),e.verticalScroll?e.rtl?(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth+i.scrollbarWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth+i.scrollbarWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right),this._setDOM();var a=this._updateScrollTop();"top"!=e.orientation.item&&(a+=Math.max(i.centerContainer.height-i.center.height-i.border.top-i.border.bottom,0)),o.center.style.top=a+"px";var h=0==i.scrollTop?"hidden":"",d=i.scrollTop==i.scrollTopMin?"hidden":"";o.shadowTop.style.visibility=h,o.shadowBottom.style.visibility=d,o.shadowTopLeft.style.visibility=h,o.shadowBottomLeft.style.visibility=d,o.shadowTopRight.style.visibility=h,o.shadowBottomRight.style.visibility=d,e.verticalScroll&&(o.rightContainer.className="vis-panel vis-right vis-vertical-scroll",o.leftContainer.className="vis-panel vis-left vis-vertical-scroll",o.shadowTopRight.style.visibility="hidden",o.shadowBottomRight.style.visibility="hidden",o.shadowTopLeft.style.visibility="hidden",o.shadowBottomLeft.style.visibility="hidden",o.left.style.top="0px",o.right.style.top="0px"),(!e.verticalScroll||i.center.heighti.centerContainer.height;this.hammer.get("pan").set({direction:u?l.DIRECTION_ALL:l.DIRECTION_HORIZONTAL}),this.components.forEach(function(e){t=e.redraw()||t});var p=5;if(t){if(this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTope&&o.push(h.id):h.lefti&&o.push(h.id)}return o},n.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;in)return}}if(i&&i!=this.groupTouchParams.group){var h=e.get(i.groupId),d=e.get(this.groupTouchParams.group.groupId);d&&h&&(this.options.groupOrderSwap(d,h,e),e.update(d),e.update(h));var l=e.getIds({order:this.options.groupOrder});if(!c.equalArray(l,this.groupTouchParams.originalOrder))for(var u=this.groupTouchParams.originalOrder,p=this.groupTouchParams.group.groupId,m=Math.min(u.length,l.length),v=0,g=0,y=0;v=m)break;if(l[v+g]!=p)if(u[v+y]!=p){var b=l.indexOf(u[v+y]),_=e.get(l[v+g]),w=e.get(u[v+y]);this.options.groupOrderSwap(_,w,e),e.update(_),e.update(w);var x=l[v+g];l[v+g]=u[v+y],l[b]=x,v++}else y=1;else g=1}}}},n.prototype._onGroupDragEnd=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this,i=e.groupTouchParams.group.groupId,o=e.groupsData.getDataSet(),n=c.extend({},o.get(i));e.options.onMoveGroup(n,function(t){if(t)t[o._fieldId]=i,o.update(t);else{var n=o.getIds({order:e.options.groupOrder});if(!c.equalArray(n,e.groupTouchParams.originalOrder))for(var s=e.groupTouchParams.originalOrder,r=Math.min(s.length,n.length),a=0;a=r)break;var h=n.indexOf(s[a]),d=o.get(n[a]),l=o.get(s[a]);e.options.groupOrderSwap(d,l,o),groupsData.update(d),groupsData.update(l);var u=n[a];n[a]=s[a],n[h]=u,a++}}}),e.body.emitter.emit("groupDragged",{groupId:i})}},n.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.srcEvent&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey),i=t.srcEvent&&t.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var o=this.getSelection(),n=this.itemFromTarget(t),s=n?[n.id]:[];this.setSelection(s);var r=this.getSelection();(r.length>0||o.length>0)&&this.body.emitter.emit("select",{items:r,event:c.elementsCensor(t)})}},n.prototype._onMouseOver=function(t){var e=this.itemFromTarget(t);if(e){var i=this.itemFromRelatedTarget(t);if(e!==i){if(e.getTitle()){null==e.popup&&e.setPopup(new l.default(this.body.dom.root,this.options.tooltip.overflowMethod||"flip"));var o=this.body.dom.centerContainer;e.popup.setPosition(t.clientX-c.getAbsoluteLeft(o)+o.offsetLeft,t.clientY-c.getAbsoluteTop(o)+o.offsetTop),e.popup.show()}this.body.emitter.emit("itemover",{item:e.id,event:c.elementsCensor(t)})}}},n.prototype._onMouseOut=function(t){var e=this.itemFromTarget(t);if(e){var i=this.itemFromRelatedTarget(t);e!==i&&(null!=e.popup&&e.popup.hide(),this.body.emitter.emit("itemout",{item:e.id,event:c.elementsCensor(t)}))}},n.prototype._onMouseMove=function(t){var e=this.itemFromTarget(t);if(e&&this.options.tooltip.followMouse&&e.popup&&!e.popup.hidden){var i=this.body.dom.centerContainer;e.popup.setPosition(t.clientX-c.getAbsoluteLeft(i)+i.offsetLeft,t.clientY-c.getAbsoluteTop(i)+i.offsetTop),e.popup.show()}},n.prototype._onMouseWheel=function(t){this.touchParams.itemIsDragging&&this._onDragEnd(t)},n.prototype._onUpdateItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this;if(t){var i=e.itemsData.get(t.id);this.options.onUpdate(i,function(t){t&&e.itemsData.getDataSet().update(t)})}}},n.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(!o){if(this.options.rtl)var n=c.getAbsoluteRight(this.dom.frame),s=n-t.center.x;else var n=c.getAbsoluteLeft(this.dom.frame),s=t.center.x-n;var r=this.body.util.toTime(s),a=this.body.util.getScale(),h=this.body.util.getStep(),d={start:i?i(r,a,h):r,content:"new item"};if("drop"==t.type){var l=JSON.parse(t.dataTransfer.getData("text"));if(d.content=l.content,d.type=l.type||"box",d[this.itemsData._fieldId]=l.id||c.randomUUID(),"range"==l.type||l.end&&l.start)if(l.end)d.end=l.end,d.start=l.start;else{var u=this.body.util.toTime(s+this.props.width/5);d.end=i?i(u,a,h):u}}else if(d[this.itemsData._fieldId]=c.randomUUID(),"range"===this.options.type){var u=this.body.util.toTime(s+this.props.width/5);d.end=i?i(u,a,h):u}var p=this.groupFromTarget(t);p&&(d.group=p.groupId),d=this._cloneItemData(d),this.options.onAdd(d,function(i){i&&(e.itemsData.getDataSet().add(i),"drop"==t.type&&e.setSelection([i.id]))})}}},n.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[],o=t.srcEvent&&t.srcEvent.shiftKey||!1;if(o&&this.options.multiselect){var s=this.itemsData.get(e.id).group,r=void 0;this.options.multiselectPerGroup&&i.length>0&&(r=this.itemsData.get(i[0]).group),this.options.multiselectPerGroup&&void 0!=r&&r!=s||i.push(e.id);var a=n._getItemRange(this.itemsData.get(i,this.itemOptions));if(!this.options.multiselectPerGroup||r==s){i=[];for(var h in this.items)if(this.items.hasOwnProperty(h)){var d=this.items[h],l=d.data.start,u=void 0!==d.data.end?d.data.end:l;!(l>=a.min&&u<=a.max)||this.options.multiselectPerGroup&&r!=this.itemsData.get(d.id).group||d instanceof x||i.push(d.id)}}}else{var p=i.indexOf(e.id);p==-1?i.push(e.id):i.splice(p,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection(),event:c.elementsCensor(t)})}}},n._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},n.prototype.itemFromElement=function(t){for(var e=t;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},n.prototype.itemFromTarget=function(t){return this.itemFromElement(t.target)},n.prototype.itemFromRelatedTarget=function(t){return this.itemFromElement(t.relatedTarget)},n.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.clientY,i=0;ir&&er)return n}else if(0===i&&en-this.padding&&(a=!0),s=a?this.x-i:this.x,r=h?this.y-e:this.y}else r=this.y-e,r+e+this.padding>o&&(r=o-e-this.padding),rn&&(s=n-i-this.padding),s0&&this.current.milliseconds()0&&this.current.seconds()0&&this.current.minutes()0&&this.current.hours()0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=n(t);if("year"==e){var s=o.year()+Math.round(o.month()/12);o.year(Math.round(s/i)*i),o.month(0),o.date(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("month"==e)o.date()>15?(o.date(1),o.add(1,"month")):o.date(1),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.hours(24*Math.round(o.hours()/24));break;default:o.hours(12*Math.round(o.hours()/12))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.hours(12*Math.round(o.hours()/12));break;default:o.hours(6*Math.round(o.hours()/6))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("hour"==e){switch(i){case 4:o.minutes(60*Math.round(o.minutes()/60));break;default:o.minutes(30*Math.round(o.minutes()/30))}o.seconds(0),o.milliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.minutes(5*Math.round(o.minutes()/5)),o.seconds(0);break;case 5:o.seconds(60*Math.round(o.seconds()/60));break;default:o.seconds(30*Math.round(o.seconds()/30))}o.milliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.seconds(5*Math.round(o.seconds()/5)),o.milliseconds(0);break;case 5:o.milliseconds(1e3*Math.round(o.milliseconds()/1e3));break;default:o.milliseconds(500*Math.round(o.milliseconds()/500))}else if("millisecond"==e){var r=i>5?i/2:1;o.milliseconds(Math.round(o.milliseconds()/r)*r)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}var t=this.moment(this.current);switch(this.scale){case"millisecond":return 0==t.milliseconds();case"second":return 0==t.seconds();case"minute":return 0==t.hours()&&0==t.minutes();case"hour":return 0==t.hours();case"weekday":case"day":return 1==t.date();case"month":return 0==t.month();case"year":return!1;default:return!1}},o.prototype.getLabelMinor=function(t){if(void 0==t&&(t=this.current),"function"==typeof this.format.minorLabels)return this.format.minorLabels(t,this.scale,this.step);var e=this.format.minorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getLabelMajor=function(t){if(void 0==t&&(t=this.current),"function"==typeof this.format.majorLabels)return this.format.majorLabels(t,this.scale,this.step);var e=this.format.majorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(s().add(1,"day"),"day")?" vis-tomorrow":t.isSame(s().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}function n(t){return t.isSame(new Date,"year")?" vis-current-year":""}var s=this.moment,r=this.moment(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return e(a)+t(a.milliseconds()).trim();case"second":return e(a)+t(a.seconds()).trim();case"minute":return e(a)+t(a.minutes()).trim();case"hour":return"vis-h"+a.hours()+(4==this.step?"-h"+(a.hours()+4):"")+e(a)+t(a.hours());case"weekday":return"vis-"+a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":return"vis-day"+a.date()+" vis-"+a.format("MMMM").toLowerCase()+e(a)+o(a)+(this.step<=2?e(a):"")+(this.step<=2?" vis-"+a.format("dddd").toLowerCase():""+t(a.date()-1));case"month":return"vis-"+a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var d=a.year();return"vis-year"+d+n(a)+t(d);default:return""}},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i){this.groupId=t,this.subgroups={},this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.isVisible=null,e&&e.nestedGroups&&(this.nestedGroups=e.nestedGroups,0==e.showNested?this.showNested=!1:this.showNested=!0),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;var o=this;this.itemSet.body.emitter.on("checkRangedItems",function(){o.checkRangedItems=!0}),this._create(),this.setData(e)}var s=i(58),r=o(s),a=i(1),h=i(131);i(132);n.prototype._create=function(){var t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;var e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;var i=document.createElement("div");i.className="vis-group",i["timeline-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)},n.prototype.setData=function(t){var e,i;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.appendChild(e);this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else e instanceof Object?i(t,this.dom.inner):void 0!==e&&null!==e?this.dom.inner.innerHTML=e:this.dom.inner.innerHTML=this.groupId||"";if(this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?a.removeClassName(this.dom.inner,"vis-hidden"):a.addClassName(this.dom.inner,"vis-hidden"),t&&t.nestedGroups)if(0==t.showNested?this.showNested=!1:this.showNested=!0,a.addClassName(this.dom.label,"vis-nesting-group"),this.showNested)a.removeClassName(this.dom.label,"collapsed"),a.addClassName(this.dom.label,"expanded");else{a.removeClassName(this.dom.label,"expanded");var o=this.itemSet.options.rtl?"collapsed-rtl":"collapsed";a.addClassName(this.dom.label,o)}t&&t.nestedInGroup&&(a.addClassName(this.dom.label,"vis-nested-group"),this.itemSet.options&&this.itemSet.options.rtl?this.dom.inner.style.paddingRight="30px":this.dom.inner.style.paddingLeft="30px");var n=t&&t.className||null;n!=this.className&&(this.className&&(a.removeClassName(this.dom.label,this.className),a.removeClassName(this.dom.foreground,this.className),a.removeClassName(this.dom.background,this.className),a.removeClassName(this.dom.axis,this.className)),a.addClassName(this.dom.label,n),a.addClassName(this.dom.foreground,n),a.addClassName(this.dom.background,n),a.addClassName(this.dom.axis,n),this.className=n),this.style&&(a.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(a.addCssText(this.dom.label,t.style),this.style=t.style)},n.prototype.getLabelWidth=function(){return this.props.label.width},n.prototype.redraw=function(t,e,i){var o=!1,n=this.dom.marker.clientHeight;n!=this.lastMarkerHeight&&(this.lastMarkerHeight=n,a.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()}),i=!0),this._calculateSubGroupHeights(e);var s=this.dom.foreground;if(this.top=s.offsetTop,this.right=s.offsetLeft,this.width=s.offsetWidth,this.isVisible=this._isGroupVisible(t,e),"function"==typeof this.itemSet.options.order){if(i){var r=this,d=!1;a.forEach(this.items,function(t){t.displayed||(t.redraw(),r.visibleItems.push(t)),t.repositionX(d)});var l=this.orderedItems.byStart.slice().sort(function(t,e){return r.itemSet.options.order(t.data,e.data)});h.stack(l,e,!0)}this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t)}else this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t),this.itemSet.options.stack?h.stack(this.visibleItems,e,i):h.nostack(this.visibleItems,e,this.subgroups,this.itemSet.options.stackSubgroups);this._updateSubgroupsSizes();var u=this._calculateHeight(e),s=this.dom.foreground;this.top=s.offsetTop,this.right=s.offsetLeft,this.width=s.offsetWidth,o=a.updateProperty(this,"height",u)||o,o=a.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||o,o=a.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||o,this.dom.background.style.height=u+"px",this.dom.foreground.style.height=u+"px",this.dom.label.style.height=u+"px";for(var c=0,p=this.visibleItems.length;c0){var e=this;this.resetSubgroups(),a.forEach(this.visibleItems,function(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=!0)})}},n.prototype._isGroupVisible=function(t,e){var i=this.top<=t.body.domProps.centerContainer.height-t.body.domProps.scrollTop+e.axis&&this.top+this.height+e.axis>=-t.body.domProps.scrollTop;return i},n.prototype._calculateHeight=function(t){var e,i=this.visibleItems;if(i.length>0){var o=i[0].top,n=i[0].top+i[0].height;if(a.forEach(i,function(t){o=Math.min(o,t.top),n=Math.max(n,t.top+t.height)}),o>t.axis){var s=o-t.axis;n-=s,a.forEach(i,function(t){t.top-=s})}e=n+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},n.prototype.show=function(){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)},n.prototype.hide=function(){var t=this.dom.label; -t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},n.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,top:0,start:t.data.start,end:t.data.end,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),new Date(t.data.start)new Date(this.subgroups[t.data.subgroup].end)&&(this.subgroups[t.data.subgroup].end=t.data.end),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),this.visibleItems.indexOf(t)==-1){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},n.prototype._updateSubgroupsSizes=function(){var t=this;if(t.subgroups)for(var e in t.subgroups){var i=t.subgroups[e].items[0].data.start,o=t.subgroups[e].items[0].data.end;t.subgroups[e].items.forEach(function(t){new Date(t.data.start)new Date(o)&&(o=t.data.end)}),t.subgroups[e].start=i,t.subgroups[e].end=o}},n.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;i0)for(var l=0;lh}),1==this.checkRangedItems)for(this.checkRangedItems=!1,l=0;lh})}for(var l=0;l=0;s--){var r=e[s];if(n(r))break;void 0===o[r.id]&&(o[r.id]=!0,i.push(r))}for(var s=t+1;so[r].index&&e.collisionByTimes(o[n],o[r])){s=o[r];break}null!=s&&(o[n].top=s.top+s.height)}while(s)}for(var a=0;ae.right&&t.top-o.vertical+ie.top:t.left-o.horizontal+ie.left&&t.top-o.vertical+ie.top},e.collisionByTimes=function(t,e){return t.start<=e.start&&t.end>=e.start&&t.tope.top||e.start<=t.start&&e.end>=t.start&&e.topt.top}},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,this.options=i,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(108),i(133));o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-range",o.prototype.isVisible=function(t){return this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.visibleFrame=document.createElement("div"),t.visibleFrame.className="vis-item-visible-frame",t.box.appendChild(t.visibleFrame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.box.className=this.baseClassName+o,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintOnItemUpdateTimeTooltip(t.box),this._repaintDeleteButton(t.box),this._repaintDragCenter(),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);void 0!==t&&t!==!0||(n<-o&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n+.5,1);switch(this.overflow?(this.options.rtl?this.right=n:this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.options.rtl?this.right=n:this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.options.rtl?this.dom.box.style.right=this.right+"px":this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.options.rtl?this.dom.content.style.right="0":this.dom.content.style.left="0";break;case"right":this.options.rtl?this.dom.content.style.right=Math.max(r-i,0)+"px":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.options.rtl?this.dom.content.style.right=Math.max((r-i)/2,0)+"px":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:n<0?-n:0,this.options.rtl?this.dom.content.style.right=e+"px":(this.dom.content.style.left=e+"px",this.dom.content.style.width="calc(100% - "+e+"px)")}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.groupShowing=!0,this.dirty=!0,this.popup=null,this.top=null,this.right=null,this.left=null,this.width=null,this.height=null,this.editable=null,this.data&&this.data.hasOwnProperty("editable")&&("boolean"==typeof this.data.editable?this.editable={updateTime:this.data.editable,updateGroup:this.data.editable,remove:this.data.editable}:"object"===(0,h.default)(i.editable)&&(this.editable={},l.selectiveExtend(["updateTime","updateGroup","remove"],this.editable,t.editable)))}var s=i(58),r=o(s),a=i(62),h=o(a),d=i(108),l=i(1),u=i(84);n.prototype.stack=!0,n.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),t.hasOwnProperty("editable")&&("boolean"==typeof t.editable?this.editable={updateTime:this.data.editable,updateGroup:this.data.editable,remove:this.data.editable}:"object"===(0,h.default)(options.editable)&&(this.editable={},l.selectiveExtend(["updateTime","updateGroup","remove"],this.editable,t.editable))),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},n.prototype.isVisible=function(t){return!1},n.prototype.show=function(){return!1},n.prototype.hide=function(){return!1},n.prototype.redraw=function(){},n.prototype.repositionX=function(){},n.prototype.repositionY=function(){},n.prototype._repaintDragCenter=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragCenter){var t=this,e=document.createElement("div");e.className="vis-drag-center",e.dragCenterItem=this,new d(e).on("doubletap",function(e){e.stopPropagation(),t.parent.itemSet._onUpdateItem(t)}),this.dom.box?this.dom.box.appendChild(e):this.dom.point&&this.dom.point.appendChild(e),this.dom.dragCenter=e}else!this.selected&&this.dom.dragCenter&&(this.dom.dragCenter.parentNode&&this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter),this.dom.dragCenter=null)},n.prototype._repaintDeleteButton=function(t){var e=(this.options.editable.overrideItems||null==this.editable)&&this.options.editable.remove||!this.options.editable.overrideItems&&null!=this.editable&&this.editable.remove;if(this.selected&&e&&!this.dom.deleteButton){var i=this,o=document.createElement("div");this.options.rtl?o.className="vis-delete-rtl":o.className="vis-delete",o.title="Delete this item",new d(o).on("tap",function(t){t.stopPropagation(),i.parent.removeFromDataSet(i)}),t.appendChild(o),this.dom.deleteButton=o}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},n.prototype._repaintOnItemUpdateTimeTooltip=function(t){if(this.options.tooltipOnItemUpdateTime){var e=(this.options.editable.updateTime||this.data.editable===!0)&&this.data.editable!==!1;if(this.selected&&e&&!this.dom.onItemUpdateTimeTooltip){var i=document.createElement("div");i.className="vis-onUpdateTime-tooltip",t.appendChild(i),this.dom.onItemUpdateTimeTooltip=i}else!this.selected&&this.dom.onItemUpdateTimeTooltip&&(this.dom.onItemUpdateTimeTooltip.parentNode&&this.dom.onItemUpdateTimeTooltip.parentNode.removeChild(this.dom.onItemUpdateTimeTooltip),this.dom.onItemUpdateTimeTooltip=null);if(this.dom.onItemUpdateTimeTooltip){this.dom.onItemUpdateTimeTooltip.style.visibility=this.parent.itemSet.touchParams.itemIsDragging?"visible":"hidden",this.options.rtl?this.dom.onItemUpdateTimeTooltip.style.right=this.dom.content.style.right:this.dom.onItemUpdateTimeTooltip.style.left=this.dom.content.style.left;var o,n=50,s=this.parent.itemSet.body.domProps.scrollTop;o="top"==this.options.orientation.item?this.top:this.parent.height-this.top-this.height;var r=o+this.parent.top-n<-s;r?(this.dom.onItemUpdateTimeTooltip.style.bottom="",this.dom.onItemUpdateTimeTooltip.style.top=this.height+2+"px"):(this.dom.onItemUpdateTimeTooltip.style.top="",this.dom.onItemUpdateTimeTooltip.style.bottom=this.height+2+"px");var a,h;this.options.tooltipOnItemUpdateTime&&this.options.tooltipOnItemUpdateTime.template?(h=this.options.tooltipOnItemUpdateTime.template.bind(this),a=h(this.data)):(a="start: "+u(this.data.start).format("MM/DD/YYYY hh:mm"),this.data.end&&(a+="
end: "+u(this.data.end).format("MM/DD/YYYY hh:mm"))),this.dom.onItemUpdateTimeTooltip.innerHTML=a}}},n.prototype._updateContents=function(t){var e,i,o,n,s=this.parent.itemSet.itemsData.get(this.id),r=this.dom.box||this.dom.point,a=r.getElementsByClassName("vis-item-visible-frame")[0];if(this.options.visibleFrameTemplate?(n=this.options.visibleFrameTemplate.bind(this),o=n(s,r)):o="",a)if(o instanceof Object&&!(o instanceof Element))n(s,a);else{var h=this._contentToString(this.itemVisibleFrameContent)!==this._contentToString(o);if(h){if(o instanceof Element)a.innerHTML="",a.appendChild(o);else if(void 0!=o)a.innerHTML=o;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.itemVisibleFrameContent=o}}if(this.options.template?(i=this.options.template.bind(this),e=i(s,t)):e=this.data.content,e instanceof Object&&!(e instanceof Element))i(s,t);else{var h=this._contentToString(this.content)!==this._contentToString(e);if(h){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}}},n.prototype._updateTitle=function(){null!=this.data.title&&null!=this.popup&&this.popup.setText(this.data.title||"")},n.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=(0,r.default)(this.data)}for(var i=0;it.start&&this.data.start.getTime()-ot.start&&this.data.start.getTime()t.start&&this.data.start.getTime()-o/2t.start&&this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e;if(void 0!==this.data.subgroup){var i=this.data.subgroup,o=this.parent.subgroups;o[i].index;this.dom.box.style.height=this.parent.subgroups[i].height+"px";var n=this.options.orientation.item;"top"==n?this.dom.box.style.top=this.parent.top+this.parent.subgroups[i].top+"px":this.dom.box.style.top=this.parent.top+this.parent.height-this.parent.subgroups[i].top-this.parent.subgroups[i].height+"px",this.dom.box.style.bottom=""}else this.parent instanceof s?(e=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top="top"==n?"0":"",this.dom.box.style.bottom="top"==n?"":"0"):(e=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=e+"px"},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this.dom={foreground:null,lines:[],majorTexts:[],minorTexts:[],redundant:{lines:[],majorTexts:[],minorTexts:[]}},this.props={range:{start:0,end:0,minimumStep:0},lineTop:0},this.defaultOptions={orientation:{axis:"bottom"},showMinorLabels:!0,showMajorLabels:!0,maxMinorChars:7,format:d.FORMAT,moment:u,timeAxis:null},this.options=a.extend({},this.defaultOptions),this.body=t,this._create(),this.setOptions(e)}var s=i(62),r=o(s),a=i(1),h=i(124),d=i(129),l=i(125),u=i(84);n.prototype=new h,n.prototype.setOptions=function(t){t&&(a.selectiveExtend(["showMinorLabels","showMajorLabels","maxMinorChars","hiddenDates","timeAxis","moment","rtl"],this.options,t),a.selectiveDeepExtend(["format"],this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.axis=t.orientation:"object"===(0,r.default)(t.orientation)&&"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis)),"locale"in t&&("function"==typeof u.locale?u.locale(t.locale):u.lang(t.locale)))},n.prototype._create=function(){this.dom.foreground=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.foreground.className="vis-time-axis vis-foreground",this.dom.background.className="vis-time-axis vis-background"},n.prototype.destroy=function(){this.dom.foreground.parentNode&&this.dom.foreground.parentNode.removeChild(this.dom.foreground),this.dom.background.parentNode&&this.dom.background.parentNode.removeChild(this.dom.background),this.body=null},n.prototype.redraw=function(){var t=this.props,e=this.dom.foreground,i=this.dom.background,o="top"==this.options.orientation.axis?this.body.dom.top:this.body.dom.bottom,n=e.parentNode!==o;this._calculateCharSize();var s=this.options.showMinorLabels&&"none"!==this.options.orientation.axis,r=this.options.showMajorLabels&&"none"!==this.options.orientation.axis;t.minorLabelHeight=s?t.minorCharHeight:0,t.majorLabelHeight=r?t.majorCharHeight:0,t.height=t.minorLabelHeight+t.majorLabelHeight,t.width=e.offsetWidth,t.minorLineHeight=this.body.domProps.root.height-t.majorLabelHeight-("top"==this.options.orientation.axis?this.body.domProps.bottom.height:this.body.domProps.top.height),t.minorLineWidth=1,t.majorLineHeight=t.minorLineHeight+t.majorLabelHeight,t.majorLineWidth=1;var a=e.nextSibling,h=i.nextSibling;return e.parentNode&&e.parentNode.removeChild(e),i.parentNode&&i.parentNode.removeChild(i),e.style.height=this.props.height+"px",this._repaintLabels(),a?o.insertBefore(e,a):o.appendChild(e),h?this.body.dom.backgroundVertical.insertBefore(i,h):this.body.dom.backgroundVertical.appendChild(i),this._isResized()||n},n.prototype._repaintLabels=function(){var t=this.options.orientation.axis,e=a.convert(this.body.range.start,"Number"),i=a.convert(this.body.range.end,"Number"),o=this.body.util.toTime((this.props.minorCharWidth||10)*this.options.maxMinorChars).valueOf(),n=o-l.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this.body.range,o);n-=this.body.util.toTime(0).valueOf();var s=new d(new Date(e),new Date(i),n,this.body.hiddenDates);s.setMoment(this.options.moment),this.options.format&&s.setFormat(this.options.format),this.options.timeAxis&&s.setScale(this.options.timeAxis),this.step=s;var r=this.dom;r.redundant.lines=r.lines,r.redundant.majorTexts=r.majorTexts,r.redundant.minorTexts=r.minorTexts,r.lines=[],r.majorTexts=[],r.minorTexts=[];var h,u,p,f,m,v,g,y,b,_,w=0,x=void 0,k=0,O=1e3;for(s.start(),u=s.getCurrent(),f=this.body.util.toScreen(u);s.hasNext()&&k=.4*g;if(this.options.showMinorLabels&&D){var M=this._repaintMinorText(p,b,t,_);M.style.width=w+"px"}m&&this.options.showMajorLabels?(p>0&&(void 0==x&&(x=p),M=this._repaintMajorText(p,s.getLabelMajor(),t,_)),y=this._repaintMajorLine(p,w,t,_)):D?y=this._repaintMinorLine(p,w,t,_):y&&(y.style.width=parseInt(y.style.width)+w+"px")}if(k!==O||c||(console.warn("Something is wrong with the Timeline scale. Limited drawing of grid lines to "+O+" lines."), -c=!0),this.options.showMajorLabels){var S=this.body.util.toTime(0),C=s.getLabelMajor(S),T=C.length*(this.props.majorCharWidth||10)+10;(void 0==x||T1e3&&(o=1e3),e.redraw(),e.body.emitter.emit("currentTimeTick"),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="date",a="object",h="dom",d="moment",l="any",u={configure:{enabled:{boolean:o},filter:{boolean:o,function:"function"},container:{dom:h},__type__:{object:a,boolean:o,function:"function"}},align:{string:i},rtl:{boolean:o,undefined:"undefined"},rollingMode:{boolean:o,undefined:"undefined"},verticalScroll:{boolean:o,undefined:"undefined"},horizontalScroll:{boolean:o,undefined:"undefined"},autoResize:{boolean:o},throttleRedraw:{number:n},clickToUse:{boolean:o},dataAttributes:{string:i,array:s},editable:{add:{boolean:o,undefined:"undefined"},remove:{boolean:o,undefined:"undefined"},updateGroup:{boolean:o,undefined:"undefined"},updateTime:{boolean:o,undefined:"undefined"},overrideItems:{boolean:o,undefined:"undefined"},__type__:{boolean:o,object:a}},end:{number:n,date:r,string:i,moment:d},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a,function:"function"}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a,function:"function"}},__type__:{object:a}},moment:{function:"function"},groupOrder:{string:i,function:"function"},groupEditable:{add:{boolean:o,undefined:"undefined"},remove:{boolean:o,undefined:"undefined"},order:{boolean:o,undefined:"undefined"},__type__:{boolean:o,object:a}},groupOrderSwap:{function:"function"},height:{string:i,number:n},hiddenDates:{start:{date:r,number:n,string:i,moment:d},end:{date:r,number:n,string:i,moment:d},repeat:{string:i},__type__:{object:a,array:s}},itemsAlwaysDraggable:{boolean:o},locale:{string:i},locales:{__any__:{any:l},__type__:{object:a}},margin:{axis:{number:n},item:{horizontal:{number:n,undefined:"undefined"},vertical:{number:n,undefined:"undefined"},__type__:{object:a,number:n}},__type__:{object:a,number:n}},max:{date:r,number:n,string:i,moment:d},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:r,number:n,string:i,moment:d},minHeight:{number:n,string:i},moveable:{boolean:o},multiselect:{boolean:o},multiselectPerGroup:{boolean:o},onAdd:{function:"function"},onUpdate:{function:"function"},onMove:{function:"function"},onMoving:{function:"function"},onRemove:{function:"function"},onAddGroup:{function:"function"},onMoveGroup:{function:"function"},onRemoveGroup:{function:"function"},order:{function:"function"},orientation:{axis:{string:i,undefined:"undefined"},item:{string:i,undefined:"undefined"},__type__:{string:i,object:a}},selectable:{boolean:o},showCurrentTime:{boolean:o},showMajorLabels:{boolean:o},showMinorLabels:{boolean:o},stack:{boolean:o},stackSubgroups:{boolean:o},snap:{function:"function",null:"null"},start:{date:r,number:n,string:i,moment:d},template:{function:"function"},groupTemplate:{function:"function"},visibleFrameTemplate:{string:i,function:"function"},tooltip:{followMouse:{boolean:o},overflowMethod:{string:["cap","flip"]},__type__:{object:a}},tooltipOnItemUpdateTime:{template:{function:"function"},__type__:{boolean:o,object:a}},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:a}},type:{string:i},width:{string:i,number:n},zoomable:{boolean:o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},__type__:{object:a}},c={global:{align:["center","left","right"],direction:!1,autoResize:!0,clickToUse:!1,editable:{add:!1,remove:!1,updateGroup:!1,updateTime:!1},end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},groupsDraggable:!1,height:"",locale:"",margin:{axis:[20,0,100,1],item:{horizontal:[10,0,100,1],vertical:[10,0,100,1]}},max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!1,multiselect:!1,multiselectPerGroup:!1,orientation:{axis:["both","bottom","top"],item:["bottom","top"]},selectable:!0,showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,stack:!0,stackSubgroups:!0,start:"",tooltip:{followMouse:!1,overflowMethod:"flip"},tooltipOnItemUpdateTime:!1,type:["box","point","range","background"],width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1]}};e.allOptions=u,e.configureOptions=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i,o){if(!(Array.isArray(i)||i instanceof u||i instanceof c)&&i instanceof Object){var n=o;o=i,i=n}o&&o.throttleRedraw&&console.warn('Graph2d option "throttleRedraw" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.');var s=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},moment:d,width:null,height:null,maxHeight:null,minHeight:null},this.options=l.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:s._toScreen.bind(s),toGlobalScreen:s._toGlobalScreen.bind(s),toTime:s._toTime.bind(s),toGlobalTime:s._toGlobalTime.bind(s)}},this.range=new p(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new m(this.body),this.components.push(this.timeAxis),this.currentTime=new v(this.body),this.components.push(this.currentTime),this.linegraph=new y(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){s.emit("click",s.getEventProperties(t))}),this.on("doubletap",function(t){s.emit("doubleClick",s.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){s.emit("contextmenu",s.getEventProperties(t))},o&&this.setOptions(o),i&&this.setGroups(i),e&&this.setItems(e),this._redraw()}var s=i(114),r=o(s),a=i(122),h=o(a),d=(i(95),i(108),i(84)),l=i(1),u=i(91),c=i(93),p=i(123),f=i(126),m=i(138),v=i(142),g=i(140),y=i(145),b=i(122).printStyle,_=i(153).allOptions,w=i(153).configureOptions;n.prototype=new f,n.prototype.setOptions=function(t){var e=h.default.validate(t,_);e===!0&&console.log("%cErrors have been found in the supplied options object.",b),f.prototype.setOptions.call(this,t)},n.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof u||t instanceof c?t:new u(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},n.prototype.setGroups=function(t){var e;e=t?t instanceof u||t instanceof c?t:new u(t):null,this.groupsData=e,this.linegraph.setGroups(e)},n.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:'"+t+"'"},n.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]&&(this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]))},n.prototype.getDataRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var o=0;os?s:t,e=null==e?s:e0&&d.push(u.screenToValue(n)),!c.hidden&&this.itemsData.length>0&&d.push(c.screenToValue(n)),{event:t,what:h,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:s,value:d}},n.prototype._createConfigurator=function(){return new r.default(this,this.dom.container,w)},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this.id=a.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,stack:!1,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,sideBySide:!1,align:"center"},interpolation:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{},legend:{},groups:{visibility:{}}},this.options=a.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1,this.forceGraphUpdate=!0;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=a.option.asSize(-i.props.width),i.forceGraphUpdate=!0,i.redraw.call(i)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups}}var s=i(62),r=o(s),a=i(1),h=i(90),d=i(91),l=i(93),u=i(124),c=i(146),p=i(148),f=i(152),m=i(149),v=i(151),g=i(150),y="__ungrouped__";n.prototype=new u,n.prototype._create=function(){var t=document.createElement("div");t.className="vis-line-graph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new c(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new c(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new f(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new f(this.body,this.options.legend,"right",this.options.groups),this.show()},n.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","stack","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var a={};for(this._getRelevantData(r,a,n,s),this._applySampling(r,a),e=0;e0)switch(t.options.style){case"line":l.hasOwnProperty(r[e])||(l[r[e]]=v.calcPath(a[r[e]],t)),v.draw(l[r[e]],t,this.framework);case"point":case"points":"point"!=t.options.style&&"points"!=t.options.style&&1!=t.options.drawPoints.enabled||g.draw(a[r[e]],t,this.framework);break;case"bar":}}}return h.cleanupElements(this.svgElements),!1},n.prototype._stack=function(t,e){var i,o,n,s,r;i=0;for(var a=0;at[a].x){r=e[h],s=0==h?r:e[h-1],i=h;break} -}void 0===r&&(s=e[e.length-1],r=e[e.length-1]),o=r.x-s.x,n=r.y-s.y,0==o?t[a].y=t[a].orginalY+r.y:t[a].y=t[a].orginalY+n/o*(t[a].x-s.x)+s.y}},n.prototype._getRelevantData=function(t,e,i,o){var n,s,r,h;if(t.length>0)for(s=0;s0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=new Array(r),l=0;l0){for(s=0;s0&&(n=this.groups[t[s]],r.stack===!0&&"bar"===r.style?"left"===r.yAxisOrientation?a=a.concat(n.getItems()):h=h.concat(n.getItems()):i[t[s]]=n.getYRange(o,t[s]));m.getStackedYRange(a,i,t,"__barStackLeft","left"),m.getStackedYRange(h,i,t,"__barStackRight","right")}},n.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=di?i:h,l=l=0&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-major",t.props.majorCharHeight),t.master===!0&&(n?t._redrawLine(o,i,"vis-grid vis-horizontal vis-major",t.options.majorLinesOffset,t.props.majorLineWidth):t._redrawLine(o,i,"vis-grid vis-horizontal vis-minor",t.options.minorLinesOffset,t.props.minorLineWidth))});var a=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(a=this.props.titleCharHeight);var d=this.options.icons===!0?Math.max(this.options.iconWidth,a)+this.options.labelOffsetX+15:a+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-d&&this.options.visible===!0?(this.width=this.maxLabelSize+d,this.options.width=this.width+"px",h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+d),this.options.width=this.width+"px",h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):(h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),e=!1),e},n.prototype.convertValue=function(t){return this.scale.convertValue(t)},n.prototype.screenToValue=function(t){return this.scale.screenToValue(t)},n.prototype._redrawLabel=function(t,e,i,o,n){var s=h.getDOMElement("div",this.DOMelements.labels,this.dom.frame);s.className=o,s.innerHTML=e,"left"===i?(s.style.left="-"+this.options.labelOffsetX+"px",s.style.textAlign="right"):(s.style.right="-"+this.options.labelOffsetX+"px",s.style.textAlign="left"),s.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var r=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize6&&void 0!==arguments[6]&&arguments[6],a=arguments.length>7&&void 0!==arguments[7]&&arguments[7];if(this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.customLines=null,this.containerHeight=n,this.majorCharHeight=s,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=o,this.formattingFunction=a,i||o){var h=this,d=function(t){var e=t-t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx]);return t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx])>.5*(h.magnitudefactor*h.minorSteps[h.minorStepIdx])?e+h.magnitudefactor*h.minorSteps[h.minorStepIdx]:e};i&&(this._start-=2*this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._start=d(this._start)),o&&(this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._end=d(this._end)),this.determineScale()}}i.prototype.setCharHeight=function(t){this.majorCharHeight=t},i.prototype.setHeight=function(t){this.containerHeight=t},i.prototype.determineScale=function(){var t=this._end-this._start;this.scale=this.containerHeight/t;var 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);var o=0;i<0&&(o=i);for(var n=!1,s=o;Math.abs(s)<=Math.abs(i);s++){this.magnitudefactor=Math.pow(10,s);for(var r=0;r=e){n=!0,this.minorStepIdx=r;break}}if(n===!0)break}},i.prototype.is_major=function(t){return t%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])===0},i.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]},i.prototype.getFirstMajor=function(){var t=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(t-this._start%t)%t)},i.prototype.formatValue=function(t){var e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?""+e:"string"==typeof e?e:t.toPrecision(5)},i.prototype.getLines=function(){for(var t=[],e=this.getStep(),i=(e-this._start%e)%e,o=this._start+i;this._end-o>1e-5;o+=e)o!=this._start&&t.push({major:this.is_major(o),y:this.convertValue(o),val:this.formatValue(o)});return t},i.prototype.followScale=function(t){var e=this.minorStepIdx,i=this._start,o=this._end,n=this,s=function(){n.magnitudefactor*=2},r=function(){n.magnitudefactor/=2};t.minorStepIdx<=1&&this.minorStepIdx<=1||t.minorStepIdx>1&&this.minorStepIdx>1||(t.minorStepIdxo+1e-5)r(),d=!1;else{if(!this.autoScaleStart&&this._start=0)){r(),d=!1;continue}console.warn("Can't adhere to given 'min' range, due to zeroalign")}this.autoScaleStart&&this.autoScaleEnd&&ue.x?1:-1})):this.itemsData=[]},n.prototype.getItems=function(){return this.itemsData},n.prototype.setZeroPosition=function(t){this.zeroPosition=t},n.prototype.setOptions=function(t){if(void 0!==t){var e=["sampling","style","sort","yAxisOrientation","barChart","zIndex","excludeFromStacking","excludeFromLegend"];a.selectiveDeepExtend(e,this.options,t),"function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),a.mergeOptions(this.options,t,"interpolation"),a.mergeOptions(this.options,t,"drawPoints"),a.mergeOptions(this.options,t,"shaded"),t.interpolation&&"object"==(0,r.default)(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5))}},n.prototype.update=function(t){this.group=t,this.content=t.content||"graph",this.className=t.className||this.className||"vis-graph-group"+this.groupsUsingDefaultStyles[0]%10,this.visible=void 0===t.visible||t.visible,this.style=t.style,this.setOptions(t.options)},n.prototype.getLegend=function(t,e,i,o,n){if(void 0==i||null==i){var s=document.createElementNS("http://www.w3.org/2000/svg","svg");i={svg:s,svgElements:{},options:this.options,groups:[this]}}switch(void 0!=o&&null!=o||(o=0),void 0!=n&&null!=n||(n=.5*e),this.options.style){case"line":d.drawIcon(this,o,n,t,e,i);break;case"points":case"point":l.drawIcon(this,o,n,t,e,i);break;case"bar":h.drawIcon(this,o,n,t,e,i)}return{icon:i.svg,label:this.content,orientation:this.options.yAxisOrientation}},n.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,o=0;ot[o].y?t[o].y:e,i=i0&&(i=Math.min(i,Math.abs(e[o-1].screen_x-e[o].screen_x))),0===i&&(void 0===t[e[o].screen_x]&&(t[e[o].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].screen_x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=t0){t.sort(function(t,e){return t.screen_x===e.screen_x?t.groupIde[s].screen_y?e[s].screen_y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n0){var i=[];return i=1==e.options.interpolation.enabled?o._catmullRom(t,e):o._linear(t)}},o.drawIcon=function(t,e,i,o,s,r){var a,h,d=.5*s,l=n.getSVGElement("rect",r.svgElements,r.svg);if(l.setAttributeNS(null,"x",e),l.setAttributeNS(null,"y",i-d),l.setAttributeNS(null,"width",o),l.setAttributeNS(null,"height",2*d),l.setAttributeNS(null,"class","vis-outline"),a=n.getSVGElement("path",r.svgElements,r.svg),a.setAttributeNS(null,"class",t.className),void 0!==t.style&&a.setAttributeNS(null,"style",t.style),a.setAttributeNS(null,"d","M"+e+","+i+" L"+(e+o)+","+i),1==t.options.shaded.enabled&&(h=n.getSVGElement("path",r.svgElements,r.svg),"top"==t.options.shaded.orientation?h.setAttributeNS(null,"d","M"+e+", "+(i-d)+"L"+e+","+i+" L"+(e+o)+","+i+" L"+(e+o)+","+(i-d)):h.setAttributeNS(null,"d","M"+e+","+i+" L"+e+","+(i+d)+" L"+(e+o)+","+(i+d)+"L"+(e+o)+","+i),h.setAttributeNS(null,"class",t.className+" vis-icon-fill"),void 0!==t.options.shaded.style&&""!==t.options.shaded.style&&h.setAttributeNS(null,"style",t.options.shaded.style)),1==t.options.drawPoints.enabled){var u={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size,className:t.className};n.drawPoint(e+.5*o,i,u,r.svgElements,r.svg)}},o.drawShading=function(t,e,i,o){if(1==e.options.shaded.enabled){var s=Number(o.svg.style.height.replace("px","")),r=n.getSVGElement("path",o.svgElements,o.svg),a="L";1==e.options.interpolation.enabled&&(a="C");var h,d=0;d="top"==e.options.shaded.orientation?0:"bottom"==e.options.shaded.orientation?s:Math.min(Math.max(0,e.zeroPosition),s),h="group"==e.options.shaded.orientation&&null!=i&&void 0!=i?"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" L"+i[i.length-1][0]+","+i[i.length-1][1]+" "+this.serializePath(i,a,!0)+i[0][0]+","+i[0][1]+" Z":"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" V"+d+" H"+t[0][0]+" Z",r.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&r.setAttributeNS(null,"style",e.options.shaded.style),r.setAttributeNS(null,"d",h)}},o.draw=function(t,e,i){if(null!=t&&void 0!=t){var o=n.getSVGElement("path",i.svgElements,i.svg);o.setAttributeNS(null,"class",e.className),void 0!==e.style&&o.setAttributeNS(null,"style",e.style);var s="L";1==e.options.interpolation.enabled&&(s="C"),o.setAttributeNS(null,"d","M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,s,!1))}},o.serializePath=function(t,e,i){if(t.length<2)return"";var o=e;if(i)for(var n=t.length-2;n>0;n--)o+=t[n][0]+","+t[n][1]+" ";else for(var n=1;n0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={screen_x:(-b*o.screen_x+c*n.screen_x+_*s.screen_x)*f,screen_y:(-b*o.screen_y+c*n.screen_y+_*s.screen_y)*f},h={screen_x:(y*n.screen_x+p*s.screen_x-b*r.screen_x)*m,screen_y:(y*n.screen_y+p*s.screen_y-b*r.screen_y)*m},0==a.screen_x&&0==a.screen_y&&(a=n),0==h.screen_x&&0==h.screen_y&&(h=s),x.push([a.screen_x,a.screen_y]),x.push([h.screen_x,h.screen_y]),x.push([s.screen_x,s.screen_y]);return x},o._linear=function(t){for(var e=[],i=0;i")}this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},n.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=(0,r.default)(this.groups);t.sort(function(t,e){return t0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var o=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[o],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e.default=d},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(159),d=o(h),l=i(160),u=o(l),c=i(1),p=i(91),f=i(93),m=function(){function t(e,i,o,n){var r=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.layoutEngine=n,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(t,e){r.add(e.items)},update:function(t,e){r.update(e.items,e.data)},remove:function(t,e){r.remove(e.items)}},this.options={},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1},size:25,title:void 0,value:void 0,x:void 0,y:void 0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){c.forEach(t.nodesListeners,function(e,i){t.body.data.nodes&&t.body.data.nodes.off(i,e)}),delete t.body.functions.createNode,delete t.nodesListeners.add,delete t.nodesListeners.update,delete t.nodesListeners.remove,delete t.nodesListeners})}},{key:"setOptions",value:function(t){if(this.nodeOptions=t,void 0!==t){if(d.default.parseOptions(this.options,t),void 0!==t.shape)for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&this.body.nodes[e].updateShape();if(void 0!==t.font){u.default.parseOptions(this.options.font,t);for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&(this.body.nodes[i].updateLabelModule(),this.body.nodes[i]._reset())}if(void 0!==t.size)for(var o in this.body.nodes)this.body.nodes.hasOwnProperty(o)&&this.body.nodes[o]._reset();void 0===t.hidden&&void 0===t.physics||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.nodes;if(t instanceof p||t instanceof f)this.body.data.nodes=t;else if(Array.isArray(t))this.body.data.nodes=new p,this.body.data.nodes.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new p}o&&c.forEach(this.nodesListeners,function(t,e){o.off(e,t)}),this.body.nodes={},this.body.data.nodes&&!function(){var t=e;c.forEach(e.nodesListeners,function(e,i){t.body.data.nodes.on(i,e)});var i=e.body.data.nodes.getIds();e.add(i,!0)}(),i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:d.default;return new e(t,this.body,this.images,this.groups,this.options,this.defaultOptions,this.nodeOptions)}},{key:"refresh",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.body.nodes;for(var i in e){var o=void 0;e.hasOwnProperty(i)&&(o=e[i]);var n=this.body.data.nodes._data[i];void 0!==o&&void 0!==n&&(t===!0&&o.setOptions({x:null,y:null}),o.setOptions({fixed:!1}),o.setOptions(n))}}},{key:"getPositions",value:function(t){var e={};if(void 0!==t){if(Array.isArray(t)===!0){for(var i=0;it.left&&this.shape.topt.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=["color","font","fixed","shadow"];if(j.selectiveNotDeepExtend(n,t,e,i),j.mergeOptions(t,e,"shadow",i,o),void 0!==e.color&&null!==e.color){var s=j.parseColor(e.color);j.fillIfDefined(t.color,s)}else i===!0&&null===e.color&&(t.color=j.bridgeObject(o.color));void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y))),void 0!==e.font&&null!==e.font?u.default.parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=j.bridgeObject(o.font)),void 0!==e.scaling&&j.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)}}]),t}();e.default=W},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(161),s=o(n),r=i(2),a=o(r),h=i(62),d=o(h),l=i(115),u=o(l),c=i(116),p=o(c),f=i(1),m=function(){function t(e,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,u.default)(this,t),this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=o}return(0,p.default)(t,[{key:"setOptions",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.elementOptions=e,this.fontOptions=f.deepExtend({},e.font,!0),void 0!==e.label&&(this.labelDirty=!0),void 0!==e.font&&(t.parseOptions(this.fontOptions,e,i),"string"==typeof e.font?this.baseSize=this.fontOptions.size:"object"===(0,d.default)(e.font)&&void 0!==e.font.size&&(this.baseSize=e.font.size))}},{key:"constrain",value:function(t,e,i){this.fontOptions.constrainWidth=!1,this.fontOptions.maxWdt=-1,this.fontOptions.minWdt=-1;var o=[e,t,i],n=f.topMost(o,"widthConstraint");if("number"==typeof n)this.fontOptions.maxWdt=Number(n),this.fontOptions.minWdt=Number(n);else if("object"===("undefined"==typeof n?"undefined":(0,d.default)(n))){var s=f.topMost(o,["widthConstraint","maximum"]);"number"==typeof s&&(this.fontOptions.maxWdt=Number(s));var r=f.topMost(o,["widthConstraint","minimum"]);"number"==typeof r&&(this.fontOptions.minWdt=Number(r))}this.fontOptions.constrainHeight=!1,this.fontOptions.minHgt=-1,this.fontOptions.valign="middle";var a=f.topMost(o,"heightConstraint");if("number"==typeof a)this.fontOptions.minHgt=Number(a);else if("object"===("undefined"==typeof a?"undefined":(0,d.default)(a))){var h=f.topMost(o,["heightConstraint","minimum"]);"number"==typeof h&&(this.fontOptions.minHgt=Number(h));var l=f.topMost(o,["heightConstraint","valign"]);"string"==typeof l&&("top"!==l&&"bottom"!==l||(this.fontOptions.valign=l))}}},{key:"choosify",value:function(t,e,i){this.fontOptions.chooser=!0;var o=[e,t,i],n=f.topMost(o,"chosen");if("boolean"==typeof n)this.fontOptions.chooser=n;else if("object"===("undefined"==typeof n?"undefined":(0,d.default)(n))){var s=f.topMost(o,["chosen","label"]);"boolean"!=typeof s&&"function"!=typeof s||(this.fontOptions.chooser=s)}}},{key:"adjustSizes",value:function(t){var e=t?t.right+t.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=e,this.fontOptions.minWdt-=e);var i=t?t.top+t.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}},{key:"propagateFonts",value:function(t,e,i){if(this.fontOptions.multi){var o=["bold","ital","boldital","mono"],n=!0,s=!1,r=void 0;try{for(var h,d=(0,a.default)(o);!(n=(h=d.next()).done);n=!0){var l=h.value,u=void 0;if(t.font&&(u=t.font[l]),"string"==typeof u){var c=u.split(" ");this.fontOptions[l].size=c[0].replace("px",""),this.fontOptions[l].face=c[1],this.fontOptions[l].color=c[2],this.fontOptions[l].vadjust=this.fontOptions.vadjust,this.fontOptions[l].mod=i.font[l].mod}else{if(u&&u.hasOwnProperty("face")?this.fontOptions[l].face=u.face:e.font&&e.font[l]&&e.font[l].hasOwnProperty("face")?this.fontOptions[l].face=e.font[l].face:"mono"===l?this.fontOptions[l].face=i.font[l].face:e.font&&e.font.hasOwnProperty("face")?this.fontOptions[l].face=e.font.face:this.fontOptions[l].face=this.fontOptions.face,u&&u.hasOwnProperty("color")?this.fontOptions[l].color=u.color:e.font&&e.font[l]&&e.font[l].hasOwnProperty("color")?this.fontOptions[l].color=e.font[l].color:e.font&&e.font.hasOwnProperty("color")?this.fontOptions[l].color=e.font.color:this.fontOptions[l].color=this.fontOptions.color,u&&u.hasOwnProperty("mod")?this.fontOptions[l].mod=u.mod:e.font&&e.font[l]&&e.font[l].hasOwnProperty("mod")?this.fontOptions[l].mod=e.font[l].mod:e.font&&e.font.hasOwnProperty("mod")?this.fontOptions[l].mod=e.font.mod:this.fontOptions[l].mod=i.font[l].mod,u&&u.hasOwnProperty("size"))this.fontOptions[l].size=u.size;else if(e.font&&e.font[l]&&e.font[l].hasOwnProperty("size"))this.fontOptions[l].size=e.font[l].size;else if(this.fontOptions[l].face===i.font[l].face&&this.fontOptions.face===i.font.face){var p=this.fontOptions.size/Number(i.font.size);this.fontOptions[l].size=i.font[l].size*p}else e.font&&e.font.hasOwnProperty("size")?this.fontOptions[l].size=e.font.size:this.fontOptions[l].size=this.fontOptions.size;if(u&&u.hasOwnProperty("vadjust"))this.fontOptions[l].vadjust=u.vadjust;else if(e.font&&e.font[l]&&e.font[l].hasOwnProperty("vadjust"))this.fontOptions[l].vadjust=e.font[l].vadjust;else if(this.fontOptions[l].face===i.font[l].face&&this.fontOptions.face===i.font.face){var f=this.fontOptions.size/Number(i.font.size);this.fontOptions[l].vadjust=i.font[l].vadjust*Math.round(f)}else e.font&&e.font.hasOwnProperty("vadjust")?this.fontOptions[l].vadjust=e.font.vadjust:this.fontOptions[l].vadjust=this.fontOptions.vadjust}this.fontOptions[l].size=Number(this.fontOptions[l].size),this.fontOptions[l].vadjust=Number(this.fontOptions[l].vadjust)}}catch(t){s=!0,r=t}finally{try{!n&&d.return&&d.return()}finally{if(s)throw r}}}}},{key:"draw",value:function(t,e,i,o,n){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";if(void 0!==this.elementOptions.label){var r=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&r5&&void 0!==arguments[5]?arguments[5]:"middle",a=this.fontOptions.size,h=a*this.body.view.scale;h>=this.elementOptions.scaling.label.maxVisible&&(a=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale);var d=this.size.yLine,l=this._setAlignment(t,o,d,r),u=(0,s.default)(l,2);o=u[0],d=u[1],t.textAlign="left",o-=this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&("top"===this.fontOptions.valign&&(d-=(this.size.height-this.size.labelHeight)/2),"bottom"===this.fontOptions.valign&&(d+=(this.size.height-this.size.labelHeight)/2));for(var c=0;c0&&(t.lineWidth=m.strokeWidth,t.strokeStyle=b,t.lineJoin="round"),t.fillStyle=y,m.strokeWidth>0&&t.strokeText(m.text,o+p,d+m.vadjust),t.fillText(m.text,o+p,d+m.vadjust),p+=m.width}d+=this.lines[c].height}}},{key:"_setAlignment",value:function(t,e,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&this.pointToSelf===!1){e=0,i=0;var n=2;"top"===this.fontOptions.align?(t.textBaseline="alphabetic",i-=2*n):"bottom"===this.fontOptions.align?(t.textBaseline="hanging",i+=2*n):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t,e,i){var o=t||"#000000",n=i||"#ffffff";if(e<=this.elementOptions.scaling.label.drawThreshold){var s=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-e)));o=f.overrideOpacity(o,s),n=f.overrideOpacity(n,s)}return[o,n]}},{key:"getTextSize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._processLabel(t,e,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:"calculateLabelSize",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";this.labelDirty===!0&&this._processLabel(t,e,i),this.size.left=o-.5*this.size.width,this.size.top=n-.5*this.size.height,this.size.yLine=n+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===s&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"decodeMarkupSystem",value:function(t){var e="none";return"markdown"===t||"md"===t?e="markdown":t!==!0&&"html"!==t||(e="html"),e}},{key:"splitBlocks",value:function(t,e){var i=this.decodeMarkupSystem(e);return"none"===i?[{text:t,mod:"normal"}]:"markdown"===i?this.splitMarkdownBlocks(t):"html"===i?this.splitHtmlBlocks(t):void 0}},{key:"splitMarkdownBlocks",value:function(t){var e=[],i={bold:!1,ital:!1,mono:!1,beginable:!0,spacing:!1,position:0,buffer:"",modStack:[]};for(i.mod=function(){return 0===this.modStack.length?"normal":this.modStack[0]},i.modName=function(){return 0===this.modStack.length?"normal":"mono"===this.modStack[0]?"mono":i.bold&&i.ital?"boldital":i.bold?"bold":i.ital?"ital":void 0},i.emitBlock=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position/.test(t.substr(i.position,3))?i.mono||i.ital||!//.test(t.substr(i.position,3))?!i.mono&&//.test(t.substr(i.position,6))?(i.emitBlock(),i.mono=!0,i.modStack.unshift("mono"),i.position+=5):!i.mono&&"bold"===i.mod()&&/<\/b>/.test(t.substr(i.position,4))?(i.emitBlock(),i.bold=!1,i.modStack.shift(),i.position+=3):!i.mono&&"ital"===i.mod()&&/<\/i>/.test(t.substr(i.position,4))?(i.emitBlock(),i.ital=!1,i.modStack.shift(),i.position+=3):"mono"===i.mod()&&/<\/code>/.test(t.substr(i.position,7))?(i.emitBlock(),i.mono=!1,i.modStack.shift(),i.position+=6):i.add(o):(i.emitBlock(),i.ital=!0,i.modStack.unshift("ital"),i.position+=2):(i.emitBlock(),i.bold=!0,i.modStack.unshift("bold"),i.position+=2):/&/.test(o)?/</.test(t.substr(i.position,4))?(i.add("<"),i.position+=3):/&/.test(t.substr(i.position,5))?(i.add("&"),i.position+=4):i.add("&"):i.add(o),i.position++}return i.emitBlock(),e}},{key:"getFormattingValues",value:function(t,e,i,o){var n={color:"normal"===o?this.fontOptions.color:this.fontOptions[o].color,size:"normal"===o?this.fontOptions.size:this.fontOptions[o].size,face:"normal"===o?this.fontOptions.face:this.fontOptions[o].face,mod:"normal"===o?"":this.fontOptions[o].mod,vadjust:"normal"===o?this.fontOptions.vadjust:this.fontOptions[o].vadjust,strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};return"normal"===o?(e||i)&&(this.fontOptions.chooser===!0&&this.elementOptions.labelHighlightBold?n.mod="bold":"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(t,n,this.elementOptions.id,e,i)):(e||i)&&"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(t,n,this.elementOptions.id,e,i),t.font=(n.mod+" "+n.size+"px "+n.face).replace(/"/g,""),n.font=t.font,n.height=n.size,n}},{key:"differentState",value:function(t,e){return t!==this.fontOptions.selectedState&&e!==this.fontOptions.hoverState}},{key:"_processLabel",value:function(t,e,i){var o=0,n=0,s=[],r=0;if(s.add=function(t,e,i,o,n,s,r,a,h,d){this.length==t&&(this[t]={width:0,height:0,blocks:[]}),this[t].blocks.push({text:e,font:i,color:o,width:n,height:s,vadjust:r,mod:a,strokeWidth:h,strokeColor:d})},s.accumulate=function(t,e,i){this[t].width+=e,this[t].height=i>this[t].height?i:this[t].height},s.addAndAccumulate=function(t,e,i,o,n,s,r,a,h,d){this.add(t,e,i,o,n,s,r,a,h,d),this.accumulate(t,n,s)},void 0!==this.elementOptions.label){var a=String(this.elementOptions.label).split("\n"),h=a.length;if(this.elementOptions.font.multi)for(var d=0;d0)for(var m=this.getFormattingValues(t,e,i,l[f].mod),v=l[f].text.split(" "),g=!0,y="",b={width:0},_=void 0,w=0;wthis.fontOptions.maxWdt&&0!=_.width?(c=m.height>c?m.height:c,s.add(r,y,m.font,m.color,_.width,m.height,m.vadjust,l[f].mod,m.strokeWidth,m.strokeColor),s.accumulate(r,_.width,c),y="",g=!0,u=0,o=s[r].width>o?s[r].width:o,n+=s[r].height,r++):(y=y+x+v[w],w===v.length-1&&(c=m.height>c?m.height:c,u+=b.width,s.add(r,y,m.font,m.color,b.width,m.height,m.vadjust,l[f].mod,m.strokeWidth,m.strokeColor),s.accumulate(r,b.width,c),f===l.length-1&&(o=s[r].width>o?s[r].width:o,n+=s[r].height,r++)),w++,g=!1)}else{var k=this.getFormattingValues(t,e,i,l[f].mod),O=t.measureText(l[f].text);s.addAndAccumulate(r,l[f].text,k.font,k.color,O.width,k.height,k.vadjust,l[f].mod,k.strokeWidth,k.strokeColor),o=s[r].width>o?s[r].width:o,l.length-1===f&&(n+=s[r].height,r++)}}}else for(var D=0;D0)for(var S=a[D].split(" "),C="",T={width:0},E=void 0,P=0;Pthis.fontOptions.maxWdt&&0!=E.width?(s.addAndAccumulate(r,C,M.font,M.color,E.width,M.size,M.vadjust,"normal",M.strokeWidth,M.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,C="",r++):(C=C+I+S[P],P===S.length-1&&(s.addAndAccumulate(r,C,M.font,M.color,T.width,M.size,M.vadjust,"normal",M.strokeWidth,M.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,r++),P++)}else{var N=a[D],z=t.measureText(N);s.addAndAccumulate(r,N,M.font,M.color,z.width,M.size,M.vadjust,"normal",M.strokeWidth,M.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,r++}}}this.fontOptions.minWdt>0&&o0&&n2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e.font){var o=e.font.split(" ");t.size=o[0].replace("px",""),t.face=o[1],t.color=o[2],t.vadjust=0}else"object"===(0,d.default)(e.font)&&f.fillIfDefined(t,e.font,i);t.size=Number(t.size),t.vadjust=Number(t.vadjust)}}]),t}();e.default=m},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(162),s=o(n),r=i(2),a=o(r);e.default=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,h=(0,a.default)(t);!(o=(r=h.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(t){n=!0,s=t}finally{try{!o&&h.return&&h.return()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if((0,s.default)(Object(e)))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(t,e,i){t.exports={default:i(163),__esModule:!0}},function(t,e,i){i(4),i(50),t.exports=i(164)},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).isIterable=function(t){var e=Object(t);return void 0!==e[n]||"@@iterator"in e||s.hasOwnProperty(o(e))}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;(void 0===this.width||this.labelModule.differentState(e,i))&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=this.width/2)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,t.strokeStyle=s.borderColor,t.lineWidth=s.borderWidth,t.lineWidth/=this.body.view.scale,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=s.color,t.roundRect(this.left,this.top,this.width,this.height,s.borderRadius),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),s.borderWidth>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2;var s=this.options.shapeProperties.borderRadius;this.boundingBox.left=this.left-s,this.boundingBox.top=this.top-s,this.boundingBox.bottom=this.top+this.height+s,this.boundingBox.right=this.left+this.width+s}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}}]),e}(m.default);e.default=v},function(t,e,i){t.exports={default:i(167),__esModule:!0}},function(t,e,i){i(168),t.exports=i(17).Object.getPrototypeOf},function(t,e,i){var o=i(49),n=i(48);i(61)("getPrototypeOf",function(){return function(t){return n(o(t))}})},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(62),s=o(n);e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==("undefined"==typeof e?"undefined":(0,s.default)(e))&&"function"!=typeof e?t:e}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(171),s=o(n),r=i(55),a=o(r),h=i(62),d=o(h);e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+("undefined"==typeof e?"undefined":(0,d.default)(e)));t.prototype=(0,a.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(s.default?(0,s.default)(t,e):t.__proto__=e)}},function(t,e,i){t.exports={default:i(172),__esModule:!0}},function(t,e,i){i(173),t.exports=i(17).Object.setPrototypeOf},function(t,e,i){var o=i(15);o(o.S,"Object",{setPrototypeOf:i(174).set})},function(t,e,i){var o=i(23),n=i(22),s=function(t,e){if(n(t),!o(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,o){try{o=i(18)(Function.call,i(78).f(Object.prototype,"__proto__").set,2),o(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,i){return s(t,i),e?t.__proto__=i:o(t,i),t}}({},!1):void 0),check:s}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(62),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=function(){function t(e,i,o){(0,a.default)(this,t),this.body=i,this.labelModule=o,this.setOptions(e),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.margin=void 0,this.boundingBox={top:0,left:0,right:0,bottom:0}}return(0,d.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"_setMargins",value:function(t){this.margin={},this.options.margin&&("object"==(0,s.default)(this.options.margin)?(this.margin.top=this.options.margin.top,this.margin.right=this.options.margin.right,this.margin.bottom=this.options.margin.bottom,this.margin.left=this.options.margin.left):(this.margin.top=this.options.margin,this.margin.right=this.options.margin,this.margin.bottom=this.options.margin,this.margin.left=this.options.margin)),t.adjustSizes(this.margin)}},{key:"_distanceToBorder",value:function(t,e){var i=this.options.borderWidth;return this.resize(t),Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}},{key:"enableShadow",value:function(t,e){e.shadow&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){e.shadow&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}},{key:"enableBorderDashes",value:function(t,e){if(e.borderDashes!==!1)if(void 0!==t.setLineDash){var i=e.borderDashes;i===!0&&(i=[5,15]),t.setLineDash(i)}else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1}},{key:"disableBorderDashes",value:function(t,e){e.borderDashes!==!1&&(void 0!==t.setLineDash?t.setLineDash([0]):(console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1))}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(177),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;arguments.length>3&&void 0!==arguments[3]?arguments[3]:{size:this.options.size};if(void 0===this.width||this.labelModule.differentState(e,i)){ -this.textSize=this.labelModule.getTextSize(t,e,i);var o=Math.max(this.textSize.width+this.margin.right+this.margin.left,this.textSize.height+this.margin.top+this.margin.bottom);this.options.size=o/2,this.width=o,this.height=o,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,o,n,s),this.boundingBox.top=i-s.size,this.boundingBox.left=e-s.size,this.boundingBox.right=e+s.size,this.boundingBox.bottom=i+s.size,this.updateBoundingBox(e,i),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,i,o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n.labelOffset=0,n.imageLoaded=!1,n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"setOptions",value:function(t,e){this.options=t,e&&(this.imageObj=e)}},{key:"_resizeImage",value:function(){var t=!1;if(this.imageObj.width&&this.imageObj.height?this.imageLoaded===!1&&(this.imageLoaded=!0,t=!0):this.imageLoaded=!1,!this.width||!this.height||t===!0){var e,i,o;this.imageObj.width&&this.imageObj.height&&(e=0,i=0),this.options.shapeProperties.useImageSize===!1?this.imageObj.width>this.imageObj.height?(o=this.imageObj.width/this.imageObj.height,e=2*this.options.size*o||this.imageObj.width,i=2*this.options.size||this.imageObj.height):(o=this.imageObj.width&&this.imageObj.height?this.imageObj.height/this.imageObj.width:1,e=2*this.options.size,i=2*this.options.size*o):(e=this.imageObj.width,i=this.imageObj.height),this.width=e,this.height=i,this.radius=.5*this.width}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.circle(e,i,s.size),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore()}},{key:"_drawImageAtPosition",value:function(t,e){if(0!=this.imageObj.width){t.globalAlpha=1,this.enableShadow(t,e);var i=this.imageObj.width/this.width/this.body.view.scale;if(i>2&&this.options.shapeProperties.interpolation===!0){var o=this.imageObj.width,n=this.imageObj.height,s=document.createElement("canvas");s.width=o,s.height=o;var r=s.getContext("2d");i*=.5,o*=.5,n*=.5,r.drawImage(this.imageObj,0,0,o,n);for(var a=0,h=1;i>2&&h<4;)r.drawImage(s,a,0,o,n,a+o,0,o/2,n/2),a+=o,i*=.5,o*=.5,n*=.5,h+=1;t.drawImage(s,a,0,o,n,this.left,this.top,this.width,this.height)}else t.drawImage(this.imageObj,this.left,this.top,this.width,this.height);this.disableShadow(t,e)}}},{key:"_drawImageLabel",value:function(t,e,i,o,n){var s,r=0;if(void 0!==this.height){r=.5*this.height;var a=this.labelModule.getTextSize(t,o,n);a.lineCount>=1&&(r+=a.height/2)}s=i+r,this.options.label&&(this.labelOffset=r),this.labelModule.draw(t,e,s,o,n,"hanging")}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(177),m=o(f),v=function(t){function e(t,i,o,n){(0,a.default)(this,e);var r=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return r.imageObj=n,r._swapToImageResizeWhenImageLoaded=!0,r}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height||this.labelModule.differentState(e,i)){var o=2*this.options.size;this.width=o,this.height=o,this._swapToImageResizeWhenImageLoaded=!0,this.radius=.5*this.width}else this._swapToImageResizeWhenImageLoaded&&(this.width=void 0,this.height=void 0,this._swapToImageResizeWhenImageLoaded=!1),this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(),this.left=e-this.width/2,this.top=i-this.height/2;Math.min(.5*this.height,.5*this.width);this._drawRawCircle(t,e,i,o,n,s),t.save(),t.clip(),this._drawImageAtPosition(t,s),t.restore(),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){if(void 0===this.width||this.labelModule.differentState(e,i)){this.textSize=this.labelModule.getTextSize(t,e,i);var o=this.textSize.width+this.margin.right+this.margin.left;this.width=o,this.height=o,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2;var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.database(e-this.width/2,i-this.height/2,this.width,this.height),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments[3];this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"diamond",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_resizeShape",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.selected,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.hover,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{size:this.options.size};if(void 0===this.width||this.labelModule.differentState(t,e)){var o=2*i.size;this.width=o,this.height=o,this.radius=.5*this.width}}},{key:"_drawShape",value:function(t,e,i,o,n,s,r,a){this._resizeShape(s,r,a),this.left=o-this.width/2,this.top=n-this.height/2;var h=a.borderWidth/this.body.view.scale;if(t.lineWidth=Math.min(this.width,h),t.strokeStyle=a.borderColor,t.fillStyle=a.color,t[e](o,n,a.size),this.enableShadow(t,a),t.fill(),this.disableShadow(t,a),t.save(),h>0&&(this.enableBorderDashes(t,a),t.stroke(),this.disableBorderDashes(t,a)),t.restore(),void 0!==this.options.label){var d=n+.5*this.height+3;this.labelModule.draw(t,o,d,s,r,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+3))}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments[3];this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"circle",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this.options.size}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.width||this.labelModule.differentState(e,i)){var o=this.labelModule.getTextSize(t,e,i);this.height=2*o.height,this.width=o.width+this.height,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-.5*this.width,this.top=i-.5*this.height;var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.ellipse(this.left,this.top,this.width,this.height),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,e,i,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){(void 0===this.width||this.labelModule.differentState(e,i))&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(t,o,n),this.options.icon.size=this.options.icon.size||50,this.left=e-this.width/2,this.top=i-this.height/2,this._icon(t,e,i,o,n,s),void 0!==this.options.label){var r=5;this.labelModule.draw(t,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+r,o)}this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){var i=5;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+i)}}},{key:"_icon",value:function(t,e,i,o,n,s){var r=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=(o?"bold ":"")+r+"px "+this.options.icon.face,t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t,s),t.fillText(this.options.icon.code,e,i),this.disableShadow(t,s)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(177),m=o(f),v=function(t){function e(t,i,o,n){(0,a.default)(this,e);var r=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return r.imageObj=n,r}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(){this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,this.options.shapeProperties.useBorderWithImage===!0){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,h=(o?a:r)/this.body.view.scale;t.lineWidth=Math.min(this.width,h),t.beginPath(),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),t.fill(),t.save(),h>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),t.closePath()}this._drawImageAtPosition(t,s),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.resize(),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"square",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i,o){this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"star",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){(void 0===this.width||this.labelModule.differentState(e,i))&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t,s),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n),this.disableShadow(t,s),this.updateBoundingBox(e,i,t,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangle",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangleDown",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(192),d=o(h),l=i(160),u=o(l),c=i(1),p=i(91),f=i(93),m=function(){function t(e,i,o){var n=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.body.functions.createEdge=this.create.bind(this),this.edgesListeners={add:function(t,e){n.add(e.items)},update:function(t,e){n.update(e.items)},remove:function(t,e){n.remove(e.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:"arrow"},middle:{enabled:!1,scaleFactor:1,type:"arrow"},from:{enabled:!1,scaleFactor:1,type:"arrow"}},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal",multi:!1,vadjust:0,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_forceDisableDynamicCurves",function(e){"dynamic"===e&&(e="continuous");var i=!1;for(var o in t.body.edges)if(t.body.edges.hasOwnProperty(o)){var n=t.body.edges[o],s=t.body.data.edges._data[o];if(void 0!==s){var r=s.smooth;void 0!==r&&r.enabled===!0&&"dynamic"===r.type&&(void 0===e?n.setOptions({smooth:!1}):n.setOptions({smooth:{type:e}}),i=!0)}}i===!0&&t.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",function(){t.reconnectEdges()}),this.body.emitter.on("refreshEdges",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){c.forEach(t.edgesListeners,function(e,i){t.body.data.edges&&t.body.data.edges.off(i,e)}),delete t.body.functions.createEdge,delete t.edgesListeners.add,delete t.edgesListeners.update,delete t.edgesListeners.remove,delete t.edgesListeners})}},{key:"setOptions",value:function(t){if(this.edgeOptions=t,void 0!==t){d.default.parseOptions(this.options,t);var e=!1;if(void 0!==t.smooth)for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&(e=this.body.edges[i].updateEdgeType()||e);if(void 0!==t.font){u.default.parseOptions(this.options.font,t);for(var o in this.body.edges)this.body.edges.hasOwnProperty(o)&&this.body.edges[o].updateLabelModule()}void 0===t.hidden&&void 0===t.physics&&e!==!0||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.edges;if(t instanceof p||t instanceof f)this.body.data.edges=t;else if(Array.isArray(t))this.body.data.edges=new p,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new p}if(o&&c.forEach(this.edgesListeners,function(t,e){o.off(e,t)}),this.body.edges={},this.body.data.edges){c.forEach(this.edgesListeners,function(t,i){e.body.data.edges.on(i,t)});var n=this.body.data.edges.getIds();this.add(n,!0)}i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;ni.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,s.x,s.y,n,this.hover)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top,h=this.edgeType.getDistanceToEdge(i,o,n,s,r,a);return h0&&i<0)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=["arrowStrikethrough","id","from","hidden","hoverWidth","label","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width"];if(O.selectiveDeepExtend(n,t,e,i),O.mergeOptions(t,e,"smooth",i,o),O.mergeOptions(t,e,"shadow",i,o),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:i===!0&&null===e.dashes&&(t.dashes=(0,a.default)(o.dashes)),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),O.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)):i===!0&&null===e.scaling&&(t.scaling=(0,a.default)(o.scaling)),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var r=e.arrows.toLowerCase();t.arrows.to.enabled=r.indexOf("to")!=-1,t.arrows.middle.enabled=r.indexOf("middle")!=-1,t.arrows.from.enabled=r.indexOf("from")!=-1}else{if("object"!==(0,d.default)(e.arrows))throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+(0,s.default)(e.arrows));O.mergeOptions(t.arrows,e.arrows,"to",i,o.arrows),O.mergeOptions(t.arrows,e.arrows,"middle",i,o.arrows),O.mergeOptions(t.arrows,e.arrows,"from",i,o.arrows)}else i===!0&&null===e.arrows&&(t.arrows=(0,a.default)(o.arrows));if(void 0!==e.color&&null!==e.color)if(t.color=O.deepExtend({},t.color,!0),O.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var h=!1;void 0!==e.color.color&&(t.color.color=e.color.color,h=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,h=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,h=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&h===!0&&(t.color.inherit=!1)}else i===!0&&null===e.color&&(t.color=O.bridgeObject(o.color));void 0!==e.font&&null!==e.font?m.default.parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=O.bridgeObject(o.font))}}]),t}();e.default=D},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(161),s=o(n),r=i(166),a=o(r),h=i(115),d=o(h),l=i(116),u=o(l),c=i(169),p=o(c),f=i(170),m=o(f),v=i(194),g=o(v),y=function(t){function e(t,i,o){return(0,d.default)(this,e),(0,p.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o))}return(0,m.default)(e,t),(0,u.default)(e,[{key:"_line",value:function(t,e,i){var o=i[0],n=i[1];t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i||void 0===o.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.bezierCurveTo(o.x,o.y,n.x,n.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"_getViaCoordinates",value:function(){var t=this.from.x-this.to.x,e=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(t)>Math.abs(e)||this.options.smooth.forceDirection===!0||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates(),h=(0,s.default)(a,2),d=h[0],l=h[1];return this._getDistanceToBezierEdge(t,e,i,o,n,r,d,l)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=(0,s.default)(e,2),o=i[0],n=i[1],r=t,a=[];a[0]=Math.pow(1-r,3),a[1]=3*r*Math.pow(1-r,2),a[2]=3*Math.pow(r,2)*(1-r),a[3]=Math.pow(r,3);var h=a[0]*this.fromPoint.x+a[1]*o.x+a[2]*n.x+a[3]*this.toPoint.x,d=a[0]*this.fromPoint.y+a[1]*o.y+a[2]*n.y+a[3]*this.toPoint.y;return{x:h,y:d}}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(195),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r,a){var h=1e9,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=t,m=e,v=[0,0,0,0];for(l=1;l<10;l++)u=.1*l,v[0]=Math.pow(1-u,3),v[1]=3*u*Math.pow(1-u,2),v[2]=3*Math.pow(u,2)*(1-u),v[3]=Math.pow(u,3),c=v[0]*t+v[1]*r.x+v[2]*a.x+v[3]*i,p=v[0]*e+v[1]*r.y+v[2]*a.y+v[3]*o,l>0&&(d=this._getDistanceToLine(f,m,c,p,n,s),h=d2&&void 0!==arguments[2]?arguments[2]:this._getViaCoordinates(),h=10,d=0,l=0,u=1,c=.2,p=this.to,f=!1;for(t.id===this.from.id&&(p=this.from,f=!0);l<=u&&d0&&(h=this._getDistanceToLine(p,f,u,c,n,s),a=ho.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=10,d=0,l=this.options.selfReferenceSize,u=void 0,c=void 0,p=void 0,f=void 0,m=void 0,v=.05,g=.5*(s+r);s<=r&&d0?a>0?s=g:r=g:a>0?r=g:s=g,d++;return u.t=g,u}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t,e,i,o){if(e.inheritsColor!==!1){if("both"===e.inheritsColor&&this.from.id!==this.to.id){var n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,r=void 0;return s=this.from.options.color.highlight.border,r=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(s=l.overrideOpacity(this.from.options.color.border,e.opacity),r=l.overrideOpacity(this.to.options.color.border,e.opacity)):this.from.selected===!0&&this.to.selected===!1?r=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,r),n}return"to"===e.inheritsColor?l.overrideOpacity(this.to.options.color.border,e.opacity):l.overrideOpacity(this.from.options.color.border,e.opacity)}return l.overrideOpacity(e.color,e.opacity)}},{key:"_circle",value:function(t,e,i,o,n){this.enableShadow(t,e),t.beginPath(),t.arc(i,o,n,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t,e)}},{key:"getDistanceToEdge",value:function(t,e,i,o,n,r,a,h){var d=0;if(this.from!=this.to)d=this._getDistanceToEdge(t,e,i,o,n,r,a);else{var l=this._getCircleData(void 0),u=(0,s.default)(l,3),c=u[0],p=u[1],f=u[2],m=c-n,v=p-r;d=Math.abs(Math.sqrt(m*m+v*v)-f)}return this.labelModule.size.leftn&&this.labelModule.size.topr?0:d}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:d<0&&(d=0);var l=t+d*r,u=e+d*a,c=l-n,p=u-s;return Math.sqrt(c*c+p*p)}},{key:"getArrowData",value:function(t,e,i,o,n,r){var a=void 0,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=r.width;if("from"===e?(d=this.from,l=this.to,u=.1,c=r.fromArrowScale,p=r.fromArrowType):"to"===e?(d=this.to,l=this.from,u=-.1,c=r.toArrowScale,p=r.toArrowType):(d=this.to,l=this.from,c=r.middleArrowScale,p=r.middleArrowType),d!=l)if("middle"!==e)if(this.options.smooth.enabled===!0){h=this.findBorderPosition(d,t,{via:i});var m=this.getPoint(Math.max(0,Math.min(1,h.t+u)),i);a=Math.atan2(h.y-m.y,h.x-m.x)}else a=Math.atan2(d.y-l.y,d.x-l.x),h=this.findBorderPosition(d,t);else a=Math.atan2(d.y-l.y,d.x-l.x),h=this.getPoint(.5,i);else{var v=this._getCircleData(t),g=(0,s.default)(v,3),y=g[0],b=g[1],_=g[2];"from"===e?(h=this.findBorderPosition(this.from,t,{x:y,y:b,low:.25,high:.6,direction:-1}),a=h.t*-2*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(h=this.findBorderPosition(this.from,t,{x:y,y:b,low:.6,high:1,direction:1}),a=h.t*-2*Math.PI+1.5*Math.PI-1.1*Math.PI):(h=this._pointOnCircle(y,b,_,.175),a=3.9269908169872414)}var w=15*c+3*f,x=h.x-.9*w*Math.cos(a),k=h.y-.9*w*Math.sin(a),O={x:x,y:k};return{point:h,core:O,angle:a,length:w,type:p}}},{key:"drawArrowHead",value:function(t,e,i,o,n){t.strokeStyle=this.getColor(t,e,i,o),t.fillStyle=t.strokeStyle,t.lineWidth=e.width,n.type&&"circle"===n.type.toLowerCase()?t.circleEndpoint(n.point.x,n.point.y,n.angle,n.length):t.arrowEndpoint(n.point.x,n.point.y,n.angle,n.length),this.enableShadow(t,e),t.fill(),this.disableShadow(t,e)}},{key:"enableShadow",value:function(t,e){e.shadow===!0&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){e.shadow===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(161),s=o(n),r=i(166),a=o(r),h=i(115),d=o(h),l=i(116),u=o(l),c=i(169),p=o(c),f=i(170),m=o(f),v=i(195),g=o(v),y=function(t){function e(t,i,o){(0,d.default)(this,e);var n=(0,p.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o));return n._boundFunction=function(){n.positionBezierNode()},n.body.emitter.on("_repositionBezierNodes",n._boundFunction),n}return(0,m.default)(e,t),(0,u.default)(e,[{key:"setOptions",value:function(t){var e=!1;this.options.physics!==t.physics&&(e=!0),this.options=t,this.id=this.options.id,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.setupSupportNode(),this.connect(),e===!0&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}},{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],void 0===this.from||void 0===this.to||this.options.physics===!1?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}},{key:"cleanup",value:function(){return this.body.emitter.off("_repositionBezierNodes",this._boundFunction),void 0!==this.via&&(delete this.body.nodes[this.via.id],this.via=void 0,!0)}},{key:"setupSupportNode",value:function(){if(void 0===this.via){var t="edgeId:"+this.id,e=this.body.functions.createNode({id:t,shape:"circle",physics:!0,hidden:!0});this.body.nodes[t]=e,this.via=e,this.via.parentEdgeId=this.id,this.positionBezierNode()}}},{key:"positionBezierNode",value:function(){void 0!==this.via&&void 0!==this.from&&void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&&(this.via.x=0,this.via.y=0)}},{key:"_line",value:function(t,e,i){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){return this.via}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.via,i=t,o=void 0,n=void 0;if(this.from===this.to){var r=this._getCircleData(this.from),a=(0,s.default)(r,3),h=a[0],d=a[1],l=a[2],u=2*Math.PI*(1-i);o=h+l*Math.sin(u),n=d+l-l*(1-Math.cos(u))}else o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(195),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e,i){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var t=void 0,e=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=nMath.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=sMath.abs(this.from.y-this.to.y)&&(t=this.from.x=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s,t=this.to.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.y2&&void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(t,e,i.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=t,o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(196),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}},{key:"_findBorderPosition",value:function(t,e){var i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),h=t.distanceToBorder(e,n),d=(a-h)/a,l={};return l.x=(1-d)*o.x+d*i.x,l.y=(1-d)*o.y+d*i.y,l}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(201),u=o(l),c=i(202),p=o(c),f=i(203),m=o(f),v=i(204),g=o(v),y=i(205),b=o(y),_=i(206),w=o(_),x=i(207),k=o(x),O=i(208),D=o(O),M=i(1),S=function(){function t(e){(0,a.default)(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},M.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return(0,d.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("initPhysics",function(){t.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){t.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){t.stopSimulation(),t.ready=!1}),this.body.emitter.on("disablePhysics",function(){t.physicsEnabled=!1,t.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){t.setOptions(t.options),t.ready===!0&&t.startSimulation()}),this.body.emitter.on("startSimulation",function(){t.ready===!0&&t.startSimulation()}),this.body.emitter.on("stopSimulation",function(){t.stopSimulation()}),this.body.emitter.on("destroy",function(){t.stopSimulation(!1),t.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){t.updatePhysicsData()})}},{key:"setOptions",value:function(t){void 0!==t&&(t===!1?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):(this.physicsEnabled=!0,M.selectiveNotDeepExtend(["stabilization"],this.options,t),M.mergeOptions(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),this.options.enabled===!1&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new k.default(this.body,this.physicsBody,t),this.edgesSolver=new g.default(this.body,this.physicsBody,t),this.gravitySolver=new D.default(this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new p.default(this.body,this.physicsBody,t),this.edgesSolver=new g.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new m.default(this.body,this.physicsBody,t),this.edgesSolver=new b.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new u.default(this.body,this.physicsBody,t),this.edgesSolver=new g.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)),this.modelOptions=t}},{key:"initPhysics",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?this.options.stabilization.enabled===!0?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.stabilized=!0,t===!0&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,t===!0&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var t=Date.now();this.physicsTick();var e=Date.now()-t;(e<.4*this.simulationInterval||this.runDoubleSpeed===!0)&&this.stabilized===!1&&(this.physicsTick(),this.runDoubleSpeed=!0),this.stabilized===!0&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||this.startedStabilization===!0)&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0},0)}},{key:"physicsTick",value:function(){if(this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilized===!1){if(this.adaptiveTimestep===!0&&this.adaptiveTimestepEnabled===!0){var t=1.2;this.adaptiveCounter%this.adaptiveInterval===0?(this.timestep=2*this.timestep,this.calculateForces(),this.moveNodes(),this.revert(),this.timestep=.5*this.timestep,this.calculateForces(),this.moveNodes(),this.calculateForces(),this.moveNodes(),this._evaluateStepQuality()===!0?this.timestep=t*this.timestep:this.timestep/ts))return!1;return!0}},{key:"moveNodes",value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=this.options.maxVelocity?this.options.maxVelocity:1e9,i=0,o=0,n=5,s=0;se?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var h=this.modelOptions.damping*s[t].y,d=(n[t].y-h)/i.options.mass;s[t].y+=d*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;var l=Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;return"number"!=typeof e&&(console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",this.options.stabilization.iterations),e=this.options.stabilization.iterations),0===this.physicsBody.physicsNodeIndices.length?void(this.ready=!0):(this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,void setTimeout(function(){return t._stabilizationBatch()},0))}},{key:"_stabilizationBatch",value:function(){this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0);for(var t=0;this.stabilized===!1&&t0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;s0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1,e=t),this.overlapAvoidanceFactor<1&&o.shape.radius&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,h=1;h0&&(dr&&(r=d),la&&(a=l))}var u=Math.abs(r-n)-Math.abs(a-s);u>0?(s-=.5*u,a+=.5*u):(n+=.5*u,r-=.5*u);var c=1e-5,p=Math.max(c,Math.abs(r-n)),f=.5*p,m=.5*(n+r),v=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:v-f,maxY:v+f},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(g.root);for(var y=0;y0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=this.seededRandom(),e.y+=this.seededRandom()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e.default=h},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t,e,i,o,n,s,r,a,h=this.body.nodes,d=this.physicsBody.physicsNodeIndices,l=this.physicsBody.forces,u=this.options.nodeDistance,c=-2/3/u,p=4/3,f=0;f0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(62),a=o(r),h=i(115),d=o(h),l=i(116),u=o(l),c=i(210),p=o(c),f=i(211),m=o(f),v=i(1),g=function(){function t(e){var i=this;(0,d.default)(this,t),this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},v.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return(0,u.default)(t,[{key:"clusterByHubsize",value:function(t,e){void 0===t?t=this._getHubSize():"object"===("undefined"==typeof t?"undefined":(0,a.default)(t))&&(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],o=0;o=t&&i.push(n.id)}for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{},e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===t.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");t=this._checkOptions(t);for(var i={},o={},n=0;n2&&void 0!==arguments[2])||arguments[2];e=this._checkOptions(e);for(var o=[],n={},r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=0;u0&&(0,s.default)(f).length>0&&v===!0&&o.push({nodes:c,edges:f})}}}for(var _=0;_1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:"clusterBridges",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:"clusterByConnection",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[t];e=this._checkOptions(e,o),void 0===e.clusterNodeProperties.x&&(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},r={},a=o.id,h=p.default.cloneOptions(o);n[a]=o;for(var d=0;d-1&&(r[g.id]=g)}this._cluster(n,r,e,i)}},{key:"_createClusterEdges",value:function(t,e,i,o){for(var n=void 0,r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=(0,s.default)(t),c=[],f=0;f0&&void 0!==arguments[0]?arguments[0]:{};return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}},{key:"_cluster",value:function(t,e,i){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(0!=(0,s.default)(t).length&&(1!=(0,s.default)(t).length||1==i.clusterNodeProperties.allowSingleNodeCluster)){for(var n in t)if(t.hasOwnProperty(n)&&void 0!==this.clusteredNodes[n])return;var r=v.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var a=[];for(var h in t)if(t.hasOwnProperty(h)){var d=p.default.cloneOptions(t[h]);a.push(d)}var l=[];for(var u in e)if(e.hasOwnProperty(u)&&"clusterEdge:"!==u.substr(0,12)){var c=p.default.cloneOptions(e[u],"edge");l.push(c)}if(r=i.processProperties(r,a,l),!r)throw new Error("The processProperties function does not return properties!")}void 0===r.id&&(r.id="cluster:"+v.randomUUID());var f=r.id;void 0===r.label&&(r.label="cluster");var g=void 0;void 0===r.x&&(g=this._getClusterPosition(t),r.x=g.x),void 0===r.y&&(void 0===g&&(g=this._getClusterPosition(t)),r.y=g.y),r.id=f;var y=this.body.functions.createNode(r,m.default);y.isCluster=!0,y.containedNodes=t,y.containedEdges=e,y.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[r.id]=y,this._createClusterEdges(t,e,r,i.clusterEdgeProperties);for(var b in e)if(e.hasOwnProperty(b)&&void 0!==this.body.edges[b]){var _=this.body.edges[b];this._backupEdgeOptions(_),_.setOptions({physics:!1,hidden:!0})}for(var w in t)t.hasOwnProperty(w)&&(this.clusteredNodes[w]={clusterId:r.id,node:this.body.nodes[w]},this.body.nodes[w].setOptions({hidden:!0,physics:!1}));r.id=void 0,o===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"_backupEdgeOptions",value:function(t){void 0===this.clusteredEdges[t.id]&&(this.clusteredEdges[t.id]={physics:t.options.physics,hidden:t.options.hidden})}},{key:"_restoreEdge",value:function(t){var e=this.clusteredEdges[t.id];void 0!==e&&(t.setOptions({physics:e.physics,hidden:e.hidden}),delete this.clusteredEdges[t.id])}},{key:"isCluster",value:function(t){return void 0!==this.body.nodes[t]?this.body.nodes[t].isCluster===!0:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(t){for(var e=(0,s.default)(t),i=t[e[0]].x,o=t[e[0]].x,n=t[e[0]].y,r=t[e[0]].y,a=void 0,h=1;ho?a.x:o,n=a.yr?a.y:r;return{x:.5*(i+o),y:.5*(n+r)}}},{key:"openCluster",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var o=this.body.nodes[t],n=o.containedNodes,s=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){var r={},a={x:o.x,y:o.y};for(var h in n)if(n.hasOwnProperty(h)){var d=this.body.nodes[h];r[h]={x:d.x,y:d.y}}var l=e.releaseFunction(a,r);for(var u in n)if(n.hasOwnProperty(u)){var c=this.body.nodes[u];void 0!==l[u]&&(c.x=void 0===l[u].x?o.x:l[u].x,c.y=void 0===l[u].y?o.y:l[u].y)}}else for(var f in n)if(n.hasOwnProperty(f)){var m=this.body.nodes[f];m=n[f],m.options.fixed.x===!1&&(m.x=o.x),m.options.fixed.y===!1&&(m.y=o.y)}for(var g in n)if(n.hasOwnProperty(g)){var y=this.body.nodes[g];y.vx=o.vx,y.vy=o.vy,y.setOptions({hidden:!1,physics:!0}),delete this.clusteredNodes[g]}for(var b=[],_=0;_o&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(1),d=function(){function t(){(0,s.default)(this,t)}return(0,a.default)(t,null,[{key:"getRange",value:function(t){var e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.shape.boundingBox.left&&(s=e.shape.boundingBox.left),re.shape.boundingBox.top&&(o=e.shape.boundingBox.top),n1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.x&&(s=e.x),re.y&&(o=e.y),n0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.allowRedraw=!1,t.renderingActive=!1,t.requiresTimeout===!0?clearTimeout(t.renderTimer):cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];h.selectiveDeepExtend(e,this.options,t)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var t=this;this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedraw===!0&&(this.redrawRequested=!0, -this.requiresTimeout===!0?window.setTimeout(function(){t._redraw(!1)},0):window.requestAnimationFrame(function(){t._redraw(!1)}))}},{key:"_redraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.allowRedraw===!0){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(e.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),t===!0&&e.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){var t=this.canvas.frame.canvas.getContext("2d");void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0),t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=20,a=this.canvas.DOMtoCanvas({x:-r,y:-r}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+r,y:this.canvas.frame.canvas.clientHeight+r}),d={top:a.y,left:a.x,bottom:h.y,right:h.x},l=0;l0&&void 0!==arguments[0]?arguments[0]:this.pixelRatio;this.initialized===!0&&(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=t&&1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&&(i=this.cameraState.scale*e),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(t.indexOf("%")!==-1||t.indexOf("px")!==-1)return t;if(t.indexOf("%")===-1)return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var t=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new h(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:h.DIRECTION_ALL}),d.onTouch(this.hammer,function(e){t.body.eventListeners.onTouch(e)}),this.hammer.on("tap",function(e){t.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",function(e){t.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",function(e){t.body.eventListeners.onHold(e)}),this.hammer.on("panstart",function(e){t.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",function(e){t.body.eventListeners.onDrag(e)}),this.hammer.on("panend",function(e){t.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",function(e){t.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("mousewheel",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",function(e){t.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",function(e){t.body.eventListeners.onContext(e)}),this.hammerFrame=new h(this.frame),d.onRelease(this.hammerFrame,function(e){t.body.eventListeners.onRelease(e)})}},{key:"setSize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.width,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.height;t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.frame.canvas.getContext("2d"),r=this.pixelRatio;return this.pixelRatio=(window.devicePixelRatio||1)/(s.webkitBackingStorePixelRatio||s.mozBackingStorePixelRatio||s.msBackingStorePixelRatio||s.oBackingStorePixelRatio||s.backingStorePixelRatio||1),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e?(this._getCameraState(r),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0):(this.frame.canvas.width==Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&this.frame.canvas.height==Math.round(this.frame.canvas.clientHeight*this.pixelRatio)||this._getCameraState(r),this.frame.canvas.width!=Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&(this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),i=!0),this.frame.canvas.height!=Math.round(this.frame.canvas.clientHeight*this.pixelRatio)&&(this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),i=!0)),i===!0&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:"_XconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}},{key:"DOMtoCanvas",value:function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(210),d=o(h),l=i(1),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",this.fit.bind(this)),this.body.emitter.on("animationFinished",function(){o.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",this.releaseNode.bind(this))}return(0,a.default)(t,[{key:"setOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=t}},{key:"fit",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{nodes:[]},e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=void 0;if(void 0!==t.nodes&&0!==t.nodes.length||(t.nodes=this.body.nodeIndices),e===!0){var n=0;for(var s in this.body.nodes)if(this.body.nodes.hasOwnProperty(s)){var r=this.body.nodes[s];r.predefinedPosition===!0&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(t,!1);i=d.default.getRange(this.body.nodes,t.nodes);var a=this.body.nodeIndices.length;o=12.662/(a+7.4147)+.0964822;var h=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);o*=h}else{this.body.emitter.emit("_resizeNodes"),i=d.default.getRange(this.body.nodes,t.nodes);var l=1.1*Math.abs(i.maxX-i.minX),u=1.1*Math.abs(i.maxY-i.minY),c=this.canvas.frame.canvas.clientWidth/l,p=this.canvas.frame.canvas.clientHeight/u;o=c<=p?c:p}o>1?o=1:0===o&&(o=1);var f=d.default.findCenter(i),m={position:f,scale:o,animation:t.animation};this.moveTo(m)}},{key:"focus",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.getViewPosition()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=l.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(216),d=o(h),l=i(128),u=o(l),c=i(1),p=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new d.default(e,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("destroy",function(){clearTimeout(t.popupTimer),delete t.body.functions.getPointer})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];c.selectiveNotDeepExtend(e,this.options,t),c.mergeOptions(this.options,t,"keyboard"),t.tooltip&&(c.extend(this.options.tooltip,t.tooltip),t.tooltip.color&&(this.options.tooltip.color=c.parseColor(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(t){return{x:t.x-c.getAbsoluteLeft(this.canvas.frame.canvas),y:t.y-c.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(t){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var a=this.selectionHandler._getSelectedEdgeCount(),h=this.selectionHandler._getSelectedNodeCount(),d=this.selectionHandler.getSelection(),l=this._determineIfDifferent(s,d),u=l.nodesChanged,c=l.edgesChanged,p=!1;h-n>0?(this.selectionHandler._generateClickEvent("selectNode",e,t),r=!0,p=!0):u===!0&&h>0?(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),this.selectionHandler._generateClickEvent("selectNode",e,t),p=!0,r=!0):h-n<0&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),r=!0),a-o>0&&p===!1?(this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a>0&&c===!0?(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a-o<0&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"_determineIfDifferent",value:function(t,e){for(var i=!1,o=!1,n=0;n10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),i0&&(this.popupObj=h[l[l.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],g=0;g0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new u.default(this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0)){var o=this.selectionHandler.getNodeAt(t);i=void 0!==o&&o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e.default=p},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=(i(1),i(108)),d=i(121),l=i(111),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){o.activated=!0,o.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){o.activated=!1,o.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==o.keycharm&&o.keycharm.destroy()}),this.options={}}return(0,a.default)(t,[{key:"setOptions",value:function(t){void 0!==t&&(this.options=t,this.create())}},{key:"create",value:function(){this.options.navigationButtons===!0?this.iconsCreated===!1&&this.loadNavigationElements():this.iconsCreated===!0&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var t=0;t700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){var t=this.body.view.scale,e=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}},{key:"_zoomOut",value:function(){var t=this.body.view.scale,e=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o; -this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}},{key:"configureKeyboardBindings",value:function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=l({container:window,preventDefault:!0}):this.keycharm=l({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",function(){t.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){t.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){t.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){t.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){t.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){t.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){t.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){t.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){t.unbindFromRedraw("_zoomOut")},"keyup")))}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(159),d=o(h),l=i(192),u=o(l),c=i(1),p=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionObj={nodes:[],edges:[]},this.hoverObj={nodes:{},edges:{}},this.options={},this.defaultOptions={multiselect:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0},c.extend(this.options,this.defaultOptions),this.body.emitter.on("_dataChanged",function(){o.updateSelection()})}return(0,a.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){var e=["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"];c.selectiveDeepExtend(e,this.options,t)}}},{key:"selectOnPoint",value:function(t){var e=!1;if(this.options.selectable===!0){var i=this.getNodeAt(t)||this.getEdgeAt(t);this.unselectAll(),void 0!==i&&(e=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return e}},{key:"selectAdditionalOnPoint",value:function(t){var e=!1;if(this.options.selectable===!0){var i=this.getNodeAt(t)||this.getEdgeAt(t);void 0!==i&&(e=!0,i.isSelected()===!0?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return e}},{key:"_generateClickEvent",value:function(t,e,i,o){var n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=void 0;s=n===!0?{nodes:[],edges:[]}:this.getSelection(),s.pointer={DOM:{x:i.x,y:i.y},canvas:this.canvas.DOMtoCanvas(i)},s.event=e,void 0!==o&&(s.previousSelection=o),this.body.emitter.emit(t,s)}},{key:"selectObject",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.selectConnectedEdges;return void 0!==t&&(t instanceof d.default&&e===!0&&this._selectConnectedEdges(t),t.select(),this._addToSelection(t),!0)}},{key:"deselectObject",value:function(t){t.isSelected()===!0&&(t.selected=!1,this._removeFromSelection(t))}},{key:"_getAllNodesOverlappingWith",value:function(t){for(var e=[],i=this.body.nodes,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this._pointerToPositionObject(t),o=this._getAllNodesOverlappingWith(i);return o.length>0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this.canvas.DOMtoCanvas(t),o=10,n=null,s=this.body.edges,r=0;r1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{},i=void 0,o=void 0;if(!t||!t.nodes&&!t.edges)throw"Selection must be an object with nodes and/or edges properties";if((e.unselectAll||void 0===e.unselectAll)&&this.unselectAll(),t.nodes)for(i=0;i1&&void 0!==arguments[1])||arguments[1];if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({nodes:t},{highlightEdges:e})}},{key:"selectEdges",value:function(t){if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({edges:t})}},{key:"updateSelection",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.body.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.body.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}}]),t}();e.default=p},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(161),a=o(r),h=i(62),d=o(h),l=i(115),u=o(l),c=i(116),p=o(c),f=i(210),m=o(f),v=i(1),g=function(){function t(e){(0,u.default)(this,t),this.body=e,this.initialRandomSeed=Math.round(1e6*Math.random()),this.randomSeed=this.initialRandomSeed,this.setPhysics=!1,this.options={},this.optionsBackup={physics:{}},this.defaultOptions={randomSeed:void 0,improvedLayout:!0,hierarchical:{enabled:!1,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:"UD",sortMethod:"hubsize"}},v.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,p.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_dataChanged",function(){t.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",function(){t.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",function(){t.setupHierarchicalLayout()})}},{key:"setOptions",value:function(t,e){if(void 0!==t){var i=this.options.hierarchical.enabled;if(v.selectiveDeepExtend(["randomSeed","improvedLayout"],this.options,t),v.mergeOptions(this.options,t,"hierarchical"),void 0!==t.randomSeed&&(this.initialRandomSeed=t.randomSeed),this.options.hierarchical.enabled===!0)return i===!0&&this.body.emitter.emit("refresh",!0),"RL"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.options.hierarchical.levelSeparation>0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(e);if(i===!0)return this.body.emitter.emit("refresh"),v.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={enabled:void 0===this.optionsBackup.physics.enabled||this.optionsBackup.physics.enabled,solver:"hierarchicalRepulsion"},this.optionsBackup.physics.enabled=void 0===this.optionsBackup.physics.enabled||this.optionsBackup.physics.enabled,this.optionsBackup.physics.solver=this.optionsBackup.physics.solver||"barnesHut"):"object"===(0,d.default)(t.physics)?(this.optionsBackup.physics.enabled=void 0===t.physics.enabled||t.physics.enabled,this.optionsBackup.physics.solver=t.physics.solver||"barnesHut",t.physics.solver="hierarchicalRepulsion"):t.physics!==!1&&(this.optionsBackup.physics.solver="barnesHut",t.physics={solver:"hierarchicalRepulsion"});var e="horizontal";"RL"!==this.options.hierarchical.direction&&"LR"!==this.options.hierarchical.direction||(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:e}):(void 0!==t.edges.smooth.type&&"dynamic"!==t.edges.smooth.type&&(e=t.edges.smooth.type),this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled||t.edges.smooth.enabled,type:void 0===t.edges.smooth.type?"dynamic":t.edges.smooth.type,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0!==t.edges.smooth.forceDirection&&t.edges.smooth.forceDirection},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled||t.edges.smooth.enabled,type:e,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0!==t.edges.smooth.forceDirection&&t.edges.smooth.forceDirection}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0){this.randomSeed=this.initialRandomSeed;for(var e=0;es){for(var r=this.body.nodeIndices.length;this.body.nodeIndices.length>s;){n+=1;var a=this.body.nodeIndices.length;n%3===0?this.body.modules.clustering.clusterBridges():this.body.modules.clustering.clusterOutliers();var h=this.body.nodeIndices.length;if(a==h&&n%3!==0||n>o)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*r)})}this.body.modules.kamadaKawai.solve(this.body.nodeIndices,this.body.edgeIndices,!0),this._shiftToCenter();for(var d=70,l=0;l0){var t=void 0,e=void 0,i=!1,o=!0,n=!1;this.hierarchicalLevels={},this.lastNodeOnLevel={},this.hierarchicalChildrenReference={},this.hierarchicalParentReference={},this.hierarchicalTrees={},this.treeIndex=-1,this.distributionOrdering={},this.distributionIndex={},this.distributionOrderingPresence={};for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0===t.options.x&&void 0===t.options.y&&(o=!1),void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):n=!0);if(n===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");n===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():"directed"===this.options.hierarchical.sortMethod?this._determineLevelsDirected():"custom"===this.options.hierarchical.sortMethod&&this._determineLevelsCustomCallback());for(var s in this.body.nodes)this.body.nodes.hasOwnProperty(s)&&void 0===this.hierarchicalLevels[s]&&(this.hierarchicalLevels[s]=0);var r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(){var t=this,e=!1,i={},o=function(){for(var e=h(),i=0,o=0;o0)for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:1e9,o=1e9,n=1e9,s=1e9,r=-1e9;for(var h in e)if(e.hasOwnProperty(h)){var d=t.body.nodes[h],l=t.hierarchicalLevels[d.id],u=t._getPositionForHierarchy(d),c=t._getSpaceAroundNode(d,e),p=(0,a.default)(c,2),f=p[0],m=p[1];o=Math.min(f,o),n=Math.min(m,n),l<=i&&(s=Math.min(u,s),r=Math.max(u,r))}return[s,r,o,n]},u=function e(i){var o=t.hierarchicalLevels[i];if(t.hierarchicalChildrenReference[i]){var n=t.hierarchicalChildrenReference[i];if(n.length>0)for(var s=0;s1)for(var a=0;a2&&void 0!==arguments[2]&&arguments[2],s=t._getPositionForHierarchy(i),r=t._getPositionForHierarchy(o),h=Math.abs(r-s);if(h>t.options.hierarchical.nodeSpacing){var u={};u[i.id]=!0;var p={};p[o.id]=!0,d(i,u),d(o,p);var f=c(i,o),m=l(u,f),v=(0,a.default)(m,4),g=(v[0],v[1]),y=(v[2],v[3],l(p,f)),b=(0,a.default)(y,4),_=b[0],w=(b[1],b[2]),x=(b[3],Math.abs(g-_));if(x>t.options.hierarchical.nodeSpacing){var k=g-_+t.options.hierarchical.nodeSpacing;k<-w+t.options.hierarchical.nodeSpacing&&(k=-w+t.options.hierarchical.nodeSpacing),k<0&&(t._shiftBlock(o.id,k),e=!0,n===!0&&t._centerParent(o))}}},v=function(o,n){for(var s=n.id,r=n.edges,h=t.hierarchicalLevels[n.id],u=t.options.hierarchical.levelSeparation*t.options.hierarchical.levelSeparation,c={},p=[],f=0;f0?m=Math.min(f,p-t.options.hierarchical.nodeSpacing):f<0&&(m=-Math.min(-f,c-t.options.hierarchical.nodeSpacing)),0!=m&&(t._shiftBlock(n.id,m),e=!0)},w=function(i){var o=t._getPositionForHierarchy(n),s=t._getSpaceAroundNode(n),r=(0,a.default)(s,2),h=r[0],d=r[1],l=i-o,u=o;l>0?u=Math.min(o+(d-t.options.hierarchical.nodeSpacing),i):l<0&&(u=Math.max(o-(h-t.options.hierarchical.nodeSpacing),i)),u!==o&&(t._setPositionForHierarchy(n,u,void 0,!0),e=!0)},x=b(o,p);_(x),x=b(o,r),w(x)},g=function(i){var o=(0,s.default)(t.distributionOrdering);o=o.reverse();for(var n=0;n0)for(var d=0;d0&&Math.abs(g)0&&(a=this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing),this._setPositionForHierarchy(r,a,e),this._validataPositionAndContinue(r,e,a),o++}}}}},{key:"_placeBranchNodes",value:function(t,e){if(void 0!==this.hierarchicalChildrenReference[t]){for(var i=[],o=0;oe&&void 0===this.positionedNodes[s.id]))return;var a=void 0;a=0===n?this._getPositionForHierarchy(this.body.nodes[t]):this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing,this._setPositionForHierarchy(s,a,r),this._validataPositionAndContinue(s,r,a)}for(var h=1e9,d=-1e9,l=0;l0&&(e=this._getHubSize(),0!==e);)for(var o in this.body.nodes)if(this.body.nodes.hasOwnProperty(o)){var n=this.body.nodes[o];n.edges.length===e&&this._crawlNetwork(i,o)}}},{key:"_determineLevelsCustomCallback",value:function(){var t=this,e=1e5,i=function(t,e,i){},o=function(o,n,s){var r=t.hierarchicalLevels[o.id];void 0===r&&(t.hierarchicalLevels[o.id]=e);var a=i(m.default.cloneOptions(o,"node"),m.default.cloneOptions(n,"node"),m.default.cloneOptions(s,"edge"));t.hierarchicalLevels[n.id]=t.hierarchicalLevels[o.id]+a};this._crawlNetwork(o),this._setMinLevelToZero()}},{key:"_determineLevelsDirected",value:function(){var t=this,e=1e4,i=function(i,o,n){var s=t.hierarchicalLevels[i.id];void 0===s&&(t.hierarchicalLevels[i.id]=e),n.toId==o.id?t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]+1:t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]-1};this._crawlNetwork(i),this._setMinLevelToZero()}},{key:"_setMinLevelToZero",value:function(){var t=1e9;for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&void 0!==this.hierarchicalLevels[e]&&(t=Math.min(this.hierarchicalLevels[e],t));for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&void 0!==this.hierarchicalLevels[i]&&(this.hierarchicalLevels[i]-=t)}},{key:"_generateMap",value:function(){var t=this,e=function(e,i){if(t.hierarchicalLevels[i.id]>t.hierarchicalLevels[e.id]){var o=e.id,n=i.id;void 0===t.hierarchicalChildrenReference[o]&&(t.hierarchicalChildrenReference[o]=[]),t.hierarchicalChildrenReference[o].push(n),void 0===t.hierarchicalParentReference[n]&&(t.hierarchicalParentReference[n]=[]),t.hierarchicalParentReference[n].push(o)}};this._crawlNetwork(e)}},{key:"_crawlNetwork",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},i=arguments[1],o={},n=0,s=function i(n,s){if(void 0===o[n.id]){void 0===t.hierarchicalTrees[n.id]&&(t.hierarchicalTrees[n.id]=s,t.treeIndex=Math.max(s,t.treeIndex)),o[n.id]=!0;for(var r=void 0,a=0;a3&&void 0!==arguments[3]&&arguments[3];o!==!0&&(void 0===this.distributionOrdering[i]&&(this.distributionOrdering[i]=[],this.distributionOrderingPresence[i]={}),void 0===this.distributionOrderingPresence[i][t.id]&&(this.distributionOrdering[i].push(t),this.distributionIndex[t.id]=this.distributionOrdering[i].length-1),this.distributionOrderingPresence[i][t.id]=!0),"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x=e:t.y=e}},{key:"_getPositionForHierarchy",value:function(t){return"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x:t.y}},{key:"_sortNodeArray",value:function(t){t.length>1&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.sort(function(t,e){return t.x-e.x}):t.sort(function(t,e){return t.y-e.y}))}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(82),a=o(r),h=i(62),d=o(h),l=i(115),u=o(l),c=i(116),p=o(c),f=i(1),m=i(108),v=i(121),g=function(){ -function t(e,i,o){var n=this;(0,u.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},f.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){n._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return(0,p.default)(t,[{key:"_restore",value:function(){this.inMode!==!1&&(this.options.initiallyActive===!0?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(t,e,i){void 0!==e&&(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&&("boolean"==typeof t?this.options.enabled=t:(this.options.enabled=!0,f.deepExtend(this.options,t)),this.options.initiallyActive===!0&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){this.editMode===!0?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},this.guiEnabled===!0){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var t=this.selectionHandler._getSelectedNodeCount(),e=this.selectionHandler._getSelectedEdgeCount(),i=t+e,o=this.options.locales[this.options.locale],n=!1;this.options.addNode!==!1&&(this._createAddNodeButton(o),n=!0),this.options.addEdge!==!1&&(n===!0?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===t&&"function"==typeof this.options.editNode?(n===!0?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===e&&0===t&&this.options.editEdge!==!1&&(n===!0?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(t>0&&this.options.deleteNode!==!1?(n===!0&&this._createSeperator(4),this._createDeleteButton(o)):0===t&&this.options.deleteEdge!==!1&&(n===!0&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addNode",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean();var e=this.selectionHandler._getSelectedNode();if(void 0!==e){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(e.isCluster!==!0){var i=f.deepExtend({},e.options,!1);if(i.x=e.x,i.y=e.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(e){null!==e&&void 0!==e&&"editNode"===t.inMode&&t.body.data.nodes.getDataSet().update(e),t.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addEdge",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",function(){}),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){var t=this;if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="editEdge","object"===(0,d.default)(this.options.editEdge)&&"function"==typeof this.options.editEdge.editWithoutDrag&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId)){var e=this.body.edges[this.edgeBeingEditedId];return void this._performEditEdge(e.from,e.to)}if(this.guiEnabled===!0){var i=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(i),this._createSeperator(),this._createDescription(i.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId?!function(){var e=t.body.edges[t.edgeBeingEditedId],i=t._getNewTargetNode(e.from.x,e.from.y),o=t._getNewTargetNode(e.to.x,e.to.y);t.temporaryIds.nodes.push(i.id),t.temporaryIds.nodes.push(o.id),t.body.nodes[i.id]=i,t.body.nodeIndices.push(i.id),t.body.nodes[o.id]=o,t.body.nodeIndices.push(o.id),t._temporaryBindUI("onTouch",t._controlNodeTouch.bind(t)),t._temporaryBindUI("onTap",function(){}),t._temporaryBindUI("onHold",function(){}),t._temporaryBindUI("onDragStart",t._controlNodeDragStart.bind(t)),t._temporaryBindUI("onDrag",t._controlNodeDrag.bind(t)),t._temporaryBindUI("onDragEnd",t._controlNodeDragEnd.bind(t)),t._temporaryBindUI("onMouseMove",function(){}),t._temporaryBindEvent("beforeDrawing",function(t){var n=e.edgeType.findBorderPositions(t);i.selected===!1&&(i.x=n.from.x,i.y=n.from.y),o.selected===!1&&(o.x=n.to.x,o.y=n.to.y)}),t.body.emitter.emit("_redraw")}():this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="delete";var e=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(e.length>0){for(var n=0;n0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode?(t.body.data.edges.getDataSet().remove(e.edges),t.body.data.nodes.getDataSet().remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar()):(t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=f.deepExtend({},this.options.controlNodeStyle);i.id="targetNode"+f.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e;var o=this.body.functions.createNode(i);return o.shape.boundingBox={left:t,right:t,top:e,bottom:e},o}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},f.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(f.recursiveDOMDelete(this.editModeDiv),f.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+t]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+t].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+t])}},{key:"_createAddNodeButton",value:function(t){var e=this._createButton("addNode","vis-button vis-add",t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(t){var e=this._createButton("addEdge","vis-button vis-connect",t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(t){var e=this._createButton("editNode","vis-button vis-edit",t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(t){var e=this._createButton("editEdge","vis-button vis-edit",t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(t){if(this.options.rtl)var e="vis-button vis-delete-rtl";else var e="vis-button vis-delete";var i=this._createButton("delete",e,t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(i),this._bindHammerToDiv(i,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(t){var e=this._createButton("back","vis-button vis-back",t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"vis-label";return this.manipulationDOM[t+"Div"]=document.createElement("div"),this.manipulationDOM[t+"Div"].className=e,this.manipulationDOM[t+"Label"]=document.createElement("div"),this.manipulationDOM[t+"Label"].className=o,this.manipulationDOM[t+"Label"].innerHTML=i,this.manipulationDOM[t+"Div"].appendChild(this.manipulationDOM[t+"Label"]),this.manipulationDOM[t+"Div"]}},{key:"_createDescription",value:function(t){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",t))}},{key:"_temporaryBindEvent",value:function(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}},{key:"_temporaryBindUI",value:function(t,e){if(void 0===this.body.eventListeners[t])throw new Error("This UI function does not exist. Typo? You tried: "+t+" possible are: "+(0,a.default)((0,s.default)(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}},{key:"_unbindTemporaryUIs",value:function(){for(var t in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(t)&&(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=f.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+f.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(this.temporaryIds.nodes.indexOf(n[r])===-1){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:f.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.getDataSet().add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e,label:this.body.data.edges._data[this.edgeBeingEditedId].label},n=this.options.editEdge;if("object"===("undefined"==typeof n?"undefined":(0,d.default)(n))&&(n=n.editWithoutDrag),"function"==typeof n){if(2!==n.length)throw new Error("The function for edit does not support two arguments (data, callback)");n(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw"),i.showManipulatorToolbar()):(i.body.data.edges.getDataSet().update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e.default=g},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="object",a="dom",h="any",d={configure:{enabled:{boolean:o},filter:{boolean:o,string:i,array:s,function:"function"},container:{dom:a},showButton:{boolean:o},__type__:{object:r,boolean:o,string:i,array:s,function:"function"}},edges:{arrows:{to:{enabled:{boolean:o},scaleFactor:{number:n},type:{string:["arrow","circle"]},__type__:{object:r,boolean:o}},middle:{enabled:{boolean:o},scaleFactor:{number:n},type:{string:["arrow","circle"]},__type__:{object:r,boolean:o}},from:{enabled:{boolean:o},scaleFactor:{number:n},type:{string:["arrow","circle"]},__type__:{object:r,boolean:o}},__type__:{string:["from","to","middle"],object:r}},arrowStrikethrough:{boolean:o},chosen:{label:{boolean:o,function:"function"},edge:{boolean:o,function:"function"},__type__:{object:r,boolean:o}},color:{color:{string:i},highlight:{string:i},hover:{string:i},inherit:{string:["from","to","both"],boolean:o},opacity:{number:n},__type__:{object:r,string:i}},dashes:{boolean:o,array:s},font:{color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},align:{string:["horizontal","top","middle","bottom"]},vadjust:{number:n},multi:{boolean:o,string:i},bold:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},boldital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},ital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},mono:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},__type__:{object:r,string:i}},hidden:{boolean:o},hoverWidth:{function:"function",number:n},label:{string:i,undefined:"undefined"},labelHighlightBold:{boolean:o},length:{number:n,undefined:"undefined"},physics:{boolean:o},scaling:{min:{number:n},max:{number:n},label:{enabled:{boolean:o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:r,boolean:o}},customScalingFunction:{function:"function"},__type__:{object:r}},selectionWidth:{function:"function",number:n},selfReferenceSize:{number:n},shadow:{enabled:{boolean:o},color:{string:i},size:{number:n},x:{number:n},y:{number:n},__type__:{object:r,boolean:o}},smooth:{enabled:{boolean:o},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"]},roundness:{number:n},forceDirection:{string:["horizontal","vertical","none"],boolean:o},__type__:{object:r,boolean:o}},title:{string:i,undefined:"undefined"},width:{number:n},widthConstraint:{maximum:{number:n},__type__:{object:r,boolean:o,number:n}},value:{number:n,undefined:"undefined"},__type__:{object:r}},groups:{useDefaultGroups:{boolean:o},__any__:"get from nodes, will be overwritten below",__type__:{object:r}},interaction:{dragNodes:{boolean:o},dragView:{boolean:o},hideEdgesOnDrag:{boolean:o},hideNodesOnDrag:{boolean:o},hover:{boolean:o},keyboard:{enabled:{boolean:o},speed:{x:{number:n},y:{number:n},zoom:{number:n},__type__:{object:r}},bindToWindow:{boolean:o},__type__:{object:r,boolean:o}},multiselect:{boolean:o},navigationButtons:{boolean:o},selectable:{boolean:o},selectConnectedEdges:{boolean:o},hoverConnectedEdges:{boolean:o},tooltipDelay:{number:n},zoomView:{boolean:o},__type__:{object:r}},layout:{randomSeed:{undefined:"undefined",number:n},improvedLayout:{boolean:o},hierarchical:{enabled:{boolean:o},levelSeparation:{number:n},nodeSpacing:{number:n},treeSpacing:{number:n},blockShifting:{boolean:o},edgeMinimization:{boolean:o},parentCentralization:{boolean:o},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},__type__:{object:r,boolean:o}},__type__:{object:r}},manipulation:{enabled:{boolean:o},initiallyActive:{boolean:o},addNode:{boolean:o,function:"function"},addEdge:{boolean:o,function:"function"},editNode:{function:"function"},editEdge:{editWithoutDrag:{function:"function"},__type__:{object:r,boolean:o,function:"function"}},deleteNode:{boolean:o,function:"function"},deleteEdge:{boolean:o,function:"function"},controlNodeStyle:"get from nodes, will be overwritten below",__type__:{object:r,boolean:o}},nodes:{borderWidth:{number:n},borderWidthSelected:{number:n,undefined:"undefined"},brokenImage:{string:i,undefined:"undefined"},chosen:{label:{boolean:o,function:"function"},node:{boolean:o,function:"function"},__type__:{object:r,boolean:o}},color:{border:{string:i},background:{string:i},highlight:{border:{string:i},background:{string:i},__type__:{object:r,string:i}},hover:{border:{string:i},background:{string:i},__type__:{object:r,string:i}},__type__:{object:r,string:i}},fixed:{x:{boolean:o},y:{boolean:o},__type__:{object:r,boolean:o}},font:{align:{string:i},color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},vadjust:{number:n},multi:{boolean:o,string:i},bold:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},boldital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},ital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},mono:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},__type__:{object:r,string:i}},group:{string:i,number:n,undefined:"undefined"},heightConstraint:{minimum:{number:n},valign:{string:i},__type__:{object:r,boolean:o,number:n}},hidden:{boolean:o},icon:{face:{string:i},code:{string:i},size:{number:n},color:{string:i},__type__:{object:r}},id:{string:i,number:n},image:{string:i,undefined:"undefined"},label:{string:i,undefined:"undefined"},labelHighlightBold:{boolean:o},level:{number:n,undefined:"undefined"},margin:{top:{number:n},right:{number:n},bottom:{number:n},left:{number:n},__type__:{object:r,number:n}},mass:{number:n},physics:{boolean:o},scaling:{min:{number:n},max:{number:n},label:{enabled:{boolean:o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:r,boolean:o}},customScalingFunction:{function:"function"},__type__:{object:r}},shadow:{enabled:{boolean:o},color:{string:i},size:{number:n},x:{number:n},y:{number:n},__type__:{object:r,boolean:o}},shape:{string:["ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon"]},shapeProperties:{borderDashes:{boolean:o,array:s},borderRadius:{number:n},interpolation:{boolean:o},useImageSize:{boolean:o},useBorderWithImage:{boolean:o},__type__:{object:r}},size:{number:n},title:{string:i,undefined:"undefined"},value:{number:n,undefined:"undefined"},widthConstraint:{minimum:{number:n},maximum:{number:n},__type__:{object:r,boolean:o,number:n}},x:{number:n},y:{number:n},__type__:{object:r}},physics:{enabled:{boolean:o},barnesHut:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:r}},forceAtlas2Based:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:r}},repulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:r}},hierarchicalRepulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:r}},maxVelocity:{number:n},minVelocity:{number:n},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{boolean:o},iterations:{number:n},updateInterval:{number:n},onlyDynamicEdges:{boolean:o},fit:{boolean:o},__type__:{object:r,boolean:o}},timestep:{number:n},adaptiveTimestep:{boolean:o},__type__:{object:r,boolean:o}},autoResize:{boolean:o},clickToUse:{boolean:o},locale:{string:i},locales:{__any__:{any:h},__type__:{object:r}},height:{string:i},width:{string:i},__type__:{object:r}};d.groups.__any__=d.nodes,d.manipulation.controlNodeStyle=d.nodes;var l={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown"],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1],interpolation:!0,useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},middle:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},from:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"}},arrowStrikethrough:!0,color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"],forceDirection:["horizontal","vertical","none"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0 -},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01]}};e.allOptions=d,e.configureOptions=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(161),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(222),u=o(l),c=function(){function t(e,i,o){(0,a.default)(this,t),this.body=e,this.springLength=i,this.springConstant=o,this.distanceSolver=new u.default}return(0,d.default)(t,[{key:"setOptions",value:function(t){t&&(t.springLength&&(this.springLength=t.springLength),t.springConstant&&(this.springConstant=t.springConstant))}},{key:"solve",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(o),this._createK_matrix(o);for(var n=.01,r=1,a=0,h=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),d=5,l=1e9,u=0,c=0,p=0,f=0,m=0;l>n&&ar&&m=.1;)p=n[l++%s],p>d&&(p=d),c=Math.sqrt(p*p/(1+h*h)),c=r<0?-c:c,t+=c,e+=h*c,u===!0?this.lineTo(t,e):this.moveTo(t,e),d-=p,u=!u})},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t){return R=t,m()}function s(){L=0,A=R.charAt(0)}function r(){L++,A=R.charAt(L)}function a(){return R.charAt(L+1)}function h(t){return H.test(t)}function d(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function l(t,e,i){for(var o=e.split("."),n=t;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function u(t,e){for(var i,o,n=null,s=[t],r=t;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;i=0;i--){var a=s[i];a.nodes||(a.nodes=[]),a.nodes.indexOf(n)===-1&&a.nodes.push(n)}e.attr&&(n.attr=d(n.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=d({},t.edge);e.attr=d(i,e.attr)}}function p(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=d({},t.edge)),s.attr=d(s.attr||{},n),s}function f(){for(F=N.NULL,B="";" "===A||"\t"===A||"\n"===A||"\r"===A;)r();do{var t=!1;if("#"===A){for(var e=L-1;" "===R.charAt(e)||"\t"===R.charAt(e);)e--;if("\n"===R.charAt(e)||""===R.charAt(e)){for(;""!=A&&"\n"!=A;)r();t=!0}}if("/"===A&&"/"===a()){for(;""!=A&&"\n"!=A;)r();t=!0}if("/"===A&&"*"===a()){for(;""!=A;){if("*"===A&&"/"===a()){r(),r();break}r()}t=!0}for(;" "===A||"\t"===A||"\n"===A||"\r"===A;)r()}while(t);if(""===A)return void(F=N.DELIMITER);var i=A+a();if(z[i])return F=N.DELIMITER,B=i,r(),void r();if(z[A])return F=N.DELIMITER,B=A,void r();if(h(A)||"-"===A){for(B+=A,r();h(A);)B+=A,r();return"false"===B?B=!1:"true"===B?B=!0:isNaN(Number(B))||(B=Number(B)),void(F=N.IDENTIFIER)}if('"'===A){for(r();""!=A&&('"'!=A||'"'===A&&'"'===a());)B+=A,'"'===A&&r(),r();if('"'!=A)throw k('End of string " expected');return r(),void(F=N.IDENTIFIER)}for(F=N.UNKNOWN;""!=A;)B+=A,r();throw new SyntaxError('Syntax error in part "'+O(B,30)+'"')}function m(){var t={};if(s(),f(),"strict"===B&&(t.strict=!0,f()),"graph"!==B&&"digraph"!==B||(t.type=B,f()),F===N.IDENTIFIER&&(t.id=B,f()),"{"!=B)throw k("Angle bracket { expected");if(f(),v(t),"}"!=B)throw k("Angle bracket } expected");if(f(),""!==B)throw k("End of file expected");return f(),delete t.node,delete t.edge,delete t.graph,t}function v(t){for(;""!==B&&"}"!=B;)g(t),";"===B&&f()}function g(t){var e=y(t);if(e)return void w(t,e);var i=b(t);if(!i){if(F!=N.IDENTIFIER)throw k("Identifier expected");var o=B;if(f(),"="===B){if(f(),F!=N.IDENTIFIER)throw k("Identifier expected");t[o]=B,f()}else _(t,o)}}function y(t){var e=null;if("subgraph"===B&&(e={},e.type="subgraph",f(),F===N.IDENTIFIER&&(e.id=B,f())),"{"===B){if(f(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,v(e),"}"!=B)throw k("Angle bracket } expected");f(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function b(t){return"node"===B?(f(),t.node=x(),"node"):"edge"===B?(f(),t.edge=x(),"edge"):"graph"===B?(f(),t.graph=x(),"graph"):null}function _(t,e){var i={id:e},o=x();o&&(i.attr=o),u(t,i),w(t,e)}function w(t,e){for(;"->"===B||"--"===B;){var i,o=B;f();var n=y(t);if(n)i=n;else{if(F!=N.IDENTIFIER)throw k("Identifier or subgraph expected");i=B,u(t,{id:i}),f()}var s=x(),r=p(t,e,i,o,s);c(t,r),e=i}}function x(){for(var t=null;"["===B;){for(f(),t={};""!==B&&"]"!=B;){if(F!=N.IDENTIFIER)throw k("Attribute name expected");var e=B;if(f(),"="!=B)throw k("Equal sign = expected");if(f(),F!=N.IDENTIFIER)throw k("Attribute value expected");var i=B;l(t,e,i),f(),","==B&&f()}if("]"!=B)throw k("Bracket ] expected");f()}return t}function k(t){return new SyntaxError(t+', got "'+O(B,30)+'" (char '+L+")")}function O(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r":!0,"--":!0},R="",L=0,A="",B="",F=N.NULL,H=/[a-zA-Z_0-9.:#]/;e.parseDOT=n,e.DOTToGraph=C},function(t,e){function i(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;a2&&void 0!==arguments[2]&&arguments[2];for(var n in t)void 0!==i[n]&&("object"!==(0,u.default)(i[n])?void 0!==i[n]&&null!==i[n]||void 0===t[n]||o!==!0?t[n]=i[n]:delete t[n]:"object"===(0,u.default)(t[n])&&e.fillIfDefined(t[n],i[n],o))},e.protoExtend=function(t,e){for(var i=1;i3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&t.indexOf(s)==-1)if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){t=t.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(t,e,i,o){return e+e+i+i+o+o});var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null},e.overrideOpacity=function(t,i){if(t.indexOf("rgba")!=-1)return t;if(t.indexOf("rgb")!=-1){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t;return{h:60*((t==o?3:i==o?1:5)-s/(n-o))/360,s:(n-o)/n,v:n}};var m={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return(0,d.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=m.split(t.style.cssText),n=m.split(i),s=e.extend(o,n);t.style.cssText=m.join(s)},e.removeCssText=function(t,e){var i=m.split(t.style.cssText),o=m.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=m.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t)},e.isValidRGB=function(t){return t=t.replace(" ",""),/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t)},e.isValidRGBA=function(t){return t=t.replace(" ",""),/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t)},e.selectiveBridgeObject=function(t,i){if("object"==(void 0===i?"undefined":(0,u.default)(i))){for(var o=(0,a.default)(i),n=0;n0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=(arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{});if(null===e[i])t[i]=(0,a.default)(o[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var n in e[i])e[i].hasOwnProperty(n)&&(t[i][n]=e[i][n])}},e.binarySearchCustom=function(t,e,i,o){for(var n=0,s=0,r=t.length-1;s<=r&&n<1e4;){var a=Math.floor((s+r)/2),h=t[a],d=void 0===o?h[i]:h[i][o],l=e(d);if(0==l)return a;l==-1?s=a+1:r=a-1,n++}return-1},e.binarySearchValue=function(t,e,i,o,n){for(var s,r,a,h,d=0,l=0,u=t.length-1,n=void 0!=n?n:function(t,e){return t==e?0:t0)return"before"==o?Math.max(0,h-1):h;if(n(r,e)<0&&n(a,e)>0)return"before"==o?h:Math.min(t.length-1,h+1);n(r,e)<0?l=h+1:u=h-1,d++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:(4-2*t)*t-1},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var i=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return i==o&&(o=e.clientWidth),document.body.removeChild(e),i-o},e.topMost=function(t,e){var i=void 0;Array.isArray(e)||(e=[e]);var o=!0,n=!1,r=void 0;try{for(var a,h=(0,s.default)(t);!(o=(a=h.next()).done);o=!0){var d=a.value;if(d){i=d[e[0]];for(var l=1;l=t.length?(this._t=void 0,n(1)):"keys"==e?n(0,i):"values"==e?n(0,t[i]):n(0,[i,t[i]])},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,i){var o=i(10),n=i(12);t.exports=function(t){return o(n(t))}},function(t,e,i){var o=i(11);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},function(t,e){var i={}.toString;t.exports=function(t){return i.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,i){var o=i(14),n=i(15),s=i(30),r=i(20),a=i(31),h=i(8),d=i(32),l=i(46),u=i(48),c=i(47)("iterator"),p=!([].keys&&"next"in[].keys()),f=function(){return this};t.exports=function(t,e,i,m,v,g,y){d(i,e,m);var b,_,w,x=function(t){if(!p&&t in D)return D[t];switch(t){case"keys":return function(){return new i(this,t)};case"values":return function(){return new i(this,t)}}return function(){return new i(this,t)}},k=e+" Iterator",O="values"==v,S=!1,D=t.prototype,M=D[c]||D["@@iterator"]||v&&D[v],C=M||x(v),T=v?O?x("entries"):C:void 0,E="Array"==e?D.entries||M:M;if(E&&(w=u(E.call(new t)))!==Object.prototype&&(l(w,k,!0),o||a(w,c)||r(w,c,f)),O&&M&&"values"!==M.name&&(S=!0,C=function(){return M.call(this)}),o&&!y||!p&&!S&&D[c]||r(D,c,C),h[e]=C,h[k]=f,v)if(b={values:O?C:x("values"),keys:g?C:x("keys"),entries:T},y)for(_ in b)_ in D||s(D,_,b[_]);else n(n.P+n.F*(p||S),e,b);return b}},function(t,e){t.exports=!0},function(t,e,i){var o=i(16),n=i(17),s=i(18),r=i(20),a=function(t,e,i){var h,d,l,u=t&a.F,c=t&a.G,p=t&a.S,f=t&a.P,m=t&a.B,v=t&a.W,g=c?n:n[e]||(n[e]={}),y=g.prototype,b=c?o:p?o[e]:(o[e]||{}).prototype;c&&(i=e);for(h in i)(d=!u&&b&&void 0!==b[h])&&h in g||(l=d?b[h]:i[h],g[h]=c&&"function"!=typeof b[h]?i[h]:m&&d?s(l,o):v&&b[h]==l?function(t){var e=function(e,i,o){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,i)}return new t(e,i,o)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):f&&"function"==typeof l?s(Function.call,l):l,f&&((g.virtual||(g.virtual={}))[h]=l,t&a.R&&y&&!y[h]&&r(y,h,l)))};a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,e){var i=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(t,e){var i=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=i)},function(t,e,i){var o=i(19);t.exports=function(t,e,i){if(o(t),void 0===e)return t;switch(i){case 1:return function(i){return t.call(e,i)};case 2:return function(i,o){return t.call(e,i,o)};case 3:return function(i,o,n){return t.call(e,i,o,n)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,i){var o=i(21),n=i(29);t.exports=i(25)?function(t,e,i){return o.f(t,e,n(1,i))}:function(t,e,i){return t[e]=i,t}},function(t,e,i){var o=i(22),n=i(24),s=i(28),r=Object.defineProperty;e.f=i(25)?Object.defineProperty:function(t,e,i){if(o(t),e=s(e,!0),o(i),n)try{return r(t,e,i)}catch(t){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(t[e]=i.value),t}},function(t,e,i){var o=i(23);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,i){t.exports=!i(25)&&!i(26)(function(){return 7!=Object.defineProperty(i(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,i){t.exports=!i(26)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,i){var o=i(23),n=i(16).document,s=o(n)&&o(n.createElement);t.exports=function(t){return s?n.createElement(t):{}}},function(t,e,i){var o=i(23);t.exports=function(t,e){if(!o(t))return t;var i,n;if(e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;if("function"==typeof(i=t.valueOf)&&!o(n=i.call(t)))return n;if(!e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,i){t.exports=i(20)},function(t,e){var i={}.hasOwnProperty;t.exports=function(t,e){return i.call(t,e)}},function(t,e,i){var o=i(33),n=i(29),s=i(46),r={};i(20)(r,i(47)("iterator"),function(){return this}),t.exports=function(t,e,i){t.prototype=o(r,{next:n(1,i)}),s(t,e+" Iterator")}},function(t,e,i){var o=i(22),n=i(34),s=i(44),r=i(41)("IE_PROTO"),a=function(){},h=function(){var t,e=i(27)("iframe"),o=s.length;for(e.style.display="none",i(45).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(""),t.close(),h=t.F;o--;)delete h.prototype[s[o]];return h()};t.exports=Object.create||function(t,e){var i;return null!==t?(a.prototype=o(t),i=new a,a.prototype=null,i[r]=t):i=h(),void 0===e?i:n(i,e)}},function(t,e,i){var o=i(21),n=i(22),s=i(35);t.exports=i(25)?Object.defineProperties:function(t,e){n(t);for(var i,r=s(e),a=r.length,h=0;a>h;)o.f(t,i=r[h++],e[i]);return t}},function(t,e,i){var o=i(36),n=i(44);t.exports=Object.keys||function(t){return o(t,n)}},function(t,e,i){var o=i(31),n=i(9),s=i(37)(!1),r=i(41)("IE_PROTO");t.exports=function(t,e){var i,a=n(t),h=0,d=[];for(i in a)i!=r&&o(a,i)&&d.push(i);for(;e.length>h;)o(a,i=e[h++])&&(~s(d,i)||d.push(i));return d}},function(t,e,i){var o=i(9),n=i(38),s=i(40);t.exports=function(t){return function(e,i,r){var a,h=o(e),d=n(h.length),l=s(r,d);if(t&&i!=i){for(;d>l;)if((a=h[l++])!=a)return!0}else for(;d>l;l++)if((t||l in h)&&h[l]===i)return t||l||0;return!t&&-1}}},function(t,e,i){var o=i(39),n=Math.min;t.exports=function(t){return t>0?n(o(t),9007199254740991):0}},function(t,e){var i=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:i)(t)}},function(t,e,i){var o=i(39),n=Math.max,s=Math.min;t.exports=function(t,e){return t=o(t),t<0?n(t+e,0):s(t,e)}},function(t,e,i){var o=i(42)("keys"),n=i(43);t.exports=function(t){return o[t]||(o[t]=n(t))}},function(t,e,i){var o=i(16),n=o["__core-js_shared__"]||(o["__core-js_shared__"]={});t.exports=function(t){return n[t]||(n[t]={})}},function(t,e){var i=0,o=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++i+o).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,i){t.exports=i(16).document&&document.documentElement},function(t,e,i){var o=i(21).f,n=i(31),s=i(47)("toStringTag");t.exports=function(t,e,i){t&&!n(t=i?t:t.prototype,s)&&o(t,s,{configurable:!0,value:e})}},function(t,e,i){var o=i(42)("wks"),n=i(43),s=i(16).Symbol,r="function"==typeof s;(t.exports=function(t){return o[t]||(o[t]=r&&s[t]||(r?s:n)("Symbol."+t))}).store=o},function(t,e,i){var o=i(31),n=i(49),s=i(41)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=n(t),o(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,i){var o=i(12);t.exports=function(t){return Object(o(t))}},function(t,e,i){var o=i(51)(!0);i(13)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,i=this._i;return i>=e.length?{value:void 0,done:!0}:(t=o(e,i),this._i+=t.length,{value:t,done:!1})})},function(t,e,i){var o=i(39),n=i(12);t.exports=function(t){return function(e,i){var s,r,a=String(n(e)),h=o(i),d=a.length;return h<0||h>=d?t?"":void 0:(s=a.charCodeAt(h),s<55296||s>56319||h+1===d||(r=a.charCodeAt(h+1))<56320||r>57343?t?a.charAt(h):s:t?a.slice(h,h+2):r-56320+(s-55296<<10)+65536)}}},function(t,e,i){var o=i(22),n=i(53);t.exports=i(17).getIterator=function(t){var e=n(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return o(e.call(t))}},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).getIteratorMethod=function(t){if(void 0!=t)return t[n]||t["@@iterator"]||s[o(t)]}},function(t,e,i){var o=i(11),n=i(47)("toStringTag"),s="Arguments"==o(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,i,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=r(e=Object(t),n))?i:s?o(e):"Object"==(a=o(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,i){t.exports={default:i(56),__esModule:!0}},function(t,e,i){i(57);var o=i(17).Object;t.exports=function(t,e){return o.create(t,e)}},function(t,e,i){var o=i(15);o(o.S,"Object",{create:i(33)})},function(t,e,i){t.exports={default:i(59),__esModule:!0}},function(t,e,i){i(60),t.exports=i(17).Object.keys},function(t,e,i){var o=i(49),n=i(35);i(61)("keys",function(){return function(t){return n(o(t))}})},function(t,e,i){var o=i(15),n=i(17),s=i(26);t.exports=function(t,e){var i=(n.Object||{})[t]||Object[t],r={};r[t]=e(i),o(o.S+o.F*s(function(){i(1)}),"Object",r)}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(63),s=o(n),r=i(66),a=o(r),h="function"==typeof a.default&&"symbol"==typeof s.default?function(t){return typeof t}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":typeof t};e.default="function"==typeof a.default&&"symbol"===h(s.default)?function(t){return void 0===t?"undefined":h(t)}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":void 0===t?"undefined":h(t)}},function(t,e,i){t.exports={default:i(64),__esModule:!0}},function(t,e,i){i(50),i(4),t.exports=i(65).f("iterator")},function(t,e,i){e.f=i(47)},function(t,e,i){t.exports={default:i(67),__esModule:!0}},function(t,e,i){i(68),i(79),i(80),i(81),t.exports=i(17).Symbol},function(t,e,i){var o=i(16),n=i(31),s=i(25),r=i(15),a=i(30),h=i(69).KEY,d=i(26),l=i(42),u=i(46),c=i(43),p=i(47),f=i(65),m=i(70),v=i(71),g=i(72),y=i(75),b=i(22),_=i(9),w=i(28),x=i(29),k=i(33),O=i(76),S=i(78),D=i(21),M=i(35),C=S.f,T=D.f,E=O.f,P=o.Symbol,I=o.JSON,N=I&&I.stringify,R=p("_hidden"),z=p("toPrimitive"),A={}.propertyIsEnumerable,L=l("symbol-registry"),B=l("symbols"),F=l("op-symbols"),j=Object.prototype,H="function"==typeof P,W=o.QObject,Y=!W||!W.prototype||!W.prototype.findChild,G=s&&d(function(){return 7!=k(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(t,e,i){var o=C(j,e);o&&delete j[e],T(t,e,i),o&&t!==j&&T(j,e,o)}:T,V=function(t){var e=B[t]=k(P.prototype);return e._k=t,e},U=H&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},q=function(t,e,i){return t===j&&q(F,e,i),b(t),e=w(e,!0),b(i),n(B,e)?(i.enumerable?(n(t,R)&&t[R][e]&&(t[R][e]=!1),i=k(i,{enumerable:x(0,!1)})):(n(t,R)||T(t,R,x(1,{})),t[R][e]=!0),G(t,e,i)):T(t,e,i)},X=function(t,e){b(t);for(var i,o=g(e=_(e)),n=0,s=o.length;s>n;)q(t,i=o[n++],e[i]);return t},Z=function(t,e){return void 0===e?k(t):X(k(t),e)},K=function(t){var e=A.call(this,t=w(t,!0));return!(this===j&&n(B,t)&&!n(F,t))&&(!(e||!n(this,t)||!n(B,t)||n(this,R)&&this[R][t])||e)},Q=function(t,e){if(t=_(t),e=w(e,!0),t!==j||!n(B,e)||n(F,e)){var i=C(t,e);return!i||!n(B,e)||n(t,R)&&t[R][e]||(i.enumerable=!0),i}},J=function(t){for(var e,i=E(_(t)),o=[],s=0;i.length>s;)n(B,e=i[s++])||e==R||e==h||o.push(e);return o},$=function(t){for(var e,i=t===j,o=E(i?F:_(t)),s=[],r=0;o.length>r;)!n(B,e=o[r++])||i&&!n(j,e)||s.push(B[e]);return s};H||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=c(arguments.length>0?arguments[0]:void 0),e=function(i){this===j&&e.call(F,i),n(this,R)&&n(this[R],t)&&(this[R][t]=!1),G(this,t,x(1,i))};return s&&Y&&G(j,t,{configurable:!0,set:e}),V(t)},a(P.prototype,"toString",function(){return this._k}),S.f=Q,D.f=q,i(77).f=O.f=J,i(74).f=K,i(73).f=$,s&&!i(14)&&a(j,"propertyIsEnumerable",K,!0),f.f=function(t){return V(p(t))}),r(r.G+r.W+r.F*!H,{Symbol:P});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)p(tt[et++]);for(var tt=M(p.store),et=0;tt.length>et;)m(tt[et++]);r(r.S+r.F*!H,"Symbol",{for:function(t){return n(L,t+="")?L[t]:L[t]=P(t)},keyFor:function(t){if(U(t))return v(L,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){Y=!0},useSimple:function(){Y=!1}}),r(r.S+r.F*!H,"Object",{create:Z,defineProperty:q,defineProperties:X,getOwnPropertyDescriptor:Q,getOwnPropertyNames:J,getOwnPropertySymbols:$}),I&&r(r.S+r.F*(!H||d(function(){var t=P();return"[null]"!=N([t])||"{}"!=N({a:t})||"{}"!=N(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!U(t)){for(var e,i,o=[t],n=1;arguments.length>n;)o.push(arguments[n++]);return e=o[1],"function"==typeof e&&(i=e),!i&&y(e)||(e=function(t,e){if(i&&(e=i.call(this,t,e)),!U(e))return e}),o[1]=e,N.apply(I,o)}}}),P.prototype[z]||i(20)(P.prototype,z,P.prototype.valueOf),u(P,"Symbol"),u(Math,"Math",!0),u(o.JSON,"JSON",!0)},function(t,e,i){var o=i(43)("meta"),n=i(23),s=i(31),r=i(21).f,a=0,h=Object.isExtensible||function(){return!0},d=!i(26)(function(){return h(Object.preventExtensions({}))}),l=function(t){r(t,o,{value:{i:"O"+ ++a,w:{}}})},u=function(t,e){if(!n(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!s(t,o)){if(!h(t))return"F";if(!e)return"E";l(t)}return t[o].i},c=function(t,e){if(!s(t,o)){if(!h(t))return!0;if(!e)return!1;l(t)}return t[o].w},p=function(t){return d&&f.NEED&&h(t)&&!s(t,o)&&l(t),t},f=t.exports={KEY:o,NEED:!1,fastKey:u,getWeak:c,onFreeze:p}},function(t,e,i){var o=i(16),n=i(17),s=i(14),r=i(65),a=i(21).f;t.exports=function(t){var e=n.Symbol||(n.Symbol=s?{}:o.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:r.f(t)})}},function(t,e,i){var o=i(35),n=i(9);t.exports=function(t,e){for(var i,s=n(t),r=o(s),a=r.length,h=0;a>h;)if(s[i=r[h++]]===e)return i}},function(t,e,i){var o=i(35),n=i(73),s=i(74);t.exports=function(t){var e=o(t),i=n.f;if(i)for(var r,a=i(t),h=s.f,d=0;a.length>d;)h.call(t,r=a[d++])&&e.push(r);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,i){var o=i(11);t.exports=Array.isArray||function(t){return"Array"==o(t)}},function(t,e,i){var o=i(9),n=i(77).f,s={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return n(t)}catch(t){return r.slice()}};t.exports.f=function(t){return r&&"[object Window]"==s.call(t)?a(t):n(o(t))}},function(t,e,i){var o=i(36),n=i(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return o(t,n)}},function(t,e,i){var o=i(74),n=i(29),s=i(9),r=i(28),a=i(31),h=i(24),d=Object.getOwnPropertyDescriptor;e.f=i(25)?d:function(t,e){if(t=s(t),e=r(e,!0),h)try{return d(t,e)}catch(t){}if(a(t,e))return n(!o.f.call(t,e),t[e])}},function(t,e){},function(t,e,i){i(70)("asyncIterator")},function(t,e,i){i(70)("observable")},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(83)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(0,function(){function e(){return mo.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function n(t){var e;for(e in t)return!1;return!0}function s(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function r(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function a(t,e){var i,o=[];for(i=0;i0)for(i in yo)o=yo[i],n=e[o],m(n)||(t[o]=n);return t}function g(t){v(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),bo===!1&&(bo=!0,e.updateOffset(this),bo=!1)}function y(t){return t instanceof g||null!=t&&null!=t._isAMomentObject}function b(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function _(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=b(e)),i}function w(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;o0?"future":"past"];return S(i)?i(e):i.replace(/%s/i,e)}function z(t,e){var i=t.toLowerCase();Mo[i]=Mo[i+"s"]=Mo[e]=t}function A(t){return"string"==typeof t?Mo[t]||Mo[t.toLowerCase()]:void 0}function L(t){var e,i,o={};for(i in t)h(t,i)&&(e=A(i))&&(o[e]=t[i]);return o}function B(t,e){Co[t]=e}function F(t){var e=[];for(var i in t)e.push({unit:i,priority:Co[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}function j(t,i){return function(o){return null!=o?(W(this,t,o),e.updateOffset(this,i),this):H(this,t)}}function H(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function W(t,e,i){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](i)}function Y(t){return t=A(t),S(this[t])?this[t]():this}function G(t,e){if("object"==typeof t){t=L(t);for(var i=F(t),o=0;o=0?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function U(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(Io[t]=n),e&&(Io[e[0]]=function(){return V(n.apply(this,arguments),e[1],e[2])}),i&&(Io[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function q(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function X(t){var e,i,o=t.match(To);for(e=0,i=o.length;e=0&&Eo.test(t);)t=t.replace(Eo,i),Eo.lastIndex=0,o-=1;return t}function Q(t,e,i){Lo[t]=S(e)?e:function(t,o){return t&&i?i:e}}function J(t,e){return h(Lo,t)?Lo[t](e._strict,e._locale):new RegExp($(t))}function $(t){return tt(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function tt(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function et(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),s(e)&&(o=function(t,i){i[e]=_(t)}),i=0;i=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function bt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function _t(t,e,i){var o=7+e-i;return-((7+bt(t,0,o).getUTCDay()-e)%7)+o-1}function wt(t,e,i,o,n){var s,r,a=(7+i-o)%7,h=_t(t,o,n),d=1+7*(e-1)+a+h;return d<=0?(s=t-1,r=mt(s)+d):d>mt(t)?(s=t+1,r=d-mt(t)):(s=t,r=d),{year:s,dayOfYear:r}}function xt(t,e,i){var o,n,s=_t(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return r<1?(n=t.year()-1,o=r+kt(n,e,i)):r>kt(t.year(),e,i)?(o=r-kt(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function kt(t,e,i){var o=_t(t,e,i),n=_t(t+1,e,i);return(mt(t)-o+n)/7}function Ot(t){return xt(t,this._week.dow,this._week.doy).week}function St(){return this._week.dow}function Dt(){return this._week.doy}function Mt(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Ct(t){var e=xt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Tt(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Et(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function Pt(t,e){return t?i(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:this._weekdays}function It(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function Nt(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function Rt(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;o<7;++o)s=l([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=Xo.call(this._weekdaysParse,r),n!==-1?n:null):"ddd"===e?(n=Xo.call(this._shortWeekdaysParse,r),n!==-1?n:null):(n=Xo.call(this._minWeekdaysParse,r),n!==-1?n:null):"dddd"===e?(n=Xo.call(this._weekdaysParse,r))!==-1?n:(n=Xo.call(this._shortWeekdaysParse,r))!==-1?n:(n=Xo.call(this._minWeekdaysParse,r),n!==-1?n:null):"ddd"===e?(n=Xo.call(this._shortWeekdaysParse,r))!==-1?n:(n=Xo.call(this._weekdaysParse,r))!==-1?n:(n=Xo.call(this._minWeekdaysParse,r),n!==-1?n:null):(n=Xo.call(this._minWeekdaysParse,r))!==-1?n:(n=Xo.call(this._weekdaysParse,r))!==-1?n:(n=Xo.call(this._shortWeekdaysParse,r),n!==-1?n:null)}function zt(t,e,i){var o,n,s;if(this._weekdaysParseExact)return Rt.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;o<7;o++){if(n=l([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function At(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Tt(t,this.localeData()),this.add(t-e,"d")):e}function Lt(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Bt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Et(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function Ft(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Wt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=rn),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function jt(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Wt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=an),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Ht(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Wt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=hn),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Wt(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],h=[],d=[];for(e=0;e<7;e++)i=l([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),h.push(s),d.push(o),d.push(n),d.push(s);for(r.sort(t),a.sort(t),h.sort(t),d.sort(t),e=0;e<7;e++)a[e]=tt(a[e]),h[e]=tt(h[e]),d[e]=tt(d[e]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Yt(){return this.hours()%12||12}function Gt(){return this.hours()||24}function Vt(t,e){U(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Ut(t,e){return e._meridiemParse}function qt(t){return"p"===(t+"").toLowerCase().charAt(0)}function Xt(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Zt(t){return t?t.toLowerCase().replace("_","-"):t}function Kt(t){for(var e,i,o,n,s=0;s0;){if(o=Qt(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&w(n,i,!0)>=e-1)break;e--}s++}return null}function Qt(e){var i=null;if(!cn[e]&&void 0!==t&&t&&t.exports)try{i=dn._abbr,function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Jt(i)}catch(t){}return cn[e]}function Jt(t,e){var i;return t&&(i=m(e)?ee(t):$t(t,e))&&(dn=i),dn._abbr}function $t(t,e){if(null!==e){var i=un;if(e.abbr=t,null!=cn[t])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=cn[t]._config;else if(null!=e.parentLocale){if(null==cn[e.parentLocale])return pn[e.parentLocale]||(pn[e.parentLocale]=[]),pn[e.parentLocale].push({name:t,config:e}),null;i=cn[e.parentLocale]._config}return cn[t]=new C(M(i,e)),pn[t]&&pn[t].forEach(function(t){$t(t.name,t.config)}),Jt(t),cn[t]}return delete cn[t],null}function te(t,e){if(null!=e){var i,o=un;null!=cn[t]&&(o=cn[t]._config),e=M(o,e),i=new C(e),i.parentLocale=cn[t],cn[t]=i,Jt(t)}else null!=cn[t]&&(null!=cn[t].parentLocale?cn[t]=cn[t].parentLocale:null!=cn[t]&&delete cn[t]);return cn[t]}function ee(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return dn;if(!i(t)){if(e=Qt(t))return e;t=[t]}return Kt(t)}function ie(){return ko(cn)}function oe(t){var e,i=t._a;return i&&c(t).overflow===-2&&(e=i[jo]<0||i[jo]>11?jo:i[Ho]<1||i[Ho]>nt(i[Fo],i[jo])?Ho:i[Wo]<0||i[Wo]>24||24===i[Wo]&&(0!==i[Yo]||0!==i[Go]||0!==i[Vo])?Wo:i[Yo]<0||i[Yo]>59?Yo:i[Go]<0||i[Go]>59?Go:i[Vo]<0||i[Vo]>999?Vo:-1,c(t)._overflowDayOfYear&&(eHo)&&(e=Ho),c(t)._overflowWeeks&&e===-1&&(e=Uo),c(t)._overflowWeekday&&e===-1&&(e=qo),c(t).overflow=e),t}function ne(t){var e,i,o,n,s,r,a=t._i,h=fn.exec(a)||mn.exec(a);if(h){for(c(t).iso=!0,e=0,i=gn.length;emt(n)&&(c(t)._overflowDayOfYear=!0),i=bt(n,0,t._dayOfYear),t._a[jo]=i.getUTCMonth(),t._a[Ho]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Wo]&&0===t._a[Yo]&&0===t._a[Go]&&0===t._a[Vo]&&(t._nextDay=!0,t._a[Wo]=0),t._d=(t._useUTC?bt:yt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Wo]=24)}}function de(t){var e,i,o,n,s,r,a,h;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)s=1,r=4,i=re(e.GG,t._a[Fo],xt(ye(),1,4).year),o=re(e.W,1),((n=re(e.E,1))<1||n>7)&&(h=!0);else{s=t._locale._week.dow,r=t._locale._week.doy;var d=xt(ye(),s,r);i=re(e.gg,t._a[Fo],d.year),o=re(e.w,d.week),null!=e.d?((n=e.d)<0||n>6)&&(h=!0):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(h=!0)):n=s}o<1||o>kt(i,s,r)?c(t)._overflowWeeks=!0:null!=h?c(t)._overflowWeekday=!0:(a=wt(i,o,n,s,r),t._a[Fo]=a.year,t._dayOfYear=a.dayOfYear)}function le(t){if(t._f===e.ISO_8601)return void ne(t);t._a=[],c(t).empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=K(t._f,t._locale).match(To)||[],i=0;i0&&c(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Io[s]?(o?c(t).empty=!1:c(t).unusedTokens.push(s),ot(s,o,t)):t._strict&&!o&&c(t).unusedTokens.push(s);c(t).charsLeftOver=h-d,a.length>0&&c(t).unusedInput.push(a),t._a[Wo]<=12&&c(t).bigHour===!0&&t._a[Wo]>0&&(c(t).bigHour=void 0),c(t).parsedDateParts=t._a.slice(0),c(t).meridiem=t._meridiem,t._a[Wo]=ue(t._locale,t._a[Wo],t._meridiem),he(t),oe(t)}function ue(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&e<12&&(e+=12),o||12!==e||(e=0),e):e}function ce(t){var e,i,o,n,s;if(0===t._f.length)return c(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ae(){if(!m(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),t=me(t),t._a){var e=t._isUTC?l(t._a):ye(t._a);this._isDSTShifted=this.isValid()&&w(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Le(){return!!this.isValid()&&!this._isUTC}function Be(){return!!this.isValid()&&this._isUTC}function Fe(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function je(t,e){var i,o,n,r=t,a=null;return ke(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:s(t)?(r={},e?r[e]=t:r.milliseconds=t):(a=On.exec(t))?(i="-"===a[1]?-1:1,r={y:0,d:_(a[Ho])*i,h:_(a[Wo])*i,m:_(a[Yo])*i,s:_(a[Go])*i,ms:_(Oe(1e3*a[Vo]))*i}):(a=Sn.exec(t))?(i="-"===a[1]?-1:1,r={y:He(a[2],i),M:He(a[3],i),w:He(a[4],i),d:He(a[5],i),h:He(a[6],i),m:He(a[7],i),s:He(a[8],i)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=Ye(ye(r.from),ye(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),o=new xe(r),ke(t)&&h(t,"_locale")&&(o._locale=t._locale),o}function He(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function We(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Ye(t,e){var i;return t.isValid()&&e.isValid()?(e=Me(e,t),t.isBefore(e)?i=We(t,e):(i=We(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function Ge(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(O(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=je(i,o),Ve(this,n,t),this}}function Ve(t,i,o,n){var s=i._milliseconds,r=Oe(i._days),a=Oe(i._months);t.isValid()&&(n=null==n||n,s&&t._d.setTime(t._d.valueOf()+s*o),r&&W(t,"Date",H(t,"Date")+r*o),a&&dt(t,H(t,"Month")+a*o),n&&e.updateOffset(t,r||a))}function Ue(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"}function qe(t,i){var o=t||ye(),n=Me(o,this).startOf("day"),s=e.calendarFormat(this,n)||"sameElse",r=i&&(S(i[s])?i[s].call(this,o):i[s]);return this.format(r||this.localeData().calendar(s,this,ye(o)))}function Xe(){return new g(this)}function Ze(t,e){var i=y(t)?t:ye(t);return!(!this.isValid()||!i.isValid())&&(e=A(m(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()s&&(e=s),Pi.call(this,t,e,i,o,n))}function Pi(t,e,i,o,n){var s=wt(t,e,i,o,n),r=bt(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Ii(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Ni(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function Ri(t,e){e[Vo]=_(1e3*("0."+t))}function zi(){return this._isUTC?"UTC":""}function Ai(){return this._isUTC?"Coordinated Universal Time":""}function Li(t){return ye(1e3*t)}function Bi(){return ye.apply(null,arguments).parseZone()}function Fi(t){return t}function ji(t,e,i,o){var n=ee(),s=l().set(o,e);return n[i](s,t)}function Hi(t,e,i){if(s(t)&&(e=t,t=void 0),t=t||"",null!=e)return ji(t,e,i,"month");var o,n=[];for(o=0;o<12;o++)n[o]=ji(t,o,i,"month");return n}function Wi(t,e,i,o){"boolean"==typeof t?(s(e)&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,s(e)&&(i=e,e=void 0),e=e||"");var n=ee(),r=t?n._week.dow:0;if(null!=i)return ji(e,(i+r)%7,o,"day");var a,h=[];for(a=0;a<7;a++)h[a]=ji(e,(a+r)%7,o,"day");return h}function Yi(t,e){return Hi(t,e,"months")}function Gi(t,e){return Hi(t,e,"monthsShort")}function Vi(t,e,i){return Wi(t,e,i,"weekdays")}function Ui(t,e,i){return Wi(t,e,i,"weekdaysShort")}function qi(t,e,i){return Wi(t,e,i,"weekdaysMin")}function Xi(){var t=this._data;return this._milliseconds=An(this._milliseconds),this._days=An(this._days),this._months=An(this._months),t.milliseconds=An(t.milliseconds),t.seconds=An(t.seconds),t.minutes=An(t.minutes),t.hours=An(t.hours),t.months=An(t.months),t.years=An(t.years),this}function Zi(t,e,i,o){var n=je(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function Ki(t,e){return Zi(this,t,e,1)}function Qi(t,e){return Zi(this,t,e,-1)}function Ji(t){return t<0?Math.floor(t):Math.ceil(t)}function $i(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data;return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*Ji(eo(a)+r),r=0,a=0),h.milliseconds=s%1e3,t=b(s/1e3),h.seconds=t%60,e=b(t/60),h.minutes=e%60,i=b(e/60),h.hours=i%24,r+=b(i/24),n=b(to(r)),a+=n,r-=Ji(eo(n)),o=b(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function to(t){return 4800*t/146097}function eo(t){return 146097*t/4800}function io(t){var e,i,o=this._milliseconds;if("month"===(t=A(t))||"year"===t)return e=this._days+o/864e5,i=this._months+to(e),"month"===t?i:i/12;switch(e=this._days+Math.round(eo(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function oo(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*_(this._months/12)}function no(t){return function(){ +return this.as(t)}}function so(t){return t=A(t),this[t+"s"]()}function ro(t){return function(){return this._data[t]}}function ao(){return b(this.days()/7)}function ho(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function lo(t,e,i){var o=je(t).abs(),n=Jn(o.as("s")),s=Jn(o.as("m")),r=Jn(o.as("h")),a=Jn(o.as("d")),h=Jn(o.as("M")),d=Jn(o.as("y")),l=n<$n.s&&["s",n]||s<=1&&["m"]||s<$n.m&&["mm",s]||r<=1&&["h"]||r<$n.h&&["hh",r]||a<=1&&["d"]||a<$n.d&&["dd",a]||h<=1&&["M"]||h<$n.M&&["MM",h]||d<=1&&["y"]||["yy",d];return l[2]=e,l[3]=+t>0,l[4]=i,ho.apply(null,l)}function uo(t){return void 0===t?Jn:"function"==typeof t&&(Jn=t,!0)}function co(t,e){return void 0!==$n[t]&&(void 0===e?$n[t]:($n[t]=e,!0))}function po(t){var e=this.localeData(),i=lo(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function fo(){var t,e,i,o=ts(this._milliseconds)/1e3,n=ts(this._days),s=ts(this._months);t=b(o/60),e=b(t/60),o%=60,t%=60,i=b(s/12),s%=12;var r=i,a=s,h=n,d=e,l=t,u=o,c=this.asSeconds();return c?(c<0?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(d||l||u?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(u?u+"S":""):"P0D"}var mo,vo;vo=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;o68?1900:2e3)};var tn=j("FullYear",!0);U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),z("week","w"),z("isoWeek","W"),B("week",5),B("isoWeek",5),Q("w",/\d\d?/),Q("ww",/\d\d?/,/\d\d/),Q("W",/\d\d?/),Q("WW",/\d\d?/,/\d\d/),it(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=_(t)});var en={dow:0,doy:6};U("d",0,"do","day"),U("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),U("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),U("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),z("day","d"),z("weekday","e"),z("isoWeekday","E"),B("day",11),B("weekday",11),B("isoWeekday",11),Q("d",/\d\d?/),Q("e",/\d\d?/),Q("E",/\d\d?/),Q("dd",function(t,e){return e.weekdaysMinRegex(t)}),Q("ddd",function(t,e){return e.weekdaysShortRegex(t)}),Q("dddd",function(t,e){return e.weekdaysRegex(t)}),it(["dd","ddd","dddd"],function(t,e,i,o){var n=i._locale.weekdaysParse(t,o,i._strict);null!=n?e.d=n:c(i).invalidWeekday=t}),it(["d","e","E"],function(t,e,i,o){e[o]=_(t)});var on="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),nn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),sn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),rn=Ao,an=Ao,hn=Ao;U("H",["HH",2],0,"hour"),U("h",["hh",2],0,Yt),U("k",["kk",2],0,Gt),U("hmm",0,0,function(){return""+Yt.apply(this)+V(this.minutes(),2)}),U("hmmss",0,0,function(){return""+Yt.apply(this)+V(this.minutes(),2)+V(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+V(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+V(this.minutes(),2)+V(this.seconds(),2)}),Vt("a",!0),Vt("A",!1),z("hour","h"),B("hour",13),Q("a",Ut),Q("A",Ut),Q("H",/\d\d?/),Q("h",/\d\d?/),Q("HH",/\d\d?/,/\d\d/),Q("hh",/\d\d?/,/\d\d/),Q("hmm",/\d\d\d\d?/),Q("hmmss",/\d\d\d\d\d\d?/),Q("Hmm",/\d\d\d\d?/),Q("Hmmss",/\d\d\d\d\d\d?/),et(["H","HH"],Wo),et(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),et(["h","hh"],function(t,e,i){e[Wo]=_(t),c(i).bigHour=!0}),et("hmm",function(t,e,i){var o=t.length-2;e[Wo]=_(t.substr(0,o)),e[Yo]=_(t.substr(o)),c(i).bigHour=!0}),et("hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[Wo]=_(t.substr(0,o)),e[Yo]=_(t.substr(o,2)),e[Go]=_(t.substr(n)),c(i).bigHour=!0}),et("Hmm",function(t,e,i){var o=t.length-2;e[Wo]=_(t.substr(0,o)),e[Yo]=_(t.substr(o))}),et("Hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[Wo]=_(t.substr(0,o)),e[Yo]=_(t.substr(o,2)),e[Go]=_(t.substr(n))});var dn,ln=j("Hours",!0),un={calendar:Oo,longDateFormat:So,invalidDate:"Invalid date",ordinal:"%d",ordinalParse:/\d{1,2}/,relativeTime:Do,months:Ko,monthsShort:Qo,week:en,weekdays:on,weekdaysMin:sn,weekdaysShort:nn,meridiemParse:/[ap]\.?m?\.?/i},cn={},pn={},fn=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,vn=/Z|[+-]\d\d(?::?\d\d)?/,gn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],yn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],bn=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=k("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),e.ISO_8601=function(){};var _n=k("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=ye.apply(null,arguments);return this.isValid()&&t.isValid()?tthis?this:t:f()}),xn=function(){return Date.now?Date.now():+new Date};Se("Z",":"),Se("ZZ",""),Q("Z",zo),Q("ZZ",zo),et(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=De(zo,t)});var kn=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var On=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Sn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;je.fn=xe.prototype;var Dn=Ge(1,"add"),Mn=Ge(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Cn=k("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Si("gggg","weekYear"),Si("ggggg","weekYear"),Si("GGGG","isoWeekYear"),Si("GGGGG","isoWeekYear"),z("weekYear","gg"),z("isoWeekYear","GG"),B("weekYear",1),B("isoWeekYear",1),Q("G",/[+-]?\d+/),Q("g",/[+-]?\d+/),Q("GG",/\d\d?/,/\d\d/),Q("gg",/\d\d?/,/\d\d/),Q("GGGG",/\d{1,4}/,/\d{4}/),Q("gggg",/\d{1,4}/,/\d{4}/),Q("GGGGG",/[+-]?\d{1,6}/,No),Q("ggggg",/[+-]?\d{1,6}/,No),it(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=_(t)}),it(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),U("Q",0,"Qo","quarter"),z("quarter","Q"),B("quarter",7),Q("Q",/\d/),et("Q",function(t,e){e[jo]=3*(_(t)-1)}),U("D",["DD",2],"Do","date"),z("date","D"),B("date",9),Q("D",/\d\d?/),Q("DD",/\d\d?/,/\d\d/),Q("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),et(["D","DD"],Ho),et("Do",function(t,e){e[Ho]=_(t.match(/\d\d?/)[0],10)});var Tn=j("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),z("dayOfYear","DDD"),B("dayOfYear",4),Q("DDD",/\d{1,3}/),Q("DDDD",/\d{3}/),et(["DDD","DDDD"],function(t,e,i){i._dayOfYear=_(t)}),U("m",["mm",2],0,"minute"),z("minute","m"),B("minute",14),Q("m",/\d\d?/),Q("mm",/\d\d?/,/\d\d/),et(["m","mm"],Yo);var En=j("Minutes",!1);U("s",["ss",2],0,"second"),z("second","s"),B("second",15),Q("s",/\d\d?/),Q("ss",/\d\d?/,/\d\d/),et(["s","ss"],Go);var Pn=j("Seconds",!1);U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),z("millisecond","ms"),B("millisecond",16),Q("S",/\d{1,3}/,/\d/),Q("SS",/\d{1,3}/,/\d\d/),Q("SSS",/\d{1,3}/,/\d{3}/);var In;for(In="SSSS";In.length<=9;In+="S")Q(In,/\d+/);for(In="S";In.length<=9;In+="S")et(In,Ri);var Nn=j("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var Rn=g.prototype;Rn.add=Dn,Rn.calendar=qe,Rn.clone=Xe,Rn.diff=ei,Rn.endOf=fi,Rn.format=ri,Rn.from=ai,Rn.fromNow=hi,Rn.to=di,Rn.toNow=li,Rn.get=Y,Rn.invalidAt=ki,Rn.isAfter=Ze,Rn.isBefore=Ke,Rn.isBetween=Qe,Rn.isSame=Je,Rn.isSameOrAfter=$e,Rn.isSameOrBefore=ti,Rn.isValid=wi,Rn.lang=Cn,Rn.locale=ui,Rn.localeData=ci,Rn.max=wn,Rn.min=_n,Rn.parsingFlags=xi,Rn.set=G,Rn.startOf=pi,Rn.subtract=Mn,Rn.toArray=yi,Rn.toObject=bi,Rn.toDate=gi,Rn.toISOString=ni,Rn.inspect=si,Rn.toJSON=_i,Rn.toString=oi,Rn.unix=vi,Rn.valueOf=mi,Rn.creationData=Oi,Rn.year=tn,Rn.isLeapYear=gt,Rn.weekYear=Di,Rn.isoWeekYear=Mi,Rn.quarter=Rn.quarters=Ii,Rn.month=lt,Rn.daysInMonth=ut,Rn.week=Rn.weeks=Mt,Rn.isoWeek=Rn.isoWeeks=Ct,Rn.weeksInYear=Ti,Rn.isoWeeksInYear=Ci,Rn.date=Tn,Rn.day=Rn.days=At,Rn.weekday=Lt,Rn.isoWeekday=Bt,Rn.dayOfYear=Ni,Rn.hour=Rn.hours=ln,Rn.minute=Rn.minutes=En,Rn.second=Rn.seconds=Pn,Rn.millisecond=Rn.milliseconds=Nn,Rn.utcOffset=Te,Rn.utc=Pe,Rn.local=Ie,Rn.parseZone=Ne,Rn.hasAlignedHourOffset=Re,Rn.isDST=ze,Rn.isLocal=Le,Rn.isUtcOffset=Be,Rn.isUtc=Fe,Rn.isUTC=Fe,Rn.zoneAbbr=zi,Rn.zoneName=Ai,Rn.dates=k("dates accessor is deprecated. Use date instead.",Tn),Rn.months=k("months accessor is deprecated. Use month instead",lt),Rn.years=k("years accessor is deprecated. Use year instead",tn),Rn.zone=k("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Ee),Rn.isDSTShifted=k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ae);var zn=C.prototype;zn.calendar=T,zn.longDateFormat=E,zn.invalidDate=P,zn.ordinal=I,zn.preparse=Fi,zn.postformat=Fi,zn.relativeTime=N,zn.pastFuture=R,zn.set=D,zn.months=st,zn.monthsShort=rt,zn.monthsParse=ht,zn.monthsRegex=pt,zn.monthsShortRegex=ct,zn.week=Ot,zn.firstDayOfYear=Dt,zn.firstDayOfWeek=St,zn.weekdays=Pt,zn.weekdaysMin=Nt,zn.weekdaysShort=It,zn.weekdaysParse=zt,zn.weekdaysRegex=Ft,zn.weekdaysShortRegex=jt,zn.weekdaysMinRegex=Ht,zn.isPM=qt,zn.meridiem=Xt,Jt("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===_(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),e.lang=k("moment.lang is deprecated. Use moment.locale instead.",Jt),e.langData=k("moment.langData is deprecated. Use moment.localeData instead.",ee);var An=Math.abs,Ln=no("ms"),Bn=no("s"),Fn=no("m"),jn=no("h"),Hn=no("d"),Wn=no("w"),Yn=no("M"),Gn=no("y"),Vn=ro("milliseconds"),Un=ro("seconds"),qn=ro("minutes"),Xn=ro("hours"),Zn=ro("days"),Kn=ro("months"),Qn=ro("years"),Jn=Math.round,$n={s:45,m:45,h:22,d:26,M:11},ts=Math.abs,es=xe.prototype;return es.abs=Xi,es.add=Ki,es.subtract=Qi,es.as=io,es.asMilliseconds=Ln,es.asSeconds=Bn,es.asMinutes=Fn,es.asHours=jn,es.asDays=Hn,es.asWeeks=Wn,es.asMonths=Yn,es.asYears=Gn,es.valueOf=oo,es._bubble=$i,es.get=so,es.milliseconds=Vn,es.seconds=Un,es.minutes=qn,es.hours=Xn,es.days=Zn,es.weeks=ao,es.months=Kn,es.years=Qn,es.humanize=po,es.toISOString=fo,es.toString=fo,es.toJSON=fo,es.locale=ui,es.localeData=ci,es.toIsoString=k("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",fo),es.lang=Cn,U("X",0,0,"unix"),U("x",0,0,"valueOf"),Q("x",/[+-]?\d+/),Q("X",/[+-]?\d+(\.\d{1,3})?/),et("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),et("x",function(t,e,i){i._d=new Date(_(t))}),e.version="2.17.1",function(t){mo=t}(ye),e.fn=Rn,e.min=_e,e.max=we,e.now=xn,e.utc=l,e.unix=Li,e.months=Yi,e.isDate=r,e.locale=Jt,e.invalid=f,e.duration=je,e.isMoment=y,e.weekdays=Vi,e.parseZone=Bi,e.localeData=ee,e.isDuration=ke,e.monthsShort=Gi,e.weekdaysMin=qi,e.defineLocale=$t,e.updateLocale=te,e.locales=ie,e.weekdaysShort=Ui,e.normalizeUnits=A,e.relativeTimeRounding=uo,e.relativeTimeThreshold=co,e.calendarFormat=Ue,e.prototype=Rn,e})}).call(e,i(84)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=85},function(t,e){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){n<16&&(e[o+n++]=u[t])});n<16;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:g+1,d=a-v+(h-g)/1e4;if(d<0&&void 0===t.clockseq&&(r=r+1&16383),(d<0||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,g=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||f,p=0;p<6;p++)s[n+p]=c[p];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;a<16;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:void 0!==e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;e<16;e++)0==(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},c=0;c<256;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var p=r(),f=[1|p[0],p[1],p[2],p[3],p[4],p[5]],m=16383&(p[6]<<8|p[7]),v=0,g=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e,i){e.util=i(1),e.DOMutil=i(88),e.DataSet=i(89),e.DataView=i(93),e.Queue=i(92),e.Graph3d=i(94),e.graph3d={Camera:i(102),Filter:i(107),Point2d:i(101),Point3d:i(100),Slider:i(108),StepNumber:i(109)},e.moment=i(82),e.Hammer=i(112),e.keycharm=i(115)},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){n<0&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=(0,l.default)(this._options.type),o=0,n=i.length;on?1:or)&&(s=h,r=d)}return s},n.prototype.min=function(t){var e,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(e=0,i=n.length;ethis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function o(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var n=i(58),s=function(t){return t&&t.__esModule?t:{default:t}}(n),r=i(1),a=i(89);o.prototype.setData=function(t){var e,i,o,n,s;if(this._data){for(this._data.off&&this._data.off("*",this.listener),e=this._data.getIds({filter:this._options&&this._options.filter}),s=[],o=0,n=e.length;os)&&(o=s)}return o},o.prototype.getColumnRange=function(t,e){for(var i=new g,o=0;o0&&(h[n-1].pointNext=r),h.push(r);return h},o.prototype.create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);this.frame=document.createElement("div"),this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas);var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t),this.frame.filter=document.createElement("div"),this.frame.filter.style.position="absolute",this.frame.filter.style.bottom="0px",this.frame.filter.style.left="0px",this.frame.filter.style.width="100%",this.frame.appendChild(this.frame.filter);var e=this,i=function(t){e._onMouseDown(t)},o=function(t){e._onTouchStart(t)},n=function(t){e._onWheel(t)},s=function(t){e._onTooltip(t)},r=function(t){e._onClick(t)};u.addEventListener(this.frame.canvas,"mousedown",i),u.addEventListener(this.frame.canvas,"touchstart",o),u.addEventListener(this.frame.canvas,"mousewheel",n),u.addEventListener(this.frame.canvas,"mousemove",s),u.addEventListener(this.frame.canvas,"click",r),this.containerElement.appendChild(this.frame)},o.prototype._setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this._resizeCanvas()},o.prototype._resizeCanvas=function(){this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.frame.filter.style.width=this.frame.canvas.clientWidth-20+"px"},o.prototype.animationStart=function(){if(!this.frame.filter||!this.frame.filter.slider)throw new Error("No animation available");this.frame.filter.slider.play()},o.prototype.animationStop=function(){this.frame.filter&&this.frame.filter.slider&&this.frame.filter.slider.stop()},o.prototype._resizeCenter=function(){"%"===this.xCenter.charAt(this.xCenter.length-1)?this.currentXCenter=parseFloat(this.xCenter)/100*this.frame.canvas.clientWidth:this.currentXCenter=parseFloat(this.xCenter),"%"===this.yCenter.charAt(this.yCenter.length-1)?this.currentYCenter=parseFloat(this.yCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight):this.currentYCenter=parseFloat(this.yCenter)},o.prototype.getCameraPosition=function(){var t=this.camera.getArmRotation();return t.distance=this.camera.getArmLength(),t},o.prototype._readData=function(t){this._dataInitialize(t,this.style),this.dataFilter?this.dataPoints=this.dataFilter._getDataPoints():this.dataPoints=this._getDataPoints(this.dataTable),this._redrawFilter()},o.prototype.setData=function(t){this._readData(t),this.redraw(),this.animationAutoStart&&this.dataFilter&&this.animationStart()},o.prototype.setOptions=function(t){this.animationStop(),y.setOptions(t,this),this.setPointDrawingMethod(),this._setSize(this.width,this.height),this.dataTable&&this.setData(this.dataTable),this.animationAutoStart&&this.dataFilter&&this.animationStart()},o.prototype.setPointDrawingMethod=function(){var t=void 0;switch(this.style){case o.STYLE.BAR:t=o.prototype._redrawBarGraphPoint;break;case o.STYLE.BARCOLOR:t=o.prototype._redrawBarColorGraphPoint;break;case o.STYLE.BARSIZE:t=o.prototype._redrawBarSizeGraphPoint;break;case o.STYLE.DOT:t=o.prototype._redrawDotGraphPoint;break;case o.STYLE.DOTLINE:t=o.prototype._redrawDotLineGraphPoint;break;case o.STYLE.DOTCOLOR:t=o.prototype._redrawDotColorGraphPoint;break;case o.STYLE.DOTSIZE:t=o.prototype._redrawDotSizeGraphPoint;break;case o.STYLE.SURFACE:t=o.prototype._redrawSurfaceGraphPoint;break;case o.STYLE.GRID:t=o.prototype._redrawGridGraphPoint;break;case o.STYLE.LINE:t=o.prototype._redrawLineGraphPoint;break;default:throw new Error("Can not determine point drawing method for graph style '"+this.style+"'")}this._pointDrawingMethod=t},o.prototype.redraw=function(){if(void 0===this.dataPoints)throw new Error("Graph data not initialized");this._resizeCanvas(),this._resizeCenter(),this._redrawSlider(),this._redrawClear(),this._redrawAxis(),this._redrawDataGraph(),this._redrawInfo(),this._redrawLegend()},o.prototype._getContext=function(){var t=this.frame.canvas,e=t.getContext("2d");return e.lineJoin="round",e.lineCap="round",e},o.prototype._redrawClear=function(){var t=this.frame.canvas;t.getContext("2d").clearRect(0,0,t.width,t.height)},o.prototype._dotSize=function(){return this.frame.clientWidth*this.dotSizeRatio},o.prototype._getLegendWidth=function(){var t;if(this.style===o.STYLE.DOTSIZE){var e=this._dotSize();t=e/2+2*e}else t=this.style===o.STYLE.BARSIZE?this.xBarWidth:20;return t},o.prototype._redrawLegend=function(){if(this.showLegend===!0&&this.style!==o.STYLE.LINE&&this.style!==o.STYLE.BARSIZE){var t=this.style===o.STYLE.BARSIZE||this.style===o.STYLE.DOTSIZE,e=this.style===o.STYLE.DOTSIZE||this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.BARCOLOR,i=Math.max(.25*this.frame.clientHeight,100),n=this.margin,s=this._getLegendWidth(),r=this.frame.clientWidth-this.margin,a=r-s,h=n+i,d=this._getContext();if(d.lineWidth=1,d.font="14px arial",t===!1){var l,u=i;for(l=0;l0?(t.textAlign="center",t.textBaseline="top",s.y+=n):Math.sin(2*o)<0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(i,s.x,s.y)},o.prototype.drawAxisLabelY=function(t,e,i,o,n){void 0===n&&(n=0);var s=this._convert3Dto2D(e);Math.cos(2*o)<0?(t.textAlign="center",t.textBaseline="top",s.y+=n):Math.sin(2*o)>0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(i,s.x,s.y)},o.prototype.drawAxisLabelZ=function(t,e,i,o){void 0===o&&(o=0);var n=this._convert3Dto2D(e);t.textAlign="right",t.textBaseline="middle",t.fillStyle=this.axisColor,t.fillText(i,n.x-o,n.y)},o.prototype._line3d=function(t,e,i,o){var n=this._convert3Dto2D(e),s=this._convert3Dto2D(i);this._line(t,n,s,o)},o.prototype._redrawAxis=function(){var t,e,i,o,n,s,r,a,h,d,l,u=this._getContext();u.font=24/this.camera.getArmLength()+"px arial";var f=.025/this.scale.x,m=.025/this.scale.y,g=5/this.camera.getArmLength(),y=this.camera.getArmRotation().horizontal,b=new p(Math.cos(y),Math.sin(y)),_=this.xRange,w=this.yRange,x=this.zRange;for(u.lineWidth=1,o=void 0===this.defaultXStep,i=new v(_.min,_.max,this.xStep,o),i.start(!0);!i.end();){var k=i.getCurrent();if(this.showGrid?(t=new c(k,w.min,x.min),e=new c(k,w.max,x.min),this._line3d(u,t,e,this.gridColor)):this.showXAxis&&(t=new c(k,w.min,x.min),e=new c(k,w.min+f,x.min),this._line3d(u,t,e,this.axisColor),t=new c(k,w.max,x.min),e=new c(k,w.max-f,x.min),this._line3d(u,t,e,this.axisColor)),this.showXAxis){r=b.x>0?w.min:w.max;var O=new c(k,r,x.min),S=" "+this.xValueLabel(k)+" ";this.drawAxisLabelX(u,O,S,y,g)}i.next()}for(u.lineWidth=1,o=void 0===this.defaultYStep,i=new v(w.min,w.max,this.yStep,o),i.start(!0);!i.end();){var D=i.getCurrent();if(this.showGrid?(t=new c(_.min,D,x.min),e=new c(_.max,D,x.min),this._line3d(u,t,e,this.gridColor)):this.showYAxis&&(t=new c(_.min,D,x.min),e=new c(_.min+m,D,x.min),this._line3d(u,t,e,this.axisColor),t=new c(_.max,D,x.min),e=new c(_.max-m,D,x.min),this._line3d(u,t,e,this.axisColor)),this.showYAxis){s=b.y>0?_.min:_.max,O=new c(s,D,x.min);var S=" "+this.yValueLabel(D)+" ";this.drawAxisLabelY(u,O,S,y,g)}i.next()}if(this.showZAxis){for(u.lineWidth=1,o=void 0===this.defaultZStep,i=new v(x.min,x.max,this.zStep,o),i.start(!0),s=b.x>0?_.min:_.max,r=b.y<0?w.min:w.max;!i.end();){var M=i.getCurrent(),C=new c(s,r,M),T=this._convert3Dto2D(C);e=new p(T.x-g,T.y),this._line(u,T,e,this.axisColor);var S=this.zValueLabel(M)+" ";this.drawAxisLabelZ(u,C,S,5),i.next()}u.lineWidth=1,t=new c(s,r,x.min),e=new c(s,r,x.max),this._line3d(u,t,e,this.axisColor)}if(this.showXAxis){var E,P;u.lineWidth=1,E=new c(_.min,w.min,x.min),P=new c(_.max,w.min,x.min),this._line3d(u,E,P,this.axisColor),E=new c(_.min,w.max,x.min),P=new c(_.max,w.max,x.min),this._line3d(u,E,P,this.axisColor)}this.showYAxis&&(u.lineWidth=1,t=new c(_.min,w.min,x.min),e=new c(_.min,w.max,x.min),this._line3d(u,t,e,this.axisColor),t=new c(_.max,w.min,x.min),e=new c(_.max,w.max,x.min),this._line3d(u,t,e,this.axisColor));var I=this.xLabel;I.length>0&&this.showXAxis&&(l=.1/this.scale.y,s=(_.max+3*_.min)/4,r=b.x>0?w.min-l:w.max+l,n=new c(s,r,x.min),this.drawAxisLabelX(u,n,I,y));var N=this.yLabel;N.length>0&&this.showYAxis&&(d=.1/this.scale.x,s=b.y>0?_.min-d:_.max+d,r=(w.max+3*w.min)/4,n=new c(s,r,x.min),this.drawAxisLabelY(u,n,N,y));var R=this.zLabel;R.length>0&&this.showZAxis&&(h=30,s=b.x>0?_.min:_.max,r=b.y<0?w.min:w.max,a=(x.max+3*x.min)/4,n=new c(s,r,a),this.drawAxisLabelZ(u,n,R,h))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._getStrokeWidth=function(t){return void 0!==t?this.showPerspective?1/-t.trans.z*this.dataColor.strokeWidth:-(this.eye.z/this.camera.getArmLength())*this.dataColor.strokeWidth:this.dataColor.strokeWidth},o.prototype._redrawBar=function(t,e,i,o,n,s){var r,a,h=this,d=e.point,l=this.zRange.min,u=[{point:new c(d.x-i,d.y-o,d.z)},{point:new c(d.x+i,d.y-o,d.z)},{point:new c(d.x+i,d.y+o,d.z)},{point:new c(d.x-i,d.y+o,d.z)}],p=[{point:new c(d.x-i,d.y-o,l)},{point:new c(d.x+i,d.y-o,l)},{point:new c(d.x+i,d.y+o,l)},{point:new c(d.x-i,d.y+o,l)}];u.forEach(function(t){t.screen=h._convert3Dto2D(t.point)}),p.forEach(function(t){t.screen=h._convert3Dto2D(t.point)});var f=[{corners:u,center:c.avg(p[0].point,p[2].point)},{corners:[u[0],u[1],p[1],p[0]],center:c.avg(p[1].point,p[0].point)},{corners:[u[1],u[2],p[2],p[1]],center:c.avg(p[2].point,p[1].point)},{corners:[u[2],u[3],p[3],p[2]],center:c.avg(p[3].point,p[2].point)},{corners:[u[3],u[0],p[0],p[3]],center:c.avg(p[0].point,p[3].point)}];for(e.surfaces=f,r=0;r0}if(a){var p,f=(e.point.z+i.point.z+o.point.z+n.point.z)/4,m=240*(1-(f-this.zRange.min)*this.scale.z/this.verticalRatio);this.showShadow?(p=Math.min(1+l.x/u/2,1),s=this._hsv2rgb(m,1,p),r=s):(p=1,s=this._hsv2rgb(m,1,p),r=this.axisColor)}else s="gray",r=this.axisColor;t.lineWidth=this._getStrokeWidth(e);var v=[e,i,n,o];this._polygon(t,v,s,r)}},o.prototype._drawGridLine=function(t,e,i){if(void 0!==e&&void 0!==i){var o=(e.point.z+i.point.z)/2,n=240*(1-(o-this.zRange.min)*this.scale.z/this.verticalRatio);t.lineWidth=2*this._getStrokeWidth(e),t.strokeStyle=this._hsv2rgb(n,1,1),this._line(t,e.screen,i.screen)}},o.prototype._redrawGridGraphPoint=function(t,e){this._drawGridLine(t,e,e.pointRight),this._drawGridLine(t,e,e.pointTop)},o.prototype._redrawLineGraphPoint=function(t,e){void 0!==e.pointNext&&(t.lineWidth=this._getStrokeWidth(e),t.strokeStyle=this.dataColor.stroke,this._line(t,e.screen,e.pointNext.screen))},o.prototype._redrawDataGraph=function(){var t,e=this._getContext();if(!(void 0===this.dataPoints||this.dataPoints.length<=0))for(this._calcTranslations(this.dataPoints),t=0;t0?1:t<0?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=null,s=null,r=null,a=new p(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var h=n.surfaces;if(h)for(var d=h.length-1;d>=0;d--){var l=h[d],u=l.corners,c=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(a,c)||this._insideTriangle(a,f))return n}}else for(i=0;i"+this.xLabel+":"+t.point.x+""+this.yLabel+":"+t.point.y+""+this.zLabel+":"+t.point.z+"",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,h=o.offsetWidth,d=o.offsetHeight,l=t.screen.x-n/2;l=Math.min(Math.max(l,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=l+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-h/2+"px",o.style.top=t.screen.y-d/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},o.prototype.setCameraPosition=function(t){y.setCameraPosition(t,this),this.redraw()},o.prototype.setSize=function(t,e){this._setSize(t,e),this.redraw()},t.exports=o},function(t,e,i){t.exports={default:i(96),__esModule:!0}},function(t,e,i){i(97),t.exports=i(17).Object.assign},function(t,e,i){var o=i(15);o(o.S+o.F,"Object",{assign:i(98)})},function(t,e,i){var o=i(35),n=i(73),s=i(74),r=i(49),a=i(10),h=Object.assign;t.exports=!h||i(26)(function(){var t={},e={},i=Symbol(),o="abcdefghijklmnopqrst";return t[i]=7,o.split("").forEach(function(t){e[t]=t}),7!=h({},t)[i]||Object.keys(h({},e)).join("")!=o})?function(t,e){for(var i=r(t),h=arguments.length,d=1,l=n.f,u=s.f;h>d;)for(var c,p=a(arguments[d++]),f=l?o(p).concat(l(p)):o(p),m=f.length,v=0;m>v;)u.call(p,c=f[v++])&&(i[c]=p[c]);return i}:h},function(t,e){function i(t){if(t)return o(t)}function o(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this +;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;nr&&(t=o(t)*r),i(e)>r&&(e=o(e)*r),this.cameraOffset.x=t,this.cameraOffset.y=e,this.calculateCameraOrientation()},o.prototype.getOffset=function(t,e){return this.cameraOffset},o.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},o.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),void 0===t&&void 0===e||this.calculateCameraOrientation()},o.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},o.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.setOffset(this.cameraOffset.x,this.cameraOffset.y),this.calculateCameraOrientation())},o.prototype.getArmLength=function(){return this.armLength},o.prototype.getCameraLocation=function(){return this.cameraLocation},o.prototype.getCameraRotation=function(){return this.cameraRotation},o.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal;var t=this.cameraRotation.x,e=(this.cameraRotation.y,this.cameraRotation.z),i=this.cameraOffset.x,o=this.cameraOffset.y,n=Math.sin,s=Math.cos;this.cameraLocation.x=this.cameraLocation.x+i*s(e)+o*-n(e)*s(t),this.cameraLocation.y=this.cameraLocation.y+i*n(e)+o*s(e)*s(t),this.cameraLocation.z=this.cameraLocation.z+o*n(t)},t.exports=o},function(t,e,i){t.exports={default:i(104),__esModule:!0}},function(t,e,i){i(105),t.exports=i(17).Math.sign},function(t,e,i){var o=i(15);o(o.S,"Math",{sign:i(106)})},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,i){function o(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:t0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var n=i(93);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){if(void 0!==this.index)return this.values[this.index]},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(o),this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(tthis.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10;return t/(this.values.length-1)*e+3},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e){function i(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}i.prototype.isNumeric=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},i.prototype.setRange=function(t,e,i,o){if(!this.isNumeric(t))throw new Error("Parameter 'start' is not numeric; value: "+t);if(!this.isNumeric(e))throw new Error("Parameter 'end' is not numeric; value: "+t);if(!this.isNumeric(i))throw new Error("Parameter 'step' is not numeric; value: "+t);this._start=t?t:0,this._end=e?e:0,this.setStep(i,o)},i.prototype.setStep=function(t,e){void 0===t||t<=0||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=i.calculatePrettyStep(t):this._step=t)},i.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),s<=0&&(s=1),s},i.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},i.prototype.getStep=function(){return this._step},i.prototype.start=function(t){void 0===t&&(t=!1),this._current=this._start-this._start%this._step,t&&this.getCurrent()this._end},t.exports=i},function(t,e){function i(){this.min=void 0,this.max=void 0}i.prototype.adjust=function(t){void 0!==t&&((void 0===this.min||this.min>t)&&(this.min=t),(void 0===this.max||this.maxi)throw new Error("Passed expansion value makes range invalid");this.min=e,this.max=i}},i.prototype.range=function(){return this.max-this.min},i.prototype.center=function(){return(this.min+this.max)/2},t.exports=i},function(t,e,i){function o(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function n(t){return void 0===t||""===t||"string"!=typeof t?t:t.charAt(0).toUpperCase()+t.slice(1)}function s(t,e){return void 0===t||""===t?e:t+n(e)}function r(t,e,i,o){var n,r;for(var a in i)n=i[a],r=s(o,n),e[r]=t[n]}function a(t,e,i,o){var n,r;for(var a in i)n=i[a],void 0!==t[n]&&(r=s(o,n),e[r]=t[n])}function h(t,e){if(void 0===t||o(t))throw new Error("No DEFAULTS passed");if(void 0===e)throw new Error("No dst passed");M=t,r(t,e,S),r(t,e,D,"default"),l(t,e),e.margin=10,e.showGrayBottom=!1,e.showTooltip=!1,e.onclick_callback=null,e.eye=new x(0,0,-1)}function d(t,e){if(void 0!==t){if(void 0===e)throw new Error("No dst passed");if(void 0===M||o(M))throw new Error("DEFAULTS not set for module Settings");a(t,e,S),a(t,e,D,"default"),l(t,e)}}function l(t,e){void 0!==t.backgroundColor&&m(t.backgroundColor,e),v(t.dataColor,e),f(t.style,e),u(t.showLegend,e),g(t.cameraPosition,e),void 0!==t.tooltip&&(e.showTooltip=t.tooltip),void 0!=t.onclick&&(e.onclick_callback=t.onclick),void 0!==t.tooltipStyle&&_.selectiveDeepExtend(["tooltipStyle"],e,t)}function u(t,e){if(void 0===t){if(void 0===M.showLegend){var i=e.style===k.DOTCOLOR||e.style===k.DOTSIZE;e.showLegend=i}}else e.showLegend=t}function c(t){var e=O[t];return void 0===e?-1:e}function p(t){var e=!1;for(var i in k)if(k[i]===t){e=!0;break}return e}function f(t,e){if(void 0!==t){var i;if("string"==typeof t){if((i=c(t))===-1)throw new Error("Style '"+t+"' is invalid")}else{if(!p(t))throw new Error("Style '"+t+"' is invalid");i=t}e.style=i}}function m(t,e){var i="white",o="gray",n=1;if("string"==typeof t)i=t,o="none",n=0;else{if("object"!==(void 0===t?"undefined":(0,b.default)(t)))throw new Error("Unsupported type of backgroundColor");void 0!==t.fill&&(i=t.fill),void 0!==t.stroke&&(o=t.stroke),void 0!==t.strokeWidth&&(n=t.strokeWidth)}e.frame.style.backgroundColor=i,e.frame.style.borderColor=o,e.frame.style.borderWidth=n+"px",e.frame.style.borderStyle="solid"}function v(t,e){void 0!==t&&(void 0===e.dataColor&&(e.dataColor={}),"string"==typeof t?(e.dataColor.fill=t,e.dataColor.stroke=t):(t.fill&&(e.dataColor.fill=t.fill),t.stroke&&(e.dataColor.stroke=t.stroke),void 0!==t.strokeWidth&&(e.dataColor.strokeWidth=t.strokeWidth)))}function g(t,e){var i=t;void 0!==i&&(void 0===e.camera&&(e.camera=new w),e.camera.setArmRotation(i.horizontal,i.vertical),e.camera.setArmLength(i.distance))}var y=i(62),b=function(t){return t&&t.__esModule?t:{default:t}}(y),_=i(1),w=i(102),x=i(100),k={BAR:0,BARCOLOR:1,BARSIZE:2,DOT:3,DOTLINE:4,DOTCOLOR:5,DOTSIZE:6,GRID:7,LINE:8,SURFACE:9},O={dot:k.DOT,"dot-line":k.DOTLINE,"dot-color":k.DOTCOLOR,"dot-size":k.DOTSIZE,line:k.LINE,grid:k.GRID,surface:k.SURFACE,bar:k.BAR,"bar-color":k.BARCOLOR,"bar-size":k.BARSIZE},S=["width","height","filterLabel","legendLabel","xLabel","yLabel","zLabel","xValueLabel","yValueLabel","zValueLabel","showXAxis","showYAxis","showZAxis","showGrid","showPerspective","showShadow","keepAspectRatio","verticalRatio","dotSizeRatio","showAnimationControls","animationInterval","animationPreload","animationAutoStart","axisColor","gridColor","xCenter","yCenter"],D=["xBarWidth","yBarWidth","valueMin","valueMax","xMin","xMax","xStep","yMin","yMax","yStep","zMin","zMax","zStep"],M=void 0;t.exports.STYLE=k,t.exports.setDefaults=h,t.exports.setOptions=d,t.exports.setCameraPosition=g},function(t,e,i){if("undefined"!=typeof window){var o=i(113),n=window.Hammer||i(114);t.exports=o(n,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var o,n,s;!function(i){n=[],o=i,void 0!==(s="function"==typeof o?o.apply(e,n):o)&&(t.exports=s)}(function(){var t=null;return function e(i,o){function n(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0};var o=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof o&&(e.srcEvent.stopPropagation=function(){o(),e.stopPropagation()}),e.firstTarget=t;for(var n=t;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a0?d._handlers[t]=o:(i.off(t,s),delete d._handlers[t]))}),d},d.emit=function(e,o){t=o.target,i.emit(e,o)},d.destroy=function(){var t=i.element.hammer,e=t.indexOf(d);e!==-1&&t.splice(e,1),t.length||delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(p(t,i),e)}function d(t,e,i){return!!Array.isArray(t)&&(l(t,i[e],i),!0)}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function c(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&ft(o,i)}function p(t,e){return function(){return t.apply(e,arguments)}}function f(t,e){return typeof t==gt?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function v(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function g(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function y(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function O(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=N(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=R(o);e.timeStamp=_t(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=B(a,h),e.distance=L(a,h),P(i,e),e.offsetDirection=A(e.deltaX,e.deltaY);var d=z(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=d.x,e.overallVelocityY=d.y,e.overallVelocity=bt(d.x)>bt(d.y)?d.x:d.y,e.scale=r?j(r.pointers,o):1,e.rotation=r?F(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,I(i,e);var l=t.element;y(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==Tt&&s.eventType!==Pt||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function I(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=It&&(h>Ct||r.velocity===a)){var d=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,u=z(h,d,l);o=u.x,n=u.y,i=bt(u.x)>bt(u.y)?u.x:u.y,s=A(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function N(t){for(var e=[],i=0;i=bt(e)?t<0?Rt:zt:e<0?At:Lt}function L(t,e,i){i||(i=Ht);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function B(t,e,i){i||(i=Ht);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function F(t,e){return B(e[1],e[0],Wt)+B(t[1],t[0],Wt)}function j(t,e){return L(e[0],e[1],Wt)/L(t[0],t[1],Wt)}function H(){this.evEl=Gt,this.evWin=Vt,this.pressed=!1,M.apply(this,arguments)}function W(){this.evEl=Xt,this.evWin=Zt,M.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Y(){this.evTarget=Qt,this.evWin=Jt,this.started=!1,M.apply(this,arguments)}function G(t,e){var i=x(t.touches),o=x(t.changedTouches);return e&(Pt|It)&&(i=k(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=te,this.targetIds={},M.apply(this,arguments)}function U(t,e){var i=x(t.touches),o=this.targetIds;if(e&(Tt|Et)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=x(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return y(t.target,h)}),e===Tt)for(n=0;n-1&&o.splice(t,1)};setTimeout(n,ee)}}function K(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,o=0;o-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;o=fe&&e(i.options.event+tt(o))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;te.threshold&&n&e.direction},attrTest:function(t){return ot.prototype.attrTest.call(this,t)&&(this.state&ce||!(this.state&ce)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=et(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),c(st,ot,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ce)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),c(rt,$,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[se]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(Pt|It)&&!n)this.reset();else if(t.eventType&Tt)this.reset(),this._timer=h(function(){this.state=me,this.tryEmit()},e.time,this);else if(t.eventType&Pt)return me;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===me&&(t&&t.eventType&Pt?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=_t(),this.manager.emit(this.options.event,this._input)))}}),c(at,ot,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ce)}}),c(ht,ot,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Bt|Ft,pointers:1},getTouchAction:function(){return nt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Bt|Ft)?e=t.overallVelocity:i&Bt?e=t.overallVelocityX:i&Ft&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&bt(e)>this.options.velocity&&t.eventType&Pt},emit:function(t){var e=et(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),c(dt,$,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[re]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distances)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=!e||void 0===e.animation||e.animation;this.range.setRange(r-a/2,r+a/2,h)}}},n.prototype.fit=function(t){var e,i=!t||void 0===t.animation||t.animation,o=this.itemsData&&this.itemsData.getDataSet();1===o.length&&void 0===o.get()[0].end?(e=this.getDataRange(),this.moveTo(e.min.valueOf(),{animation:i})):(e=this.getItemRange(),this.range.setRange(e.min,e.max,i))},n.prototype.getItemRange=function(){var t=this.getDataRange(),e=null!==t.min?t.min.valueOf():null,i=null!==t.max?t.max.valueOf():null,o=null,n=null;if(null!=e&&null!=i){var s=function(t){return l.convert(t.data.start,"Date").valueOf()},r=function(t){var e=void 0!=t.data.end?t.data.end:t.data.start;return l.convert(e,"Date").valueOf()},a=i-e;a<=0&&(a=10);var h=a/this.props.center.width;if(l.forEach(this.itemSet.items,function(t){t.groupShowing&&(t.show(),t.repositionX());var a=s(t),d=r(t);if(this.options.rtl)var l=a-(t.getWidthRight()+10)*h,u=d+(t.getWidthLeft()+10)*h;else var l=a-(t.getWidthLeft()+10)*h,u=d+(t.getWidthRight()+10)*h;li&&(i=u,n=t)}.bind(this)),o&&n){var d=o.getWidthLeft()+10,u=n.getWidthRight()+10,c=this.props.center.width-d-u;c>0&&(this.options.rtl?(e=s(o)-u*a/c,i=r(n)+d*a/c):(e=s(o)-d*a/c,i=r(n)+u*a/c))}}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},n.prototype.getDataRange=function(){var t=null,e=null,i=this.itemsData&&this.itemsData.getDataSet();return i&&i.forEach(function(i){var o=l.convert(i.start,"Date").valueOf(),n=l.convert(void 0!=i.end?i.end:i.start,"Date").valueOf();(null===t||oe)&&(e=n)}),{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},n.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY;if(this.options.rtl)var o=l.getAbsoluteRight(this.dom.centerContainer)-e;else var o=e-l.getAbsoluteLeft(this.dom.centerContainer);var n=i-l.getAbsoluteTop(this.dom.centerContainer),s=this.itemSet.itemFromTarget(t),r=this.itemSet.groupFromTarget(t),a=g.customTimeFromTarget(t),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),u=this.body.util.getStep(),c=this._toTime(o),p=h?h(c,d,u):c,f=l.getTarget(t),m=null;return null!=s?m="item":null!=a?m="custom-time":l.hasParent(f,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&l.hasParent(f,this.timeAxis2.dom.foreground)?m="axis":l.hasParent(f,this.itemSet.dom.labelSet)?m="group-label":l.hasParent(f,this.currentTime.bar)?m="current-time":l.hasParent(f,this.dom.center)&&(m="background"),{event:t,item:s?s.id:null,group:r?r.groupId:null,what:m,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:c,snappedTime:p}},n.prototype.toggleRollingMode=function(){this.range.rolling?this.range.stopRolling():(void 0==this.options.rollingMode&&this.setOptions(this.options),this.range.startRolling())},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(90),s=o(n),r=i(62),a=o(r),h=i(119),d=o(h),l=i(120),u=o(l),c=i(124),p=o(c),f=i(1),m=function(){function t(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,d.default)(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},f.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new p.default(n),this.wrapper=void 0}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===(void 0===t?"undefined":(0,a.default)(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),this.options.filter===!1&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):e!==!0&&e.indexOf(n)===-1||(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);if(this.options.showButton===!0){var s=document.createElement("div");s.className="vis-configuration vis-config-button",s.innerHTML="generate options",s.onclick=function(){t._printOptions()},s.onmouseover=function(){s.className="vis-configuration vis-config-button hover"},s.onmouseout=function(){s.className="vis-configuration vis-config-button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-configuration vis-config-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(s)}this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?i-1:0),n=1;n2&&void 0!==arguments[2]&&arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,o.innerHTML=i===!0?""+t+":":t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&t.indexOf(e)!==-1&&(n=t.indexOf(e));for(var s=0;ss&&1!==s&&(a.max=Math.ceil(1.2*e),d=a.max,h="range increased"),a.value=e}else a.value=o;var l=document.createElement("input");l.className="vis-configuration vis-config-rangeinput",l.value=a.value;var u=this;a.onchange=function(){l.value=this.value,u._update(Number(this.value),i)},a.oninput=function(){l.value=this.value};var c=this._makeLabel(i[i.length-1],i),p=this._makeItem(i,c,a,l);""!==h&&this.popupHistory[p]!==d&&(this.popupHistory[p]=d,this._setupPopup(h,p))}},{key:"_setupPopup",value:function(t,e){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],h=f.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e))===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=i===!1),o!==!1){s=!0;var d=this._getValue(h);if(a instanceof Array)this._handleArray(a,d,h);else if("string"==typeof a)this._makeTextInput(a,d,h);else if("boolean"==typeof a)this._makeCheckbox(a,d,h);else if(a instanceof Object){var l=!0;if(e.indexOf("physics")!==-1&&this.moduleOptions.physics.solver!==r&&(l=!1),l===!0)if(void 0!==a.enabled){var u=f.copyAndExtendArray(h,"enabled"),c=this._getValue(u);if(c===!0){var p=this._makeLabel(r,h,!0);this._makeItem(h,p),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,c,h)}else{var m=this._makeLabel(r,h,!0);this._makeItem(h,m),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i;t="true"===t||t,t="false"!==t&&t;for(var n=0;nvar options = "+(0,s.default)(t,null,2)+""}},{key:"getOptions",value:function(){for(var t={},e=0;e0&&void 0!==arguments[0]?arguments[0]:1;(0,a.default)(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return(0,d.default)(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9", +navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};if("string"==typeof t)return e[t]}},{key:"setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),c.isString(t)===!0){if(c.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(c.isValidRGBA(t)===!0){var r=t.substr(5).substr(0,t.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(c.isValidHex(t)===!0){var a=c.hexToRGB(t);i={r:a.r,g:a.g,b:a.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var h=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:h}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+(0,s.default)(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this;(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])===!0&&(this.previousColor=c.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])===!0&&(this.initialColor=c.extend({},t)),this.color=t;var e=c.RGBToHSV(t.r,t.g,t.b),i=2*Math.PI,o=this.r*e.s,n=this.centerCoordinates.x+o*Math.sin(i*e.h),s=this.centerCoordinates.y+o*Math.cos(i*e.h);this.colorPickerSelector.style.left=n-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=s-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=c.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=c.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.color,e=c.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(t){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(t){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var i=this;this.opacityRange.onchange=function(){i._setOpacity(this.value)},this.opacityRange.oninput=function(){i._setOpacity(this.value)},this.brightnessRange.onchange=function(){i._setBrightness(this.value)},this.brightnessRange.oninput=function(){i._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new l(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),u.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var a=2*Math.PI/360,h=1/this.r,d=void 0;for(s=0;s<360;s++)for(r=0;rs.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),g):n.distance<=8?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),g):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print((0,d.default)(i))+t.printLocation(o,e),g),m=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=1e9,r="",a=[],h=e.toLowerCase(),d=void 0;for(var l in i){var u=void 0;if(void 0!==i[l].__type__&&n===!0){var c=t.findInOptions(e,i[l],f.copyAndExtendArray(o,l));s>c.distance&&(r=c.closestMatch,a=c.path,s=c.distance,d=c.indexMatch)}else l.toLowerCase().indexOf(h)!==-1&&(d=l),u=t.levenshteinDistance(e,l),s>u&&(r=l,a=f.copyArray(o),s=u)}return{closestMatch:r,path:a,distance:s,indexMatch:d}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Problem value found at: \n",o="\n\n"+i+"options = {\n",n=0;n1e3&&(i=1e3),e.body.dom.rollingModeBtn.style.visibility="hidden",e.currentTimeTimer=setTimeout(t,i)}var e=this;t()},n.prototype.stopRolling=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),this.rolling=!1,this.body.dom.rollingModeBtn.style.visibility="visible")},n.prototype.setRange=function(t,e,i,o,n){o!==!0&&(o=!1);var s=void 0!=t?c.convert(t,"Date").valueOf():null,r=void 0!=e?c.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var h=this,l=this.start,p=this.end,f="object"===(void 0===i?"undefined":(0,u.default)(i))&&"duration"in i?i.duration:500,v="object"===(void 0===i?"undefined":(0,u.default)(i))&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",g=c.easingFunctions[v];if(!g)throw new Error("Unknown easing function "+(0,d.default)(v)+". Choose from: "+(0,a.default)(c.easingFunctions).join(", "));var y=(new Date).valueOf(),b=!1;return function t(){if(!h.props.touch.dragging){var e=(new Date).valueOf(),i=e-y,a=g(i/f),d=i>f,u=d||null===s?s:l+(s-l)*a,c=d||null===r?r:p+(r-p)*a;_=h._applyRange(u,c),m.updateHiddenDates(h.options.moment,h.body,h.options.hiddenDates),b=b||_;var v={start:new Date(h.start),end:new Date(h.end),byUser:o,event:n};_&&h.body.emitter.emit("rangechange",v),d?b&&h.body.emitter.emit("rangechanged",v):h.animationTimer=setTimeout(t,20)}}()}var _=this._applyRange(s,r);if(m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),_){var w={start:new Date(this.start),end:new Date(this.end),byUser:o,event:n};this.body.emitter.emit("rangechange",w),this.body.emitter.emit("rangechanged",w)}},n.prototype.getMillisecondsPerPixel=function(){return(this.end-this.start)/this.body.dom.center.clientWidth},n.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},n.prototype._applyRange=function(t,e){var i,o=null!=t?c.convert(t,"Date").valueOf():this.start,n=null!=e?c.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?c.convert(this.options.max,"Date").valueOf():null,r=null!=this.options.min?c.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(ns&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=r&&o=this.start-.5&&n<=this.end?(o=this.start,n=this.end):(i=a-(n-o),o-=i/2,n+=i/2)}}if(null!==this.options.zoomMax){var h=parseFloat(this.options.zoomMax);h<0&&(h=0),n-o>h&&(this.end-this.start===h&&othis.end?(o=this.start,n=this.end):(i=n-o-h,o+=i/2,n-=i/2))}var d=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,d},n.prototype.getRange=function(){return{start:this.start,end:this.end}},n.prototype.conversion=function(t,e){return n.conversion(this.start,this.end,t,e)},n.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},n.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this._isInsideRange(t)&&this.props.touch.allowDragging&&(this.stopRolling(),this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},n.prototype._onDrag=function(t){if(t&&this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;s(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start;o-=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);var n="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height;if(this.options.rtl)var r=i/n*o;else var r=-i/n*o;var a=this.props.touch.start+r,h=this.props.touch.end+r,d=m.snapAwayFromHidden(this.body.hiddenDates,a,this.previousDelta-i,!0),l=m.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0);if(d!=a||l!=h)return this.deltaDifference+=i,this.props.touch.start=d,this.props.touch.end=l,void this._onDrag(t);this.previousDelta=i,this._applyRange(a,h);var u=new Date(this.start),c=new Date(this.end);this.body.emitter.emit("rangechange",{start:u,end:c,byUser:!0,event:t}),this.body.emitter.emit("panmove")}},n.prototype._onDragEnd=function(t){this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0,event:t}))},n.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),this.options.zoomKey&&!t[this.options.zoomKey]&&this.options.zoomable||!this.options.zoomable&&this.options.moveable){if(this.options.horizontalScroll){t.preventDefault();var i=e*(this.end-this.start)/20,o=this.start-i,n=this.end-i;this.setRange(o,n,!1,!0,t)}}else if(this.options.zoomable&&this.options.moveable&&this._isInsideRange(t)&&e){var s;s=e<0?1-e/5:1/(1+e/5);var r;if(this.rolling)r=(this.start+this.end)/2;else{var a=this.getPointer({x:t.clientX,y:t.clientY},this.body.dom.center);r=this._pointerToDate(a)}this.zoom(s,r,e,t),t.preventDefault()}},n.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},n.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=this.getPointer(t.center,this.body.dom.center)),this.stopRolling();var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,i),s=o-n,r=i-n+(this.props.touch.start-(i-n))*e,a=i+s+(this.props.touch.end-(i+s))*e;this.startToFront=1-e<=0,this.endToFront=e-1<=0;var h=m.snapAwayFromHidden(this.body.hiddenDates,r,1-e,!0),d=m.snapAwayFromHidden(this.body.hiddenDates,a,e-1,!0);h==r&&d==a||(this.props.touch.start=h,this.props.touch.end=d,this.scaleOffset=1-t.scale,r=h,a=d),this.setRange(r,a,!1,!0,t),this.startToFront=!1,this.endToFront=!0}},n.prototype._isInsideRange=function(t){var e=t.center?t.center.x:t.clientX;if(this.options.rtl)var i=e-c.getAbsoluteLeft(this.body.dom.centerContainer);else var i=c.getAbsoluteRight(this.body.dom.centerContainer)-e;var o=this.body.util.toTime(i);return o>=this.start&&o<=this.end},n.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(s(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},n.prototype.getPointer=function(t,e){return this.options.rtl?{x:c.getAbsoluteRight(e)-t.x,y:t.y-c.getAbsoluteTop(e)}:{x:t.x-c.getAbsoluteLeft(e),y:t.y-c.getAbsoluteTop(e)}},n.prototype.zoom=function(t,e,i,o){null==e&&(e=(this.start+this.end)/2);var n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),s=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,e),r=n-s,a=e-s+(this.start-(e-s))*t,h=e+r+(this.end-(e+r))*t;this.startToFront=!(i>0),this.endToFront=!(-i>0);var d=m.snapAwayFromHidden(this.body.hiddenDates,a,i,!0),l=m.snapAwayFromHidden(this.body.hiddenDates,h,-i,!0);d==a&&l==h||(a=d,h=l),this.setRange(a,h,!1,!0,o),this.startToFront=!1,this.endToFront=!0},n.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},n.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n,!1,!0,null)},t.exports=n},function(t,e,i){function o(t,e){this.options=null,this.props=null}var n=i(1);o.prototype.setOptions=function(t){t&&n.extend(this.options,t)},o.prototype.redraw=function(){return!1},o.prototype.destroy=function(){},o.prototype._isResized=function(){var 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},t.exports=o},function(t,e){e.convertHiddenOptions=function(t,i,o){if(o&&!Array.isArray(o))return e.convertHiddenOptions(t,i,[o]);if(i.hiddenDates=[],o&&1==Array.isArray(o)){for(var n=0;n=4*a){var c=0,p=s.clone();switch(o[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}for(;d=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o=r&&nt.range.end){var h={start:t.range.start,end:i};i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,h,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale}i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,t.range,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale},e.toTime=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return new Date(i/n.scale+n.offset)}var s=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end),r=t.range.end-t.range.start-s,a=r*i/o,h=e.getAccumulatedHiddenDuration(t.body.hiddenDates,t.range,a);return new Date(h+a+t.range.start)},e.getHiddenDurationBetween=function(t,e,i){for(var o=0,n=0;n=e&&r=e&&r<=i&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,o,n){return n=t(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,o,n)},e.getHiddenDurationBefore=function(t,e,i,o){var n=0;o=t(o).toDate().valueOf();for(var s=0;s=i.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?o<0?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&t-1||a))return t.dataTransfer.dropEffect="move",a=!0,!1}function n(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation();try{if(!JSON.parse(t.dataTransfer.getData("text")).content)return}catch(t){return!1}return a=!1,t.center={x:t.clientX,y:t.clientY},s.itemSet._onAddItem(t),!1}this.dom={},this.dom.container=t,this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.rollingModeBtn=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.rollingModeBtn.className="vis-rolling-mode-btn",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.rollingModeBtn),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.on("rangechange",function(){this.initialDrawDone===!0&&this._redraw()}.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("panmove",this._onDrag.bind(this));var s=this;this._origRedraw=this._redraw.bind(this),this._redraw=c.throttle(this._origRedraw),this.on("_change",function(t){s.itemSet&&s.itemSet.initialItemSetDrawn&&t&&1==t.queue?s._redraw():s._origRedraw()}),this.hammer=new l(this.dom.root);var r=this.hammer.get("pinch").set({enable:!0});u.disablePreventDefaultVertically(r),this.hammer.get("pan").set({threshold:5,direction:l.DIRECTION_HORIZONTAL}),this.listeners={},["tap","doubletap","press","pinch","pan","panstart","panmove","panend"].forEach(function(t){var e=function(e){s.isActive()&&s.emit(t,e)};s.hammer.on(t,e),s.listeners[t]=e}),u.onTouch(this.hammer,function(t){s.emit("touch",t)}.bind(this)),u.onRelease(this.hammer,function(t){s.emit("release",t)}.bind(this)),this.dom.centerContainer.addEventListener?(this.dom.centerContainer.addEventListener("mousewheel",e.bind(this),!1),this.dom.centerContainer.addEventListener("DOMMouseScroll",e.bind(this),!1)):this.dom.centerContainer.attachEvent("onmousewheel",e.bind(this)),this.dom.left.parentNode.addEventListener("scroll",i.bind(this)),this.dom.right.parentNode.addEventListener("scroll",i.bind(this));var a=!1;if(this.dom.center.addEventListener("dragover",o.bind(this),!1),this.dom.center.addEventListener("drop",n.bind(this),!1),this.customTimes=[],this.touch={},this.redrawCount=0,this.initialDrawDone=!1,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},n.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates","locale","locales","moment","rtl","zoomKey","horizontalScroll","verticalScroll"];if(c.selectiveExtend(e,this.options,t),this.dom.rollingModeBtn.style.visibility="hidden",this.options.rtl&&(this.dom.container.style.direction="rtl",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical-rtl"),this.options.verticalScroll&&(this.options.rtl?this.dom.rightContainer.className="vis-panel vis-right vis-vertical-scroll":this.dom.leftContainer.className="vis-panel vis-left vis-vertical-scroll"),this.options.orientation={item:void 0,axis:void 0},"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"===(0,h.default)(t.orientation)&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new p(this.body);i.setOptions=function(t){var e=t?c.extend({},t):{};e.orientation="top",p.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);o!==-1&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),"hiddenDates"in this.options&&m.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new f(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),"configure"in t){this.configurator||(this.configurator=this._createConfigurator()),this.configurator.setOptions(t.configure);var n=c.deepExtend({},this.options);this.components.forEach(function(t){c.deepExtend(n,t.options)}),this.configurator.setModuleOptions({global:n})}this._redraw()},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},n.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));i.length>0&&i[0].setCustomTime(t)},n.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));return e[0].getCustomTime()},n.prototype.setCustomTimeTitle=function(t,e){var i=this.customTimes.filter(function(t){return t.options.id===e});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));if(i.length>0)return i[0].setCustomTitle(t)},n.prototype.getEventProperties=function(t){return{event:t}},n.prototype.addCustomTime=function(t,e){var i=void 0!==t?c.convert(t,"Date").valueOf():new Date;if(this.customTimes.some(function(t){return t.options.id===e}))throw new Error("A custom time with id "+(0,r.default)(e)+" already exists");var o=new v(this.body,c.extend({},this.options,{time:i,id:e}));return this.customTimes.push(o),this.components.push(o),this._redraw(),e},n.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},n.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},n.prototype.fit=function(t){var e=this.getDataRange();if(null!==e.min||null!==e.max){var i=e.max-e.min,o=new Date(e.min.valueOf()-.01*i),n=new Date(e.max.valueOf()+.01*i),s=!t||void 0===t.animation||t.animation;this.range.setRange(o,n,s)}},n.prototype.getDataRange=function(){throw new Error("Cannot invoke abstract method getDataRange")},n.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0===n.animation||n.animation,this.range.setRange(n.start,n.end,o)}else o=!i||void 0===i.animation||i.animation,this.range.setRange(t,e,o)},n.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=c.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=!e||void 0===e.animation||e.animation;this.range.setRange(n,s,r)},n.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},n.prototype.zoomIn=function(t,e){if(!(!t||t<0||t>1)){var i=this.getWindow(),o=i.start.valueOf(),n=i.end.valueOf(),s=n-o,r=s/(1+t),a=(s-r)/2,h=o+a,d=n-a;this.setWindow(h,d,e)}},n.prototype.zoomOut=function(t,e){if(!(!t||t<0||t>1)){var i=this.getWindow(),o=i.start.valueOf(),n=i.end.valueOf(),s=n-o,r=o-s*t/2,a=n+s*t/2;this.setWindow(r,a,e)}},n.prototype.redraw=function(){this._redraw()},n.prototype._redraw=function(){this.redrawCount++;var t=!1,e=this.options,i=this.props,o=this.dom;if(o&&o.container&&0!=o.root.offsetWidth){m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),"top"==e.orientation?(c.addClassName(o.root,"vis-top"),c.removeClassName(o.root,"vis-bottom")):(c.removeClassName(o.root,"vis-top"),c.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=c.option.asSize(e.maxHeight,""),o.root.style.minHeight=c.option.asSize(e.minHeight,""),o.root.style.width=c.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top,i.borderRootHeight=o.root.offsetHeight-o.root.clientHeight,i.borderRootWidth=o.root.offsetWidth-o.root.clientWidth,0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(i.borderRootWidth=i.borderRootHeight),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var n=Math.max(i.left.height,i.center.height,i.right.height),s=i.top.height+n+i.bottom.height+i.borderRootHeight+i.border.top+i.border.bottom;o.root.style.height=c.option.asSize(e.height,s+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-i.borderRootHeight;var r=i.root.height-i.top.height-i.bottom.height-i.borderRootHeight;i.centerContainer.height=r,i.leftContainer.height=r,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-i.borderRootWidth,this.initialDrawDone||(i.scrollbarWidth=c.getScrollBarWidth()),e.verticalScroll?e.rtl?(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth+i.scrollbarWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth+i.scrollbarWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right),this._setDOM();var a=this._updateScrollTop();"top"!=e.orientation.item&&(a+=Math.max(i.centerContainer.height-i.center.height-i.border.top-i.border.bottom,0)),o.center.style.top=a+"px";var h=0==i.scrollTop?"hidden":"",d=i.scrollTop==i.scrollTopMin?"hidden":"";o.shadowTop.style.visibility=h,o.shadowBottom.style.visibility=d,o.shadowTopLeft.style.visibility=h,o.shadowBottomLeft.style.visibility=d,o.shadowTopRight.style.visibility=h,o.shadowBottomRight.style.visibility=d,e.verticalScroll&&(o.rightContainer.className="vis-panel vis-right vis-vertical-scroll",o.leftContainer.className="vis-panel vis-left vis-vertical-scroll",o.shadowTopRight.style.visibility="hidden",o.shadowBottomRight.style.visibility="hidden",o.shadowTopLeft.style.visibility="hidden",o.shadowBottomLeft.style.visibility="hidden",o.left.style.top="0px",o.right.style.top="0px"),(!e.verticalScroll||i.center.heighti.centerContainer.height;this.hammer.get("pan").set({direction:u?l.DIRECTION_ALL:l.DIRECTION_HORIZONTAL}),this.components.forEach(function(e){t=e.redraw()||t});if(t){if(this.redrawCount<5)return void this.body.emitter.emit("_change");console.log("WARNING: infinite loop in redraw?")}else this.redrawCount=0;this.initialDrawDone=!0,this.body.emitter.emit("changed")}},n.prototype._setDOM=function(){var t=this.props,e=this.dom;t.leftContainer.width=t.left.width,t.rightContainer.width=t.right.width;var i=t.root.width-t.left.width-t.right.width-t.borderRootWidth;t.center.width=i,t.centerContainer.width=i,t.top.width=i,t.bottom.width=i,e.background.style.height=t.background.height+"px",e.backgroundVertical.style.height=t.background.height+"px",e.backgroundHorizontal.style.height=t.centerContainer.height+"px",e.centerContainer.style.height=t.centerContainer.height+"px",e.leftContainer.style.height=t.leftContainer.height+"px",e.rightContainer.style.height=t.rightContainer.height+"px",e.background.style.width=t.background.width+"px",e.backgroundVertical.style.width=t.centerContainer.width+"px",e.backgroundHorizontal.style.width=t.background.width+"px",e.centerContainer.style.width=t.center.width+"px",e.top.style.width=t.top.width+"px",e.bottom.style.width=t.bottom.width+"px",e.background.style.left="0",e.background.style.top="0",e.backgroundVertical.style.left=t.left.width+t.border.left+"px",e.backgroundVertical.style.top="0",e.backgroundHorizontal.style.left="0",e.backgroundHorizontal.style.top=t.top.height+"px",e.centerContainer.style.left=t.left.width+"px",e.centerContainer.style.top=t.top.height+"px",e.leftContainer.style.left="0",e.leftContainer.style.top=t.top.height+"px",e.rightContainer.style.left=t.left.width+t.center.width+"px",e.rightContainer.style.top=t.top.height+"px",e.top.style.left=t.left.width+"px",e.top.style.top="0",e.bottom.style.left=t.left.width+"px",e.bottom.style.top=t.top.height+t.centerContainer.height+"px",e.center.style.left="0",e.left.style.left="0",e.right.style.left="0"},n.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},n.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},n.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},n.prototype._toTime=function(t){return m.toTime(this,t,this.props.center.width)},n.prototype._toGlobalTime=function(t){return m.toTime(this,t,this.props.root.width)},n.prototype._toScreen=function(t){return m.toScreen(this,t,this.props.center.width)},n.prototype._toGlobalScreen=function(t){return m.toScreen(this,t,this.props.root.width)},n.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},n.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){if(1!=t.options.autoResize)return void t._stopAutoResize();t.dom.root&&(t.dom.root.offsetWidth==t.props.lastWidth&&t.dom.root.offsetHeight==t.props.lastHeight||(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.props.scrollbarWidth=c.getScrollBarWidth(),t.body.emitter.emit("_change")))},c.addEventListener(window,"resize",this._onResize),t.dom.root&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight),this.watchTimer=setInterval(this._onResize,1e3)},n.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),this._onResize&&(c.removeEventListener(window,"resize",this._onResize),this._onResize=null)},n.prototype._onTouch=function(t){this.touch.allowDragging=!0,this.touch.initialScrollTop=this.props.scrollTop},n.prototype._onPinch=function(t){this.touch.allowDragging=!1},n.prototype._onDrag=function(t){if(t&&this.touch.allowDragging){var e=t.deltaY,i=this._getScrollTop(),o=this._setScrollTop(this.touch.initialScrollTop+e);this.options.verticalScroll&&(this.dom.left.parentNode.scrollTop=-this.props.scrollTop,this.dom.right.parentNode.scrollTop=-this.props.scrollTop),o!=i&&this.emit("verticalDrag")}},n.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},n.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("top"!=this.options.orientation.item&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTope&&o.push(h.id):h.lefti&&o.push(h.id)}return o},n.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;in)return}}if(i&&i!=this.groupTouchParams.group){var a=e.get(i.groupId),h=e.get(this.groupTouchParams.group.groupId);h&&a&&(this.options.groupOrderSwap(h,a,e),e.update(h),e.update(a));var d=e.getIds({order:this.options.groupOrder});if(!c.equalArray(d,this.groupTouchParams.originalOrder))for(var l=this.groupTouchParams.originalOrder,u=this.groupTouchParams.group.groupId,p=Math.min(l.length,d.length),m=0,v=0,g=0;m=p)break;if(d[m+v]!=u)if(l[m+g]!=u){var y=d.indexOf(l[m+g]),b=e.get(d[m+v]),_=e.get(l[m+g]);this.options.groupOrderSwap(b,_,e),e.update(b),e.update(_);var w=d[m+v];d[m+v]=l[m+g],d[y]=w,m++}else g=1;else v=1}}}},n.prototype._onGroupDragEnd=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this,i=e.groupTouchParams.group.groupId,o=e.groupsData.getDataSet(),n=c.extend({},o.get(i));e.options.onMoveGroup(n,function(t){if(t)t[o._fieldId]=i,o.update(t);else{var n=o.getIds({order:e.options.groupOrder});if(!c.equalArray(n,e.groupTouchParams.originalOrder))for(var s=e.groupTouchParams.originalOrder,r=Math.min(s.length,n.length),a=0;a=r)break;var h=n.indexOf(s[a]),d=o.get(n[a]),l=o.get(s[a]);e.options.groupOrderSwap(d,l,o),o.update(d),o.update(l);var u=n[a];n[a]=s[a],n[h]=u,a++}}}),e.body.emitter.emit("groupDragged",{groupId:i})}},n.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.srcEvent&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey),i=t.srcEvent&&t.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var o=this.getSelection(),n=this.itemFromTarget(t),s=n?[n.id]:[];this.setSelection(s);var r=this.getSelection();(r.length>0||o.length>0)&&this.body.emitter.emit("select",{items:r,event:t})}},n.prototype._onMouseOver=function(t){var e=this.itemFromTarget(t);if(e){if(e!==this.itemFromRelatedTarget(t)){var i=e.getTitle();if(i){null==this.popup&&(this.popup=new l.default(this.body.dom.root,this.options.tooltip.overflowMethod||"flip")),this.popup.setText(i);var o=this.body.dom.centerContainer;this.popup.setPosition(t.clientX-c.getAbsoluteLeft(o)+o.offsetLeft,t.clientY-c.getAbsoluteTop(o)+o.offsetTop),this.popup.show()}else null!=this.popup&&this.popup.hide();this.body.emitter.emit("itemover",{item:e.id,event:t})}}},n.prototype._onMouseOut=function(t){var e=this.itemFromTarget(t);if(e){e!==this.itemFromRelatedTarget(t)&&(null!=this.popup&&this.popup.hide(),this.body.emitter.emit("itemout",{item:e.id,event:t}))}},n.prototype._onMouseMove=function(t){if(this.itemFromTarget(t)&&this.options.tooltip.followMouse&&this.popup&&!this.popup.hidden){var e=this.body.dom.centerContainer;this.popup.setPosition(t.clientX-c.getAbsoluteLeft(e)+e.offsetLeft,t.clientY-c.getAbsoluteTop(e)+e.offsetTop),this.popup.show()}},n.prototype._onMouseWheel=function(t){this.touchParams.itemIsDragging&&this._onDragEnd(t)},n.prototype._onUpdateItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this;if(t){var i=e.itemsData.get(t.id);this.options.onUpdate(i,function(t){t&&e.itemsData.getDataSet().update(t)})}}},n.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null;if(!this.itemFromTarget(t)){if(this.options.rtl)var o=c.getAbsoluteRight(this.dom.frame),n=o-t.center.x;else var o=c.getAbsoluteLeft(this.dom.frame),n=t.center.x-o;var s=this.body.util.toTime(n),r=this.body.util.getScale(),a=this.body.util.getStep(),h={start:i?i(s,r,a):s,content:"new item"};if("drop"==t.type){var d=JSON.parse(t.dataTransfer.getData("text"));if(h.content=d.content,h.type=d.type||"box",h[this.itemsData._fieldId]=d.id||c.randomUUID(),"range"==d.type||d.end&&d.start)if(d.end)h.end=d.end,h.start=d.start;else{var l=this.body.util.toTime(n+this.props.width/5);h.end=i?i(l,r,a):l}}else if(h[this.itemsData._fieldId]=c.randomUUID(),"range"===this.options.type){var l=this.body.util.toTime(n+this.props.width/5);h.end=i?i(l,r,a):l}var u=this.groupFromTarget(t);u&&(h.group=u.groupId),h=this._cloneItemData(h),this.options.onAdd(h,function(i){i&&(e.itemsData.getDataSet().add(i),"drop"==t.type&&e.setSelection([i.id]))})}}},n.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[];if((t.srcEvent&&t.srcEvent.shiftKey||!1)&&this.options.multiselect){var o=this.itemsData.get(e.id).group,s=void 0;this.options.multiselectPerGroup&&i.length>0&&(s=this.itemsData.get(i[0]).group),this.options.multiselectPerGroup&&void 0!=s&&s!=o||i.push(e.id);var r=n._getItemRange(this.itemsData.get(i,this.itemOptions));if(!this.options.multiselectPerGroup||s==o){i=[];for(var a in this.items)if(this.items.hasOwnProperty(a)){var h=this.items[a],d=h.data.start,l=void 0!==h.data.end?h.data.end:d;!(d>=r.min&&l<=r.max)||this.options.multiselectPerGroup&&s!=this.itemsData.get(h.id).group||h instanceof x||i.push(h.id)}}}else{var u=i.indexOf(e.id);u==-1?i.push(e.id):i.splice(u,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection(),event:t})}}},n._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},n.prototype.itemFromElement=function(t){for(var e=t;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},n.prototype.itemFromTarget=function(t){return this.itemFromElement(t.target)},n.prototype.itemFromRelatedTarget=function(t){return this.itemFromElement(t.relatedTarget)},n.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.clientY,i=0;ir&&er)return n}else if(0===i&&en-this.padding&&(a=!0),s=a?this.x-i:this.x,r=h?this.y-e:this.y}else r=this.y-e,r+e+this.padding>o&&(r=o-e-this.padding),rn&&(s=n-i-this.padding),s0&&this.current.milliseconds()0&&this.current.seconds()0&&this.current.minutes()0&&this.current.hours()0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){31104e9>t&&(this.scale="year",this.step=1e3),15552e9>t&&(this.scale="year",this.step=500),31104e8>t&&(this.scale="year",this.step=100),15552e8>t&&(this.scale="year",this.step=50),31104e7>t&&(this.scale="year",this.step=10),15552e7>t&&(this.scale="year",this.step=5),31104e6>t&&(this.scale="year",this.step=1),7776e6>t&&(this.scale="month",this.step=3),2592e6>t&&(this.scale="month",this.step=1),432e6>t&&(this.scale="day",this.step=5),1728e5>t&&(this.scale="day",this.step=2),864e5>t&&(this.scale="day",this.step=1),432e5>t&&(this.scale="weekday",this.step=1),144e5>t&&(this.scale="hour",this.step=4),36e5>t&&(this.scale="hour",this.step=1),9e5>t&&(this.scale="minute",this.step=15),6e5>t&&(this.scale="minute",this.step=10),3e5>t&&(this.scale="minute",this.step=5),6e4>t&&(this.scale="minute",this.step=1),15e3>t&&(this.scale="second",this.step=15),1e4>t&&(this.scale="second",this.step=10),5e3>t&&(this.scale="second",this.step=5),1e3>t&&(this.scale="second",this.step=1),200>t&&(this.scale="millisecond",this.step=200),100>t&&(this.scale="millisecond",this.step=100),50>t&&(this.scale="millisecond",this.step=50),10>t&&(this.scale="millisecond",this.step=10),5>t&&(this.scale="millisecond",this.step=5),1>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=n(t);if("year"==e){var s=o.year()+Math.round(o.month()/12);o.year(Math.round(s/i)*i),o.month(0),o.date(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("month"==e)o.date()>15?(o.date(1),o.add(1,"month")):o.date(1),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.hours(24*Math.round(o.hours()/24));break;default:o.hours(12*Math.round(o.hours()/12))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.hours(12*Math.round(o.hours()/12));break;default:o.hours(6*Math.round(o.hours()/6))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("hour"==e){switch(i){case 4:o.minutes(60*Math.round(o.minutes()/60));break;default:o.minutes(30*Math.round(o.minutes()/30))}o.seconds(0),o.milliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.minutes(5*Math.round(o.minutes()/5)),o.seconds(0);break;case 5:o.seconds(60*Math.round(o.seconds()/60));break;default:o.seconds(30*Math.round(o.seconds()/30))}o.milliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.seconds(5*Math.round(o.seconds()/5)),o.milliseconds(0);break;case 5:o.milliseconds(1e3*Math.round(o.milliseconds()/1e3));break;default:o.milliseconds(500*Math.round(o.milliseconds()/500))}else if("millisecond"==e){var r=i>5?i/2:1;o.milliseconds(Math.round(o.milliseconds()/r)*r)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}var t=this.moment(this.current);switch(this.scale){case"millisecond":return 0==t.milliseconds();case"second":return 0==t.seconds();case"minute":return 0==t.hours()&&0==t.minutes();case"hour":return 0==t.hours();case"weekday":case"day":return 1==t.date();case"month":return 0==t.month();case"year":return!1;default:return!1}},o.prototype.getLabelMinor=function(t){if(void 0==t&&(t=this.current),t instanceof Date&&(t=this.moment(t)),"function"==typeof this.format.minorLabels)return this.format.minorLabels(t,this.scale,this.step);var e=this.format.minorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getLabelMajor=function(t){if(void 0==t&&(t=this.current),t instanceof Date&&(t=this.moment(t)),"function"==typeof this.format.majorLabels)return this.format.majorLabels(t,this.scale,this.step);var e=this.format.majorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/r%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(o().add(1,"day"),"day")?" vis-tomorrow":t.isSame(o().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"month")?" vis-current-month":""}var o=this.moment,n=this.moment(this.current),s=n.locale?n.locale("en"):n.lang("en"),r=this.step;switch(this.scale){case"millisecond":return e(s)+t(s.milliseconds()).trim();case"second":return e(s)+t(s.seconds()).trim();case"minute":return e(s)+t(s.minutes()).trim();case"hour":return"vis-h"+s.hours()+(4==this.step?"-h"+(s.hours()+4):"")+e(s)+t(s.hours());case"weekday":return"vis-"+s.format("dddd").toLowerCase()+e(s)+function(t){return t.isSame(new Date,"week")?" vis-current-week":""}(s)+t(s.date());case"day":return"vis-day"+s.date()+" vis-"+s.format("MMMM").toLowerCase()+e(s)+i(s)+(this.step<=2?e(s):"")+(this.step<=2?" vis-"+s.format("dddd").toLowerCase():""+t(s.date()-1));case"month":return"vis-"+s.format("MMMM").toLowerCase()+i(s)+t(s.month());case"year":var a=s.year();return"vis-year"+a+function(t){return t.isSame(new Date,"year")?" vis-current-year":""}(s)+t(a);default:return""}},t.exports=o},function(t,e,i){function o(t,e,i){this.groupId=t,this.subgroups={},this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.isVisible=null,e&&e.nestedGroups&&(this.nestedGroups=e.nestedGroups,0==e.showNested?this.showNested=!1:this.showNested=!0),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;var o=this;this.itemSet.body.emitter.on("checkRangedItems",function(){o.checkRangedItems=!0}),this._create(),this.setData(e)}var n=i(58),s=function(t){return t&&t.__esModule?t:{default:t}}(n),r=i(1),a=i(135);i(136);o.prototype._create=function(){var t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;var e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;var i=document.createElement("div");i.className="vis-group",i["timeline-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)},o.prototype.setData=function(t){var e,i;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.appendChild(e);this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else e instanceof Object?i(t,this.dom.inner):this.dom.inner.innerHTML=void 0!==e&&null!==e?e:this.groupId||"";if(this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?r.removeClassName(this.dom.inner,"vis-hidden"):r.addClassName(this.dom.inner,"vis-hidden"),t&&t.nestedGroups)if(0==t.showNested?this.showNested=!1:this.showNested=!0,r.addClassName(this.dom.label,"vis-nesting-group"),this.showNested)r.removeClassName(this.dom.label,"collapsed"),r.addClassName(this.dom.label,"expanded");else{r.removeClassName(this.dom.label,"expanded");var o=this.itemSet.options.rtl?"collapsed-rtl":"collapsed";r.addClassName(this.dom.label,o)}t&&t.nestedInGroup&&(r.addClassName(this.dom.label,"vis-nested-group"),this.itemSet.options&&this.itemSet.options.rtl?this.dom.inner.style.paddingRight="30px":this.dom.inner.style.paddingLeft="30px");var n=t&&t.className||null;n!=this.className&&(this.className&&(r.removeClassName(this.dom.label,this.className),r.removeClassName(this.dom.foreground,this.className),r.removeClassName(this.dom.background,this.className),r.removeClassName(this.dom.axis,this.className)),r.addClassName(this.dom.label,n),r.addClassName(this.dom.foreground,n),r.addClassName(this.dom.background,n),r.addClassName(this.dom.axis,n),this.className=n),this.style&&(r.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(r.addCssText(this.dom.label,t.style),this.style=t.style)},o.prototype.getLabelWidth=function(){return this.props.label.width},o.prototype.redraw=function(t,e,i){var o=!1,n=this.dom.marker.clientHeight;n!=this.lastMarkerHeight&&(this.lastMarkerHeight=n,r.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()}),i=!0),this._calculateSubGroupHeights(e);var s=this.dom.foreground;if(this.top=s.offsetTop,this.right=s.offsetLeft,this.width=s.offsetWidth,this.isVisible=this._isGroupVisible(t,e),"function"==typeof this.itemSet.options.order){if(i){var h=this;r.forEach(this.items,function(t){t.displayed||(t.redraw(),h.visibleItems.push(t)),t.repositionX(!1)});var d=this.orderedItems.byStart.slice().sort(function(t,e){return h.itemSet.options.order(t.data,e.data)});a.stack(d,e,!0)}this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t)}else this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t),this.itemSet.options.stack?a.stack(this.visibleItems,e,i):a.nostack(this.visibleItems,e,this.subgroups,this.itemSet.options.stackSubgroups);this._updateSubgroupsSizes();var l=this._calculateHeight(e),s=this.dom.foreground;this.top=s.offsetTop,this.right=s.offsetLeft,this.width=s.offsetWidth,o=r.updateProperty(this,"height",l)||o,o=r.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||o,o=r.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||o,this.dom.background.style.height=l+"px",this.dom.foreground.style.height=l+"px",this.dom.label.style.height=l+"px";for(var u=0,c=this.visibleItems.length;u0){var e=this;this.resetSubgroups(),r.forEach(this.visibleItems,function(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=!0)})}},o.prototype._isGroupVisible=function(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},o.prototype._calculateHeight=function(t){var e,i=this.visibleItems;if(i.length>0){var o=i[0].top,n=i[0].top+i[0].height +;if(r.forEach(i,function(t){o=Math.min(o,t.top),n=Math.max(n,t.top+t.height)}),o>t.axis){var s=o-t.axis;n-=s,r.forEach(i,function(t){t.top-=s})}e=n+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},o.prototype.show=function(){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)},o.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},o.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,top:0,start:t.data.start,end:t.data.end,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),new Date(t.data.start)new Date(this.subgroups[t.data.subgroup].end)&&(this.subgroups[t.data.subgroup].end=t.data.end),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),this.visibleItems.indexOf(t)==-1){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},o.prototype._updateSubgroupsSizes=function(){var t=this;if(t.subgroups)for(var e in t.subgroups){var i=t.subgroups[e].items[0].data.start,o=t.subgroups[e].items[0].data.end;t.subgroups[e].items.forEach(function(t){new Date(t.data.start)new Date(o)&&(o=t.data.end)}),t.subgroups[e].start=i,t.subgroups[e].end=o}},o.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;i0)for(var l=0;lh}),1==this.checkRangedItems)for(this.checkRangedItems=!1,l=0;lh})}for(var l=0;l=0;s--){var r=e[s];if(n(r))break;void 0===o[r.id]&&(o[r.id]=!0,i.push(r))}for(var s=t+1;so[r].index&&e.collisionByTimes(o[n],o[r])){s=o[r];break}null!=s&&(o[n].top=s.top+s.height)}while(s)}for(var a=0;ae.right&&t.top-i.vertical+.001e.top:t.left-i.horizontal+.001e.left&&t.top-i.vertical+.001e.top},e.collisionByTimes=function(t,e){return t.start<=e.start&&t.end>=e.start&&t.tope.top||e.start<=t.start&&e.end>=t.start&&e.topt.top}},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,this.options=i,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(112),i(137));o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-range",o.prototype.isVisible=function(t){return this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.visibleFrame=document.createElement("div"),t.visibleFrame.className="vis-item-visible-frame",t.box.appendChild(t.visibleFrame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=this.editable.updateTime||this.editable.updateGroup,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.box.className=this.baseClassName+o,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintOnItemUpdateTimeTooltip(t.box),this._repaintDeleteButton(t.box),this._repaintDragCenter(),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);void 0!==t&&t!==!0||(n<-o&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n+.5,1);switch(this.overflow?(this.options.rtl?this.right=n:this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.options.rtl?this.right=n:this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.options.rtl?this.dom.box.style.right=this.right+"px":this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.options.rtl?this.dom.content.style.right="0":this.dom.content.style.left="0";break;case"right":this.options.rtl?this.dom.content.style.right=Math.max(r-i,0)+"px":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.options.rtl?this.dom.content.style.right=Math.max((r-i)/2,0)+"px":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:n<0?-n:0,this.options.rtl?this.dom.content.style.right=e+"px":(this.dom.content.style.left=e+"px",this.dom.content.style.width="calc(100% - "+e+"px)")}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.groupShowing=!0,this.dirty=!0,this.top=null,this.right=null,this.left=null,this.width=null,this.height=null,this.editable=null,this._updateEditStatus()}var s=i(62),r=o(s),a=i(58),h=o(a),d=i(112),l=i(1),u=i(82);n.prototype.stack=!0,n.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.setData=function(t){void 0!=t.group&&this.data.group!=t.group&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this._updateEditStatus(),this.dirty=!0,this.displayed&&this.redraw()},n.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},n.prototype.isVisible=function(t){return!1},n.prototype.show=function(){return!1},n.prototype.hide=function(){return!1},n.prototype.redraw=function(){},n.prototype.repositionX=function(){},n.prototype.repositionY=function(){},n.prototype._repaintDragCenter=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragCenter){var t=this,e=document.createElement("div");e.className="vis-drag-center",e.dragCenterItem=this,new d(e).on("doubletap",function(e){e.stopPropagation(),t.parent.itemSet._onUpdateItem(t)}),this.dom.box?this.dom.box.appendChild(e):this.dom.point&&this.dom.point.appendChild(e),this.dom.dragCenter=e}else!this.selected&&this.dom.dragCenter&&(this.dom.dragCenter.parentNode&&this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter),this.dom.dragCenter=null)},n.prototype._repaintDeleteButton=function(t){var e=(this.options.editable.overrideItems||null==this.editable)&&this.options.editable.remove||!this.options.editable.overrideItems&&null!=this.editable&&this.editable.remove;if(this.selected&&e&&!this.dom.deleteButton){var i=this,o=document.createElement("div");this.options.rtl?o.className="vis-delete-rtl":o.className="vis-delete",o.title="Delete this item",new d(o).on("tap",function(t){t.stopPropagation(),i.parent.removeFromDataSet(i)}),t.appendChild(o),this.dom.deleteButton=o}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},n.prototype._repaintOnItemUpdateTimeTooltip=function(t){if(this.options.tooltipOnItemUpdateTime){var e=(this.options.editable.updateTime||this.data.editable===!0)&&this.data.editable!==!1;if(this.selected&&e&&!this.dom.onItemUpdateTimeTooltip){var i=document.createElement("div");i.className="vis-onUpdateTime-tooltip",t.appendChild(i),this.dom.onItemUpdateTimeTooltip=i}else!this.selected&&this.dom.onItemUpdateTimeTooltip&&(this.dom.onItemUpdateTimeTooltip.parentNode&&this.dom.onItemUpdateTimeTooltip.parentNode.removeChild(this.dom.onItemUpdateTimeTooltip),this.dom.onItemUpdateTimeTooltip=null);if(this.dom.onItemUpdateTimeTooltip){this.dom.onItemUpdateTimeTooltip.style.visibility=this.parent.itemSet.touchParams.itemIsDragging?"visible":"hidden",this.options.rtl?this.dom.onItemUpdateTimeTooltip.style.right=this.dom.content.style.right:this.dom.onItemUpdateTimeTooltip.style.left=this.dom.content.style.left;var o,n=this.parent.itemSet.body.domProps.scrollTop;o="top"==this.options.orientation.item?this.top:this.parent.height-this.top-this.height;o+this.parent.top-50<-n?(this.dom.onItemUpdateTimeTooltip.style.bottom="",this.dom.onItemUpdateTimeTooltip.style.top=this.height+2+"px"):(this.dom.onItemUpdateTimeTooltip.style.top="",this.dom.onItemUpdateTimeTooltip.style.bottom=this.height+2+"px");var s,r;this.options.tooltipOnItemUpdateTime&&this.options.tooltipOnItemUpdateTime.template?(r=this.options.tooltipOnItemUpdateTime.template.bind(this),s=r(this.data)):(s="start: "+u(this.data.start).format("MM/DD/YYYY hh:mm"),this.data.end&&(s+="
end: "+u(this.data.end).format("MM/DD/YYYY hh:mm"))),this.dom.onItemUpdateTimeTooltip.innerHTML=s}}},n.prototype._updateContents=function(t){var e,i,o,n,s=this.parent.itemSet.itemsData.get(this.id),r=this.dom.box||this.dom.point,a=r.getElementsByClassName("vis-item-visible-frame")[0];if(this.options.visibleFrameTemplate?(n=this.options.visibleFrameTemplate.bind(this),o=n(s,r)):o="",a)if(o instanceof Object&&!(o instanceof Element))n(s,a);else{var h=this._contentToString(this.itemVisibleFrameContent)!==this._contentToString(o);if(h){if(o instanceof Element)a.innerHTML="",a.appendChild(o);else if(void 0!=o)a.innerHTML=o;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.itemVisibleFrameContent=o}}if(this.options.template?(i=this.options.template.bind(this),e=i(s,t,this.data)):e=this.data.content,e instanceof Object&&!(e instanceof Element))i(s,t);else{var h=this._contentToString(this.content)!==this._contentToString(e);if(h){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}}},n.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=(0,h.default)(this.data)}for(var i=0;it.start&&this.data.start.getTime()-it.start&&this.data.start.getTime()t.start&&this.data.start.getTime()-i/2t.start&&this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e,i=this.options.orientation.item;if(void 0!==this.data.subgroup){var o=this.data.subgroup,n=this.parent.subgroups;n[o].index;this.dom.box.style.height=this.parent.subgroups[o].height+"px",this.dom.box.style.top="top"==i?this.parent.top+this.parent.subgroups[o].top+"px":this.parent.top+this.parent.height-this.parent.subgroups[o].top-this.parent.subgroups[o].height+"px",this.dom.box.style.bottom=""}else this.parent instanceof s?(e=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.bottom="bottom"==i?"0":"",this.dom.box.style.top="top"==i?"0":""):(e=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=e+"px"},t.exports=o},function(t,e,i){function o(t,e){this.dom={foreground:null,lines:[],majorTexts:[],minorTexts:[],redundant:{lines:[],majorTexts:[],minorTexts:[]}},this.props={range:{start:0,end:0,minimumStep:0},lineTop:0},this.defaultOptions={orientation:{axis:"bottom"},showMinorLabels:!0,showMajorLabels:!0,maxMinorChars:7,format:h.FORMAT,moment:l,timeAxis:null},this.options=r.extend({},this.defaultOptions),this.body=t,this._create(),this.setOptions(e)}var n=i(62),s=function(t){return t&&t.__esModule?t:{default:t}}(n),r=i(1),a=i(128),h=i(133),d=i(129),l=i(82);o.prototype=new a,o.prototype.setOptions=function(t){t&&(r.selectiveExtend(["showMinorLabels","showMajorLabels","maxMinorChars","hiddenDates","timeAxis","moment","rtl"],this.options,t),r.selectiveDeepExtend(["format"],this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.axis=t.orientation:"object"===(0,s.default)(t.orientation)&&"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis)),"locale"in t&&("function"==typeof l.locale?l.locale(t.locale):l.lang(t.locale)))},o.prototype._create=function(){this.dom.foreground=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.foreground.className="vis-time-axis vis-foreground",this.dom.background.className="vis-time-axis vis-background"},o.prototype.destroy=function(){this.dom.foreground.parentNode&&this.dom.foreground.parentNode.removeChild(this.dom.foreground),this.dom.background.parentNode&&this.dom.background.parentNode.removeChild(this.dom.background),this.body=null},o.prototype.redraw=function(){var t=this.props,e=this.dom.foreground,i=this.dom.background,o="top"==this.options.orientation.axis?this.body.dom.top:this.body.dom.bottom,n=e.parentNode!==o;this._calculateCharSize();var s=this.options.showMinorLabels&&"none"!==this.options.orientation.axis,r=this.options.showMajorLabels&&"none"!==this.options.orientation.axis;t.minorLabelHeight=s?t.minorCharHeight:0,t.majorLabelHeight=r?t.majorCharHeight:0,t.height=t.minorLabelHeight+t.majorLabelHeight,t.width=e.offsetWidth,t.minorLineHeight=this.body.domProps.root.height-t.majorLabelHeight-("top"==this.options.orientation.axis?this.body.domProps.bottom.height:this.body.domProps.top.height),t.minorLineWidth=1,t.majorLineHeight=t.minorLineHeight+t.majorLabelHeight,t.majorLineWidth=1;var a=e.nextSibling,h=i.nextSibling;return e.parentNode&&e.parentNode.removeChild(e),i.parentNode&&i.parentNode.removeChild(i),e.style.height=this.props.height+"px",this._repaintLabels(),a?o.insertBefore(e,a):o.appendChild(e),h?this.body.dom.backgroundVertical.insertBefore(i,h):this.body.dom.backgroundVertical.appendChild(i),this._isResized()||n},o.prototype._repaintLabels=function(){var t=this.options.orientation.axis,e=r.convert(this.body.range.start,"Number"),i=r.convert(this.body.range.end,"Number"),o=this.body.util.toTime((this.props.minorCharWidth||10)*this.options.maxMinorChars).valueOf(),n=o-d.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this.body.range,o);n-=this.body.util.toTime(0).valueOf();var s=new h(new Date(e),new Date(i),n,this.body.hiddenDates);s.setMoment(this.options.moment),this.options.format&&s.setFormat(this.options.format),this.options.timeAxis&&s.setScale(this.options.timeAxis),this.step=s;var a=this.dom;a.redundant.lines=a.lines,a.redundant.majorTexts=a.majorTexts,a.redundant.minorTexts=a.minorTexts,a.lines=[],a.majorTexts=[],a.minorTexts=[];var l,c,p,f,m,v,g,y,b=0,_=void 0,w=0;for(s.start(),l=s.getCurrent(),p=this.body.util.toScreen(l);s.hasNext()&&w<1e3;){w++,f=s.isMajor(),y=s.getClassName(),g=s.getLabelMinor(),l,c=p,s.next(),l=s.getCurrent(),s.isMajor(),p=this.body.util.toScreen(l),m=b,b=p-c;var x=b>=.4*m;if(this.options.showMinorLabels&&x){var k=this._repaintMinorText(c,g,t,y);k.style.width=b+"px"}f&&this.options.showMajorLabels?(c>0&&(void 0==_&&(_=c), +k=this._repaintMajorText(c,s.getLabelMajor(),t,y)),v=this._repaintMajorLine(c,b,t,y)):x?v=this._repaintMinorLine(c,b,t,y):v&&(v.style.width=parseInt(v.style.width)+b+"px")}if(1e3!==w||u||(console.warn("Something is wrong with the Timeline scale. Limited drawing of grid lines to 1000 lines."),u=!0),this.options.showMajorLabels){var O=this.body.util.toTime(0),S=s.getLabelMajor(O),D=S.length*(this.props.majorCharWidth||10)+10;(void 0==_||D<_)&&this._repaintMajorText(0,S,t,y)}r.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},o.prototype._repaintMinorText=function(t,e,i,o){var n=this.dom.redundant.minorTexts.shift();if(!n){var s=document.createTextNode("");n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}return this.dom.minorTexts.push(n),n.innerHTML=e,n.style.top="top"==i?this.props.majorLabelHeight+"px":"0",this.options.rtl?(n.style.left="",n.style.right=t+"px"):n.style.left=t+"px",n.className="vis-text vis-minor "+o,n},o.prototype._repaintMajorText=function(t,e,i,o){var n=this.dom.redundant.majorTexts.shift();if(!n){var s=document.createElement("div");n=document.createElement("div"),n.appendChild(s),this.dom.foreground.appendChild(n)}return n.childNodes[0].innerHTML=e,n.className="vis-text vis-major "+o,n.style.top="top"==i?"0":this.props.minorLabelHeight+"px",this.options.rtl?(n.style.left="",n.style.right=t+"px"):n.style.left=t+"px",this.dom.majorTexts.push(n),n},o.prototype._repaintMinorLine=function(t,e,i,o){var n=this.dom.redundant.lines.shift();n||(n=document.createElement("div"),this.dom.background.appendChild(n)),this.dom.lines.push(n);var s=this.props;return n.style.top="top"==i?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",n.style.height=s.minorLineHeight+"px",this.options.rtl?(n.style.left="",n.style.right=t-s.minorLineWidth/2+"px",n.className="vis-grid vis-vertical-rtl vis-minor "+o):(n.style.left=t-s.minorLineWidth/2+"px",n.className="vis-grid vis-vertical vis-minor "+o),n.style.width=e+"px",n},o.prototype._repaintMajorLine=function(t,e,i,o){var n=this.dom.redundant.lines.shift();n||(n=document.createElement("div"),this.dom.background.appendChild(n)),this.dom.lines.push(n);var s=this.props;return n.style.top="top"==i?"0":this.body.domProps.top.height+"px",this.options.rtl?(n.style.left="",n.style.right=t-s.majorLineWidth/2+"px",n.className="vis-grid vis-vertical-rtl vis-major "+o):(n.style.left=t-s.majorLineWidth/2+"px",n.className="vis-grid vis-vertical vis-major "+o),n.style.height=s.majorLineHeight+"px",n.style.width=e+"px",n},o.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="vis-text vis-minor vis-measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="vis-text vis-major vis-measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth};var u=!1;t.exports=o},function(t,e,i){function o(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="vis-overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this;["tap","doubletap","press","pinch","pan","panstart","panmove","panend"].forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),document&&document.body&&(this.onClick=function(i){n(i.target,t)||e.deactivate()},document.body.addEventListener("click",this.onClick)),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=s(),this.escListener=this.deactivate.bind(this)}function n(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var s=i(115),r=i(99),a=i(112),h=i(1);r(o.prototype),o.current=null,o.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.onClick&&document.body.removeEventListener("click",this.onClick),this.hammer.destroy(),this.hammer=null},o.prototype.activate=function(){o.current&&o.current.deactivate(),o.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),this.keycharm.bind("esc",this.escListener)},o.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),this.keycharm.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},o.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={moment:a,locales:h,locale:"en",id:void 0,title:void 0},this.options=s.extend({},this.defaultOptions),e&&e.time?this.customTime=e.time:this.customTime=new Date,this.eventParams={},this.setOptions(e),this._create()}var n=i(112),s=i(1),r=i(128),a=i(82),h=i(145);o.prototype=new r,o.prototype.setOptions=function(t){t&&s.selectiveExtend(["moment","locale","locales","id"],this.options,t)},o.prototype._create=function(){function t(t){this.body.range._onMouseWheel(t)}var e=document.createElement("div");e["custom-time"]=this,e.className="vis-custom-time "+(this.options.id||""),e.style.position="absolute",e.style.top="0px",e.style.height="100%",this.bar=e;var i=document.createElement("div");i.style.position="relative",i.style.top="0px",i.style.left="-10px",i.style.height="100%",i.style.width="20px",i.addEventListener?(i.addEventListener("mousewheel",t.bind(this),!1),i.addEventListener("DOMMouseScroll",t.bind(this),!1)):i.attachEvent("onmousewheel",t.bind(this)),e.appendChild(i),this.hammer=new n(i),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:n.DIRECTION_HORIZONTAL})},o.prototype.destroy=function(){this.hide(),this.hammer.destroy(),this.hammer=null,this.body=null},o.prototype.redraw=function(){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline/#Localization"),this.warned=!0),i=this.options.locales.en);var o=this.options.title;return void 0===o?(o=i.time+": "+this.options.moment(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss"),o=o.charAt(0).toUpperCase()+o.substring(1)):"function"==typeof o&&(o=o.call(this.customTime)),this.bar.style.left=e+"px",this.bar.title=o,!1},o.prototype.hide=function(){this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar)},o.prototype.setCustomTime=function(t){this.customTime=s.convert(t,"Date"),this.redraw()},o.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},o.prototype.setCustomTitle=function(t){this.options.title=t},o.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation()},o.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=this.body.util.toScreen(this.eventParams.customTime)+t.deltaX,i=this.body.util.toTime(e);this.setCustomTime(i),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf()),event:s.elementsCensor(t)}),t.stopPropagation()}},o.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf()),event:s.elementsCensor(t)}),t.stopPropagation())},o.customTimeFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("custom-time"))return e["custom-time"];e=e.parentNode}return null},t.exports=o},function(t,e){e.en={current:"current",time:"time"},e.en_EN=e.en,e.en_US=e.en,e.it={current:"attuale",time:"tempo"},e.it_IT=e.it,e.it_CH=e.it,e.nl={current:"huidige",time:"tijd"},e.nl_NL=e.nl,e.nl_BE=e.nl,e.de={current:"Aktuelle",time:"Zeit"},e.de_DE=e.de,e.fr={current:"actuel",time:"heure"},e.fr_FR=e.fr,e.fr_CA=e.fr,e.fr_BE=e.fr,e.es={current:"corriente",time:"hora"},e.es_ES=e.es},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={rtl:!1,showCurrentTime:!0,moment:r,locales:a,locale:"en"},this.options=n.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var n=i(1),s=i(128),r=i(82),a=i(145);o.prototype=new s,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},o.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},o.prototype.setOptions=function(t){t&&n.selectiveExtend(["rtl","showCurrentTime","moment","locale","locales"],this.options,t)},o.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=this.options.moment((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),o=this.options.locales[this.options.locale];o||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline/#Localization"),this.warned=!0),o=this.options.locales.en);var n=o.current+" "+o.time+": "+e.format("dddd, MMMM Do YYYY, H:mm:ss");n=n.charAt(0).toUpperCase()+n.substring(1),this.options.rtl?this.bar.style.right=i+"px":this.bar.style.left=i+"px",this.bar.title=n}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},o.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,o=1/i/10;o<30&&(o=30),o>1e3&&(o=1e3),e.redraw(),e.body.emitter.emit("currentTimeTick"),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="object",r={configure:{enabled:{boolean:o},filter:{boolean:o,function:"function"},container:{dom:"dom"},__type__:{object:s,boolean:o,function:"function"}},align:{string:i},rtl:{boolean:o,undefined:"undefined"},rollingMode:{boolean:o,undefined:"undefined"},verticalScroll:{boolean:o,undefined:"undefined"},horizontalScroll:{boolean:o,undefined:"undefined"},autoResize:{boolean:o},throttleRedraw:{number:n},clickToUse:{boolean:o},dataAttributes:{string:i,array:"array"},editable:{add:{boolean:o,undefined:"undefined"},remove:{boolean:o,undefined:"undefined"},updateGroup:{boolean:o,undefined:"undefined"},updateTime:{boolean:o,undefined:"undefined"},overrideItems:{boolean:o,undefined:"undefined"},__type__:{boolean:o,object:s}},end:{number:n,date:"date",string:i,moment:"moment"},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:s,function:"function"}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:s,function:"function"}},__type__:{object:s}},moment:{function:"function"},groupOrder:{string:i,function:"function"},groupEditable:{add:{boolean:o,undefined:"undefined"},remove:{boolean:o,undefined:"undefined"},order:{boolean:o,undefined:"undefined"},__type__:{boolean:o,object:s}},groupOrderSwap:{function:"function"},height:{string:i,number:n},hiddenDates:{start:{date:"date",number:n,string:i,moment:"moment"},end:{date:"date",number:n,string:i,moment:"moment"},repeat:{string:i},__type__:{object:s,array:"array"}},itemsAlwaysDraggable:{boolean:o},locale:{string:i},locales:{__any__:{any:"any"},__type__:{object:s}},margin:{axis:{number:n},item:{horizontal:{number:n,undefined:"undefined"},vertical:{number:n,undefined:"undefined"},__type__:{object:s,number:n}},__type__:{object:s,number:n}},max:{date:"date",number:n,string:i,moment:"moment"},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:"date",number:n,string:i,moment:"moment"},minHeight:{number:n,string:i},moveable:{boolean:o},multiselect:{boolean:o},multiselectPerGroup:{boolean:o},onAdd:{function:"function"},onUpdate:{function:"function"},onMove:{function:"function"},onMoving:{function:"function"},onRemove:{function:"function"},onAddGroup:{function:"function"},onMoveGroup:{function:"function"},onRemoveGroup:{function:"function"},order:{function:"function"},orientation:{axis:{string:i,undefined:"undefined"},item:{string:i,undefined:"undefined"},__type__:{string:i,object:s}},selectable:{boolean:o},showCurrentTime:{boolean:o},showMajorLabels:{boolean:o},showMinorLabels:{boolean:o},stack:{boolean:o},stackSubgroups:{boolean:o},snap:{function:"function",null:"null"},start:{date:"date",number:n,string:i,moment:"moment"},template:{function:"function"},groupTemplate:{function:"function"},visibleFrameTemplate:{string:i,function:"function"},tooltip:{followMouse:{boolean:o},overflowMethod:{string:["cap","flip"]},__type__:{object:s}},tooltipOnItemUpdateTime:{template:{function:"function"},__type__:{boolean:o,object:s}},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:s}},type:{string:i},width:{string:i,number:n},zoomable:{boolean:o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},__type__:{object:s}},a={global:{align:["center","left","right"],direction:!1,autoResize:!0,clickToUse:!1,editable:{add:!1,remove:!1,updateGroup:!1,updateTime:!1},end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},groupsDraggable:!1,height:"",locale:"",margin:{axis:[20,0,100,1],item:{horizontal:[10,0,100,1],vertical:[10,0,100,1]}},max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!1,multiselect:!1,multiselectPerGroup:!1,orientation:{axis:["both","bottom","top"],item:["bottom","top"]},selectable:!0,showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,stack:!0,stackSubgroups:!0,start:"",tooltip:{followMouse:!1,overflowMethod:"flip"},tooltipOnItemUpdateTime:!1,type:["box","point","range","background"],width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1]}};e.allOptions=r,e.configureOptions=a},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i,o){if(!(Array.isArray(i)||i instanceof u||i instanceof c)&&i instanceof Object){var n=o;o=i,i=n}o&&o.throttleRedraw&&console.warn('Graph2d option "throttleRedraw" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.');var s=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},moment:d,width:null,height:null,maxHeight:null,minHeight:null},this.options=l.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:s._toScreen.bind(s),toGlobalScreen:s._toGlobalScreen.bind(s),toTime:s._toTime.bind(s),toGlobalTime:s._toGlobalTime.bind(s)}},this.range=new p(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new m(this.body),this.components.push(this.timeAxis),this.currentTime=new v(this.body),this.components.push(this.currentTime),this.linegraph=new y(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){s.emit("click",s.getEventProperties(t))}),this.on("doubletap",function(t){s.emit("doubleClick",s.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){s.emit("contextmenu",s.getEventProperties(t))},o&&this.setOptions(o),i&&this.setGroups(i),e&&this.setItems(e),this._redraw()}var s=i(118),r=o(s),a=i(126),h=o(a),d=(i(99),i(112),i(82)),l=i(1),u=i(89),c=i(93),p=i(127),f=i(130),m=i(142),v=i(146),g=i(144),y=i(149),b=i(126).printStyle,_=i(157).allOptions,w=i(157).configureOptions;n.prototype=new f,n.prototype.setOptions=function(t){h.default.validate(t,_)===!0&&console.log("%cErrors have been found in the supplied options object.",b),f.prototype.setOptions.call(this,t)},n.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof u||t instanceof c?t:new u(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},n.prototype.setGroups=function(t){var e;e=t?t instanceof u||t instanceof c?t:new u(t):null,this.groupsData=e,this.linegraph.setGroups(e)},n.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:'"+t+"'"},n.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]&&(this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]))},n.prototype.getDataRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var o=0;os?s:t,e=null==e?s:e0&&d.push(u.screenToValue(n)),!c.hidden&&this.itemsData.length>0&&d.push(c.screenToValue(n)),{event:t,what:h,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:s,value:d}},n.prototype._createConfigurator=function(){return new r.default(this,this.dom.container,w)},t.exports=n},function(t,e,i){function o(t,e){this.id=r.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,stack:!1,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,sideBySide:!1,align:"center"},interpolation:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{},legend:{},groups:{visibility:{}}},this.options=r.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1,this.forceGraphUpdate=!0;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=r.option.asSize(-i.props.width),i.forceGraphUpdate=!0,i.redraw.call(i)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups}}var n=i(62),s=function(t){return t&&t.__esModule?t:{default:t}}(n),r=i(1),a=i(88),h=i(89),d=i(93),l=i(128),u=i(150),c=i(152),p=i(156),f=i(153),m=i(155),v=i(154);o.prototype=new l,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-line-graph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new u(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new u(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new p(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new p(this.body,this.options.legend,"right",this.options.groups),this.show()},o.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","stack","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var r={};for(this._getRelevantData(s,r,o,n),this._applySampling(s,r),e=0;e0)switch(t.options.style){case"line":d.hasOwnProperty(s[e])||(d[s[e]]=m.calcPath(r[s[e]],t)),m.draw(d[s[e]],t,this.framework);case"point":case"points":"point"!=t.options.style&&"points"!=t.options.style&&1!=t.options.drawPoints.enabled||v.draw(r[s[e]],t,this.framework);break;case"bar":}}}return a.cleanupElements(this.svgElements),!1},o.prototype._stack=function(t,e){var i,o,n,s,r;i=0;for(var a=0;at[a].x){r=e[h],s=0==h?r:e[h-1],i=h;break}}void 0===r&&(s=e[e.length-1],r=e[e.length-1]),o=r.x-s.x,n=r.y-s.y,t[a].y=0==o?t[a].orginalY+r.y:t[a].orginalY+n/o*(t[a].x-s.x)+s.y}},o.prototype._getRelevantData=function(t,e,i,o){var n,s,a,h;if(t.length>0)for(s=0;s0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=new Array(r),l=0;l0){for(s=0;s0&&(n=this.groups[t[s]],r.stack===!0&&"bar"===r.style?"left"===r.yAxisOrientation?a=a.concat(o):h=h.concat(o):i[t[s]]=n.getYRange(o,t[s]));f.getStackedYRange(a,i,t,"__barStackLeft","left"),f.getStackedYRange(h,i,t,"__barStackRight","right")}},o.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=di?i:h,l=l=0&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-major",t.props.majorCharHeight),t.master===!0&&(n?t._redrawLine(o,i,"vis-grid vis-horizontal vis-major",t.options.majorLinesOffset,t.props.majorLineWidth):t._redrawLine(o,i,"vis-grid vis-horizontal vis-minor",t.options.minorLinesOffset,t.props.minorLineWidth))});var r=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(r=this.props.titleCharHeight);var h=this.options.icons===!0?Math.max(this.options.iconWidth,r)+this.options.labelOffsetX+15:r+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-h&&this.options.visible===!0?(this.width=this.maxLabelSize+h,this.options.width=this.width+"px",a.cleanupElements(this.DOMelements.lines),a.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+h),this.options.width=this.width+"px",a.cleanupElements(this.DOMelements.lines),a.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):(a.cleanupElements(this.DOMelements.lines),a.cleanupElements(this.DOMelements.labels),e=!1),e},o.prototype.convertValue=function(t){return this.scale.convertValue(t)},o.prototype.screenToValue=function(t){return this.scale.screenToValue(t)},o.prototype._redrawLabel=function(t,e,i,o,n){var s=a.getDOMElement("div",this.DOMelements.labels,this.dom.frame);s.className=o,s.innerHTML=e,"left"===i?(s.style.left="-"+this.options.labelOffsetX+"px",s.style.textAlign="right"):(s.style.right="-"+this.options.labelOffsetX+"px",s.style.textAlign="left"),s.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var r=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize6&&void 0!==arguments[6]&&arguments[6],a=arguments.length>7&&void 0!==arguments[7]&&arguments[7];if(this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.customLines=null,this.containerHeight=n,this.majorCharHeight=s,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=o,this.formattingFunction=a,i||o){var h=this,d=function(t){var e=t-t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx]);return t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx])>h.magnitudefactor*h.minorSteps[h.minorStepIdx]*.5?e+h.magnitudefactor*h.minorSteps[h.minorStepIdx]:e};i&&(this._start-=2*this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._start=d(this._start)),o&&(this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._end=d(this._end)),this.determineScale()}}i.prototype.setCharHeight=function(t){this.majorCharHeight=t},i.prototype.setHeight=function(t){this.containerHeight=t},i.prototype.determineScale=function(){var t=this._end-this._start;this.scale=this.containerHeight/t;var 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);var o=0;i<0&&(o=i);for(var n=!1,s=o;Math.abs(s)<=Math.abs(i);s++){this.magnitudefactor=Math.pow(10,s);for(var r=0;r=e){n=!0,this.minorStepIdx=r;break}}if(n===!0)break}},i.prototype.is_major=function(t){return t%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])==0},i.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]},i.prototype.getFirstMajor=function(){var t=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(t-this._start%t)%t)},i.prototype.formatValue=function(t){var e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?""+e:"string"==typeof e?e:t.toPrecision(5)},i.prototype.getLines=function(){for(var t=[],e=this.getStep(),i=(e-this._start%e)%e,o=this._start+i;this._end-o>1e-5;o+=e)o!=this._start&&t.push({major:this.is_major(o),y:this.convertValue(o),val:this.formatValue(o)});return t},i.prototype.followScale=function(t){var e=this.minorStepIdx,i=this._start,o=this._end,n=this,s=function(){n.magnitudefactor*=2},r=function(){n.magnitudefactor/=2};t.minorStepIdx<=1&&this.minorStepIdx<=1||t.minorStepIdx>1&&this.minorStepIdx>1||(t.minorStepIdxo+1e-5)r(),d=!1;else{if(!this.autoScaleStart&&this._start=0)){r(),d=!1;continue}console.warn("Can't adhere to given 'min' range, due to zeroalign")}this.autoScaleStart&&this.autoScaleEnd&&ue.x?1:-1})):this.itemsData=[]},o.prototype.getItems=function(){return this.itemsData},o.prototype.setZeroPosition=function(t){this.zeroPosition=t},o.prototype.setOptions=function(t){if(void 0!==t){var e=["sampling","style","sort","yAxisOrientation","barChart","zIndex","excludeFromStacking","excludeFromLegend"];r.selectiveDeepExtend(e,this.options,t),"function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),r.mergeOptions(this.options,t,"interpolation"),r.mergeOptions(this.options,t,"drawPoints"),r.mergeOptions(this.options,t,"shaded"),t.interpolation&&"object"==(0,s.default)(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5))}},o.prototype.update=function(t){this.group=t,this.content=t.content||"graph",this.className=t.className||this.className||"vis-graph-group"+this.groupsUsingDefaultStyles[0]%10,this.visible=void 0===t.visible||t.visible,this.style=t.style,this.setOptions(t.options)},o.prototype.getLegend=function(t,e,i,o,n){if(void 0==i||null==i){i={svg:document.createElementNS("http://www.w3.org/2000/svg","svg"),svgElements:{},options:this.options,groups:[this]}}switch(void 0!=o&&null!=o||(o=0),void 0!=n&&null!=n||(n=.5*e),this.options.style){case"line":h.drawIcon(this,o,n,t,e,i);break;case"points":case"point":d.drawIcon(this,o,n,t,e,i);break;case"bar":a.drawIcon(this,o,n,t,e,i)}return{icon:i.svg,label:this.content,orientation:this.options.yAxisOrientation}},o.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,o=0;ot[o].y?t[o].y:e,i=i0&&(i=Math.min(i,Math.abs(e[o-1].screen_x-e[o].screen_x))),0===i&&(void 0===t[e[o].screen_x]&&(t[e[o].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].screen_x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=t0){t.sort(function(t,e){return t.screen_x===e.screen_x?t.groupIde[s].screen_y?e[s].screen_y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n0){return 1==e.options.interpolation.enabled?o._catmullRom(t,e):o._linear(t)}},o.drawIcon=function(t,e,i,o,s,r){var a,h,d=.5*s,l=n.getSVGElement("rect",r.svgElements,r.svg);if(l.setAttributeNS(null,"x",e),l.setAttributeNS(null,"y",i-d),l.setAttributeNS(null,"width",o),l.setAttributeNS(null,"height",2*d),l.setAttributeNS(null,"class","vis-outline"),a=n.getSVGElement("path",r.svgElements,r.svg),a.setAttributeNS(null,"class",t.className),void 0!==t.style&&a.setAttributeNS(null,"style",t.style),a.setAttributeNS(null,"d","M"+e+","+i+" L"+(e+o)+","+i),1==t.options.shaded.enabled&&(h=n.getSVGElement("path",r.svgElements,r.svg),"top"==t.options.shaded.orientation?h.setAttributeNS(null,"d","M"+e+", "+(i-d)+"L"+e+","+i+" L"+(e+o)+","+i+" L"+(e+o)+","+(i-d)):h.setAttributeNS(null,"d","M"+e+","+i+" L"+e+","+(i+d)+" L"+(e+o)+","+(i+d)+"L"+(e+o)+","+i),h.setAttributeNS(null,"class",t.className+" vis-icon-fill"),void 0!==t.options.shaded.style&&""!==t.options.shaded.style&&h.setAttributeNS(null,"style",t.options.shaded.style)),1==t.options.drawPoints.enabled){var u={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size,className:t.className};n.drawPoint(e+.5*o,i,u,r.svgElements,r.svg)}},o.drawShading=function(t,e,i,o){if(1==e.options.shaded.enabled){var s=Number(o.svg.style.height.replace("px","")),r=n.getSVGElement("path",o.svgElements,o.svg),a="L";1==e.options.interpolation.enabled&&(a="C");var h,d=0;d="top"==e.options.shaded.orientation?0:"bottom"==e.options.shaded.orientation?s:Math.min(Math.max(0,e.zeroPosition),s),h="group"==e.options.shaded.orientation&&null!=i&&void 0!=i?"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" L"+i[i.length-1][0]+","+i[i.length-1][1]+" "+this.serializePath(i,a,!0)+i[0][0]+","+i[0][1]+" Z":"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" V"+d+" H"+t[0][0]+" Z",r.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&r.setAttributeNS(null,"style",e.options.shaded.style),r.setAttributeNS(null,"d",h)}},o.draw=function(t,e,i){if(null!=t&&void 0!=t){var o=n.getSVGElement("path",i.svgElements,i.svg);o.setAttributeNS(null,"class",e.className),void 0!==e.style&&o.setAttributeNS(null,"style",e.style);var s="L";1==e.options.interpolation.enabled&&(s="C"),o.setAttributeNS(null,"d","M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,s,!1))}},o.serializePath=function(t,e,i){if(t.length<2)return"";var o=e;if(i)for(var n=t.length-2;n>0;n--)o+=t[n][0]+","+t[n][1]+" ";else for(var n=1;n0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={screen_x:(-b*o.screen_x+c*n.screen_x+_*s.screen_x)*f,screen_y:(-b*o.screen_y+c*n.screen_y+_*s.screen_y)*f},h={screen_x:(y*n.screen_x+p*s.screen_x-b*r.screen_x)*m,screen_y:(y*n.screen_y+p*s.screen_y-b*r.screen_y)*m},0==a.screen_x&&0==a.screen_y&&(a=n),0==h.screen_x&&0==h.screen_y&&(h=s),x.push([a.screen_x,a.screen_y]),x.push([h.screen_x,h.screen_y]),x.push([s.screen_x,s.screen_y]);return x},o._linear=function(t){for(var e=[],i=0;i")}this.dom.textArea.innerHTML=r,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},o.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=(0,s.default)(this.groups);t.sort(function(t,e){return t0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var o=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[o],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e.default=d},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(119),s=o(n),r=i(120),a=o(r),h=i(163),d=o(h),l=i(164),u=o(l),c=i(1),p=i(89),f=i(93),m=function(){function t(e,i,o,n){var r=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.layoutEngine=n,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(t,e){r.add(e.items)},update:function(t,e){r.update(e.items,e.data)},remove:function(t,e){r.remove(e.items)}},this.options={},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1},size:25,title:void 0,value:void 0,x:void 0,y:void 0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){c.forEach(t.nodesListeners,function(e,i){t.body.data.nodes&&t.body.data.nodes.off(i,e)}),delete t.body.functions.createNode,delete t.nodesListeners.add,delete t.nodesListeners.update,delete t.nodesListeners.remove,delete t.nodesListeners})}},{key:"setOptions",value:function(t){if(this.nodeOptions=t,void 0!==t){if(d.default.parseOptions(this.options,t),void 0!==t.shape)for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&this.body.nodes[e].updateShape();if(void 0!==t.font){u.default.parseOptions(this.options.font,t);for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&(this.body.nodes[i].updateLabelModule(),this.body.nodes[i]._reset())}if(void 0!==t.size)for(var o in this.body.nodes)this.body.nodes.hasOwnProperty(o)&&this.body.nodes[o]._reset();void 0===t.hidden&&void 0===t.physics||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.data.nodes;if(t instanceof p||t instanceof f)this.body.data.nodes=t;else if(Array.isArray(t))this.body.data.nodes=new p,this.body.data.nodes.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new p}if(i&&c.forEach(this.nodesListeners,function(t,e){i.off(e,t)}),this.body.nodes={},this.body.data.nodes){var o=this;c.forEach(this.nodesListeners,function(t,e){o.body.data.nodes.on(e,t)});var n=this.body.data.nodes.getIds();this.add(n,!0)}e===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:d.default)(t,this.body,this.images,this.groups,this.options,this.defaultOptions,this.nodeOptions)}},{key:"refresh",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.body.nodes;for(var i in e){var o=void 0;e.hasOwnProperty(i)&&(o=e[i]);var n=this.body.data.nodes._data[i];void 0!==o&&void 0!==n&&(t===!0&&o.setOptions({x:null,y:null}),o.setOptions({fixed:!1}),o.setOptions(n))}}},{key:"getPositions",value:function(t){var e={};if(void 0!==t){if(Array.isArray(t)===!0){for(var i=0;it.left&&this.shape.topt.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=["color","font","fixed","shadow"];if(H.selectiveNotDeepExtend(n,t,e,i),H.mergeOptions(t,e,"shadow",i,o),void 0!==e.color&&null!==e.color){var s=H.parseColor(e.color);H.fillIfDefined(t.color,s)}else i===!0&&null===e.color&&(t.color=H.bridgeObject(o.color));void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y))),void 0!==e.font&&null!==e.font?u.default.parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=H.bridgeObject(o.font)),void 0!==e.scaling&&H.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)}}]),t}();e.default=W},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(165),s=o(n),r=i(2),a=o(r),h=i(62),d=o(h),l=i(119),u=o(l),c=i(120),p=o(c),f=i(1),m=function(){function t(e,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,u.default)(this,t),this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=o}return(0,p.default)(t,[{key:"setOptions",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.elementOptions=e,this.fontOptions=f.deepExtend({},e.font,!0),void 0!==e.label&&(this.labelDirty=!0),void 0!==e.font&&(t.parseOptions(this.fontOptions,e,i),"string"==typeof e.font?this.baseSize=this.fontOptions.size:"object"===(0,d.default)(e.font)&&void 0!==e.font.size&&(this.baseSize=e.font.size))}},{key:"constrain",value:function(t,e,i){this.fontOptions.constrainWidth=!1,this.fontOptions.maxWdt=-1,this.fontOptions.minWdt=-1;var o=[e,t,i],n=f.topMost(o,"widthConstraint");if("number"==typeof n)this.fontOptions.maxWdt=Number(n),this.fontOptions.minWdt=Number(n);else if("object"===(void 0===n?"undefined":(0,d.default)(n))){var s=f.topMost(o,["widthConstraint","maximum"]);"number"==typeof s&&(this.fontOptions.maxWdt=Number(s));var r=f.topMost(o,["widthConstraint","minimum"]);"number"==typeof r&&(this.fontOptions.minWdt=Number(r))}this.fontOptions.constrainHeight=!1,this.fontOptions.minHgt=-1,this.fontOptions.valign="middle";var a=f.topMost(o,"heightConstraint");if("number"==typeof a)this.fontOptions.minHgt=Number(a);else if("object"===(void 0===a?"undefined":(0,d.default)(a))){var h=f.topMost(o,["heightConstraint","minimum"]);"number"==typeof h&&(this.fontOptions.minHgt=Number(h));var l=f.topMost(o,["heightConstraint","valign"]);"string"==typeof l&&("top"!==l&&"bottom"!==l||(this.fontOptions.valign=l))}}},{key:"choosify",value:function(t,e,i){this.fontOptions.chooser=!0;var o=[e,t,i],n=f.topMost(o,"chosen");if("boolean"==typeof n)this.fontOptions.chooser=n;else if("object"===(void 0===n?"undefined":(0,d.default)(n))){var s=f.topMost(o,["chosen","label"]);"boolean"!=typeof s&&"function"!=typeof s||(this.fontOptions.chooser=s)}}},{key:"adjustSizes",value:function(t){var e=t?t.right+t.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=e,this.fontOptions.minWdt-=e);var i=t?t.top+t.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}},{key:"propagateFonts",value:function(t,e,i){if(this.fontOptions.multi){var o=["bold","ital","boldital","mono"],n=!0,s=!1,r=void 0;try{for(var h,d=(0,a.default)(o);!(n=(h=d.next()).done);n=!0){var l=h.value,u=void 0;if(t.font&&(u=t.font[l]),"string"==typeof u){var c=u.split(" ");this.fontOptions[l].size=c[0].replace("px",""),this.fontOptions[l].face=c[1],this.fontOptions[l].color=c[2],this.fontOptions[l].vadjust=this.fontOptions.vadjust,this.fontOptions[l].mod=i.font[l].mod}else{if(u&&u.hasOwnProperty("face")?this.fontOptions[l].face=u.face:e.font&&e.font[l]&&e.font[l].hasOwnProperty("face")?this.fontOptions[l].face=e.font[l].face:"mono"===l?this.fontOptions[l].face=i.font[l].face:e.font&&e.font.hasOwnProperty("face")?this.fontOptions[l].face=e.font.face:this.fontOptions[l].face=this.fontOptions.face,u&&u.hasOwnProperty("color")?this.fontOptions[l].color=u.color:e.font&&e.font[l]&&e.font[l].hasOwnProperty("color")?this.fontOptions[l].color=e.font[l].color:e.font&&e.font.hasOwnProperty("color")?this.fontOptions[l].color=e.font.color:this.fontOptions[l].color=this.fontOptions.color,u&&u.hasOwnProperty("mod")?this.fontOptions[l].mod=u.mod:e.font&&e.font[l]&&e.font[l].hasOwnProperty("mod")?this.fontOptions[l].mod=e.font[l].mod:e.font&&e.font.hasOwnProperty("mod")?this.fontOptions[l].mod=e.font.mod:this.fontOptions[l].mod=i.font[l].mod,u&&u.hasOwnProperty("size"))this.fontOptions[l].size=u.size;else if(e.font&&e.font[l]&&e.font[l].hasOwnProperty("size"))this.fontOptions[l].size=e.font[l].size;else if(this.fontOptions[l].face===i.font[l].face&&this.fontOptions.face===i.font.face){var p=this.fontOptions.size/Number(i.font.size);this.fontOptions[l].size=i.font[l].size*p}else e.font&&e.font.hasOwnProperty("size")?this.fontOptions[l].size=e.font.size:this.fontOptions[l].size=this.fontOptions.size;if(u&&u.hasOwnProperty("vadjust"))this.fontOptions[l].vadjust=u.vadjust;else if(e.font&&e.font[l]&&e.font[l].hasOwnProperty("vadjust"))this.fontOptions[l].vadjust=e.font[l].vadjust;else if(this.fontOptions[l].face===i.font[l].face&&this.fontOptions.face===i.font.face){var f=this.fontOptions.size/Number(i.font.size);this.fontOptions[l].vadjust=i.font[l].vadjust*Math.round(f)}else e.font&&e.font.hasOwnProperty("vadjust")?this.fontOptions[l].vadjust=e.font.vadjust:this.fontOptions[l].vadjust=this.fontOptions.vadjust}this.fontOptions[l].size=Number(this.fontOptions[l].size),this.fontOptions[l].vadjust=Number(this.fontOptions[l].vadjust)}}catch(t){s=!0,r=t}finally{try{!n&&d.return&&d.return()}finally{if(s)throw r}}}}},{key:"draw",value:function(t,e,i,o,n){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";if(void 0!==this.elementOptions.label){var r=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&r5&&void 0!==arguments[5]?arguments[5]:"middle",a=this.fontOptions.size,h=a*this.body.view.scale;h>=this.elementOptions.scaling.label.maxVisible&&(a=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale);var d=this.size.yLine,l=this._setAlignment(t,o,d,r),u=(0,s.default)(l,2);o=u[0],d=u[1],t.textAlign="left",o-=this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&("top"===this.fontOptions.valign&&(d-=(this.size.height-this.size.labelHeight)/2),"bottom"===this.fontOptions.valign&&(d+=(this.size.height-this.size.labelHeight)/2));for(var c=0;c0&&(t.lineWidth=m.strokeWidth,t.strokeStyle=b,t.lineJoin="round"),t.fillStyle=y,m.strokeWidth>0&&t.strokeText(m.text,o+p,d+m.vadjust),t.fillText(m.text,o+p,d+m.vadjust),p+=m.width}d+=this.lines[c].height}}},{key:"_setAlignment",value:function(t,e,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&this.pointToSelf===!1){e=0,i=0;"top"===this.fontOptions.align?(t.textBaseline="alphabetic",i-=4):"bottom"===this.fontOptions.align?(t.textBaseline="hanging",i+=4):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t,e,i){var o=t||"#000000",n=i||"#ffffff";if(e<=this.elementOptions.scaling.label.drawThreshold){var s=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-e)));o=f.overrideOpacity(o,s),n=f.overrideOpacity(n,s)}return[o,n]}},{key:"getTextSize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._processLabel(t,e,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:"calculateLabelSize",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";this.labelDirty===!0&&this._processLabel(t,e,i),this.size.left=o-.5*this.size.width,this.size.top=n-.5*this.size.height,this.size.yLine=n+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===s&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"decodeMarkupSystem",value:function(t){var e="none";return"markdown"===t||"md"===t?e="markdown":t!==!0&&"html"!==t||(e="html"),e}},{key:"splitBlocks",value:function(t,e){var i=this.decodeMarkupSystem(e);return"none"===i?[{text:t,mod:"normal"}]:"markdown"===i?this.splitMarkdownBlocks(t):"html"===i?this.splitHtmlBlocks(t):void 0}},{key:"splitMarkdownBlocks",value:function(t){var e=[],i={bold:!1,ital:!1,mono:!1,beginable:!0,spacing:!1,position:0,buffer:"",modStack:[]};for(i.mod=function(){return 0===this.modStack.length?"normal":this.modStack[0]},i.modName=function(){return 0===this.modStack.length?"normal":"mono"===this.modStack[0]?"mono":i.bold&&i.ital?"boldital":i.bold?"bold":i.ital?"ital":void 0},i.emitBlock=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position/.test(t.substr(i.position,3))?i.mono||i.ital||!//.test(t.substr(i.position,3))?!i.mono&&//.test(t.substr(i.position,6))?(i.emitBlock(),i.mono=!0,i.modStack.unshift("mono"),i.position+=5):!i.mono&&"bold"===i.mod()&&/<\/b>/.test(t.substr(i.position,4))?(i.emitBlock(),i.bold=!1,i.modStack.shift(),i.position+=3):!i.mono&&"ital"===i.mod()&&/<\/i>/.test(t.substr(i.position,4))?(i.emitBlock(),i.ital=!1,i.modStack.shift(),i.position+=3):"mono"===i.mod()&&/<\/code>/.test(t.substr(i.position,7))?(i.emitBlock(),i.mono=!1,i.modStack.shift(),i.position+=6):i.add(o):(i.emitBlock(),i.ital=!0,i.modStack.unshift("ital"),i.position+=2):(i.emitBlock(),i.bold=!0,i.modStack.unshift("bold"),i.position+=2):/&/.test(o)?/</.test(t.substr(i.position,4))?(i.add("<"),i.position+=3):/&/.test(t.substr(i.position,5))?(i.add("&"),i.position+=4):i.add("&"):i.add(o),i.position++}return i.emitBlock(),e}},{key:"getFormattingValues",value:function(t,e,i,o){var n={color:"normal"===o?this.fontOptions.color:this.fontOptions[o].color,size:"normal"===o?this.fontOptions.size:this.fontOptions[o].size,face:"normal"===o?this.fontOptions.face:this.fontOptions[o].face,mod:"normal"===o?"":this.fontOptions[o].mod,vadjust:"normal"===o?this.fontOptions.vadjust:this.fontOptions[o].vadjust,strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};return"normal"===o?(e||i)&&(this.fontOptions.chooser===!0&&this.elementOptions.labelHighlightBold?n.mod="bold":"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(t,n,this.elementOptions.id,e,i)):(e||i)&&"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(t,n,this.elementOptions.id,e,i),t.font=(n.mod+" "+n.size+"px "+n.face).replace(/"/g,""),n.font=t.font,n.height=n.size,n}},{key:"differentState",value:function(t,e){return t!==this.fontOptions.selectedState&&e!==this.fontOptions.hoverState}},{key:"_processLabel",value:function(t,e,i){var o=0,n=0,s=[],r=0;if(s.add=function(t,e,i,o,n,s,r,a,h,d){this.length==t&&(this[t]={width:0,height:0,blocks:[]}),this[t].blocks.push({text:e,font:i,color:o,width:n,height:s,vadjust:r,mod:a,strokeWidth:h,strokeColor:d})},s.accumulate=function(t,e,i){this[t].width+=e,this[t].height=i>this[t].height?i:this[t].height},s.addAndAccumulate=function(t,e,i,o,n,s,r,a,h,d){this.add(t,e,i,o,n,s,r,a,h,d),this.accumulate(t,n,s)},void 0!==this.elementOptions.label){var a=String(this.elementOptions.label).split("\n"),h=a.length;if(this.elementOptions.font.multi)for(var d=0;d0)for(var m=this.getFormattingValues(t,e,i,l[f].mod),v=l[f].text.split(" "),g=!0,y="",b={width:0},_=void 0,w=0;wthis.fontOptions.maxWdt&&0!=_.width?(c=m.height>c?m.height:c,s.add(r,y,m.font,m.color,_.width,m.height,m.vadjust,l[f].mod,m.strokeWidth,m.strokeColor),s.accumulate(r,_.width,c),y="",g=!0,u=0,o=s[r].width>o?s[r].width:o,n+=s[r].height,r++):(y=y+x+v[w],w===v.length-1&&(c=m.height>c?m.height:c,u+=b.width,s.add(r,y,m.font,m.color,b.width,m.height,m.vadjust,l[f].mod,m.strokeWidth,m.strokeColor),s.accumulate(r,b.width,c),f===l.length-1&&(o=s[r].width>o?s[r].width:o,n+=s[r].height,r++)),w++,g=!1)}else{var k=this.getFormattingValues(t,e,i,l[f].mod),O=t.measureText(l[f].text);s.addAndAccumulate(r,l[f].text,k.font,k.color,O.width,k.height,k.vadjust,l[f].mod,k.strokeWidth,k.strokeColor),o=s[r].width>o?s[r].width:o,l.length-1===f&&(n+=s[r].height,r++)}}}else for(var S=0;S0)for(var M=a[S].split(" "),C="",T={width:0},E=void 0,P=0;Pthis.fontOptions.maxWdt&&0!=E.width?(s.addAndAccumulate(r,C,D.font,D.color,E.width,D.size,D.vadjust,"normal",D.strokeWidth,D.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,C="",r++):(C=C+I+M[P],P===M.length-1&&(s.addAndAccumulate(r,C,D.font,D.color,T.width,D.size,D.vadjust,"normal",D.strokeWidth,D.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,r++),P++)}else{var N=a[S],R=t.measureText(N);s.addAndAccumulate(r,N,D.font,D.color,R.width,D.size,D.vadjust,"normal",D.strokeWidth,D.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,r++}}}this.fontOptions.minWdt>0&&o0&&n2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e.font){var o=e.font.split(" ");t.size=o[0].replace("px",""),t.face=o[1],t.color=o[2],t.vadjust=0}else"object"===(0,d.default)(e.font)&&f.fillIfDefined(t,e.font,i);t.size=Number(t.size),t.vadjust=Number(t.vadjust)}}]),t}();e.default=m},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(166),s=o(n),r=i(2),a=o(r);e.default=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,h=(0,a.default)(t);!(o=(r=h.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(t){n=!0,s=t}finally{try{!o&&h.return&&h.return()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if((0,s.default)(Object(e)))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(t,e,i){t.exports={default:i(167),__esModule:!0}},function(t,e,i){i(4),i(50),t.exports=i(168)},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).isIterable=function(t){var e=Object(t);return void 0!==e[n]||"@@iterator"in e||s.hasOwnProperty(o(e))}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(179),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;(void 0===this.width||this.labelModule.differentState(e,i))&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=this.width/2)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,t.strokeStyle=s.borderColor,t.lineWidth=s.borderWidth,t.lineWidth/=this.body.view.scale,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=s.color,t.roundRect(this.left,this.top,this.width,this.height,s.borderRadius),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),s.borderWidth>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2;var s=this.options.shapeProperties.borderRadius;this.boundingBox.left=this.left-s,this.boundingBox.top=this.top-s,this.boundingBox.bottom=this.top+this.height+s,this.boundingBox.right=this.left+this.width+s}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}}]),e}(m.default);e.default=v},function(t,e,i){t.exports={default:i(171),__esModule:!0}},function(t,e,i){i(172),t.exports=i(17).Object.getPrototypeOf},function(t,e,i){var o=i(49),n=i(48);i(61)("getPrototypeOf",function(){return function(t){return n(o(t))}})},function(t,e,i){e.__esModule=!0;var o=i(62),n=function(t){return t&&t.__esModule?t:{default:t}}(o);e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":(0,n.default)(e))&&"function"!=typeof e?t:e}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(175),s=o(n),r=i(55),a=o(r),h=i(62),d=o(h);e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":(0,d.default)(e)));t.prototype=(0,a.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(s.default?(0,s.default)(t,e):t.__proto__=e)}},function(t,e,i){t.exports={default:i(176),__esModule:!0}},function(t,e,i){i(177),t.exports=i(17).Object.setPrototypeOf},function(t,e,i){var o=i(15);o(o.S,"Object",{setPrototypeOf:i(178).set})},function(t,e,i){var o=i(23),n=i(22),s=function(t,e){if(n(t),!o(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,o){try{o=i(18)(Function.call,i(78).f(Object.prototype,"__proto__").set,2),o(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,i){return s(t,i),e?t.__proto__=i:o(t,i),t}}({},!1):void 0),check:s}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(62),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=function(){function t(e,i,o){(0,a.default)(this,t),this.body=i,this.labelModule=o,this.setOptions(e),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.margin=void 0,this.boundingBox={top:0,left:0,right:0,bottom:0}}return(0,d.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"_setMargins",value:function(t){this.margin={},this.options.margin&&("object"==(0,s.default)(this.options.margin)?(this.margin.top=this.options.margin.top,this.margin.right=this.options.margin.right,this.margin.bottom=this.options.margin.bottom,this.margin.left=this.options.margin.left):(this.margin.top=this.options.margin,this.margin.right=this.options.margin,this.margin.bottom=this.options.margin,this.margin.left=this.options.margin)),t.adjustSizes(this.margin)}},{key:"_distanceToBorder",value:function(t,e){var i=this.options.borderWidth;return this.resize(t),Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}},{key:"enableShadow",value:function(t,e){e.shadow&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){e.shadow&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}},{key:"enableBorderDashes",value:function(t,e){if(e.borderDashes!==!1)if(void 0!==t.setLineDash){var i=e.borderDashes;i===!0&&(i=[5,15]),t.setLineDash(i) +}else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1}},{key:"disableBorderDashes",value:function(t,e){e.borderDashes!==!1&&(void 0!==t.setLineDash?t.setLineDash([0]):(console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1))}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.options.size;if(void 0===this.width||this.labelModule.differentState(e,i)){this.textSize=this.labelModule.getTextSize(t,e,i);var o=Math.max(this.textSize.width+this.margin.right+this.margin.left,this.textSize.height+this.margin.top+this.margin.bottom);this.options.size=o/2,this.width=o,this.height=o,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,o,n,s),this.boundingBox.top=i-s.size,this.boundingBox.left=e-s.size,this.boundingBox.right=e+s.size,this.boundingBox.bottom=i+s.size,this.updateBoundingBox(e,i),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,i,o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(179),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n.labelOffset=0,n.imageLoaded=!1,n.selected=!1,n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"setOptions",value:function(t,e,i){this.options=t,this.setImages(e,i)}},{key:"setImages",value:function(t,e){t&&(this.imageObj=t,e&&(this.imageObjAlt=e))}},{key:"switchImages",value:function(t){if(t&&!this.selected||!t&&this.selected){var e=this.imageObj;this.imageObj=this.imageObjAlt,this.imageObjAlt=e}this.selected=t}},{key:"_resizeImage",value:function(){var t=!1;if(this.imageObj.width&&this.imageObj.height?this.imageLoaded===!1&&(this.imageLoaded=!0,t=!0):this.imageLoaded=!1,!this.width||!this.height||t===!0){var e,i,o;this.imageObj.width&&this.imageObj.height&&(e=0,i=0),this.options.shapeProperties.useImageSize===!1?this.imageObj.width>this.imageObj.height?(o=this.imageObj.width/this.imageObj.height,e=2*this.options.size*o||this.imageObj.width,i=2*this.options.size||this.imageObj.height):(o=this.imageObj.width&&this.imageObj.height?this.imageObj.height/this.imageObj.width:1,e=2*this.options.size,i=2*this.options.size*o):(e=this.imageObj.width,i=this.imageObj.height),this.width=e,this.height=i,this.radius=.5*this.width}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.circle(e,i,s.size),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore()}},{key:"_drawImageAtPosition",value:function(t,e){if(0!=this.imageObj.width){t.globalAlpha=1,this.enableShadow(t,e);var i=this.imageObj.width/this.width/this.body.view.scale;if(i>2&&this.options.shapeProperties.interpolation===!0){var o=this.imageObj.width,n=this.imageObj.height,s=document.createElement("canvas");s.width=o,s.height=o;var r=s.getContext("2d");i*=.5,o*=.5,n*=.5,r.drawImage(this.imageObj,0,0,o,n);for(var a=0,h=1;i>2&&h<4;)r.drawImage(s,a,0,o,n,a+o,0,o/2,n/2),a+=o,i*=.5,o*=.5,n*=.5,h+=1;t.drawImage(s,a,0,o,n,this.left,this.top,this.width,this.height)}else t.drawImage(this.imageObj,this.left,this.top,this.width,this.height);this.disableShadow(t,e)}}},{key:"_drawImageLabel",value:function(t,e,i,o,n){var s,r=0;if(void 0!==this.height){r=.5*this.height;var a=this.labelModule.getTextSize(t,o,n);a.lineCount>=1&&(r+=a.height/2)}s=i+r,this.options.label&&(this.labelOffset=r),this.labelModule.draw(t,e,s,o,n,"hanging")}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o,n,r){(0,a.default)(this,e);var h=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return h.setImages(n,r),h._swapToImageResizeWhenImageLoaded=!0,h}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height||this.labelModule.differentState(e,i)){var o=2*this.options.size;this.width=o,this.height=o,this._swapToImageResizeWhenImageLoaded=!0,this.radius=.5*this.width}else this._swapToImageResizeWhenImageLoaded&&(this.width=void 0,this.height=void 0,this._swapToImageResizeWhenImageLoaded=!1),this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){this.imageObjAlt&&this.switchImages(o),this.resize(),this.left=e-this.width/2,this.top=i-this.height/2;Math.min(.5*this.height,.5*this.width);this._drawRawCircle(t,e,i,o,n,s),t.save(),t.clip(),this._drawImageAtPosition(t,s),t.restore(),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(179),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){if(void 0===this.width||this.labelModule.differentState(e,i)){this.textSize=this.labelModule.getTextSize(t,e,i);var o=this.textSize.width+this.margin.right+this.margin.left;this.width=o,this.height=o,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2;var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.database(e-this.width/2,i-this.height/2,this.width,this.height),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(185),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments[3];this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"diamond",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(179),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_resizeShape",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.selected,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.hover,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{size:this.options.size};if(void 0===this.width||this.labelModule.differentState(t,e)){var o=2*i.size;this.width=o,this.height=o,this.radius=.5*this.width}}},{key:"_drawShape",value:function(t,e,i,o,n,s,r,a){this._resizeShape(s,r,a),this.left=o-this.width/2,this.top=n-this.height/2;var h=a.borderWidth/this.body.view.scale;if(t.lineWidth=Math.min(this.width,h),t.strokeStyle=a.borderColor,t.fillStyle=a.color,t[e](o,n,a.size),this.enableShadow(t,a),t.fill(),this.disableShadow(t,a),t.save(),h>0&&(this.enableBorderDashes(t,a),t.stroke(),this.disableBorderDashes(t,a)),t.restore(),void 0!==this.options.label){var d=n+.5*this.height+3;this.labelModule.draw(t,o,d,s,r,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+3))}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(185),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments[3];this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"circle",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this.options.size}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(179),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.width||this.labelModule.differentState(e,i)){var o=this.labelModule.getTextSize(t,e,i);this.height=2*o.height,this.width=o.width+this.height,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-.5*this.width,this.top=i-.5*this.height;var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.ellipse(this.left,this.top,this.width,this.height),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,e,i,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(179),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){(void 0===this.width||this.labelModule.differentState(e,i))&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(t,o,n),this.options.icon.size=this.options.icon.size||50,this.left=e-this.width/2,this.top=i-this.height/2,this._icon(t,e,i,o,n,s),void 0!==this.options.label){this.labelModule.draw(t,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+5,o)}this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+5)}}},{key:"_icon",value:function(t,e,i,o,n,s){var r=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=(o?"bold ":"")+r+"px "+this.options.icon.face,t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t,s),t.fillText(this.options.icon.code,e,i),this.disableShadow(t,s)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o,n,r){(0,a.default)(this,e);var h=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return h.setImages(n,r),h}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(){this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){if(this.imageObjAlt&&this.switchImages(o),this.selected=o,this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,this.options.shapeProperties.useBorderWithImage===!0){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,h=(o?a:r)/this.body.view.scale;t.lineWidth=Math.min(this.width,h),t.beginPath(),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),t.fill(),t.save(),h>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),t.closePath()}this._drawImageAtPosition(t,s),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.resize(),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(185),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"square",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(185),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i,o){this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"star",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(179),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){(void 0===this.width||this.labelModule.differentState(e,i))&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t,s),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n),this.disableShadow(t,s),this.updateBoundingBox(e,i,t,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(185),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangle",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(185),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangleDown",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(119),s=o(n),r=i(120),a=o(r),h=i(196),d=o(h),l=i(164),u=o(l),c=i(1),p=i(89),f=i(93),m=function(){function t(e,i,o){var n=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.body.functions.createEdge=this.create.bind(this),this.edgesListeners={add:function(t,e){n.add(e.items)},update:function(t,e){n.update(e.items)},remove:function(t,e){n.remove(e.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:"arrow"},middle:{enabled:!1,scaleFactor:1,type:"arrow"},from:{enabled:!1,scaleFactor:1,type:"arrow"}},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal",multi:!1,vadjust:0,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_forceDisableDynamicCurves",function(e){"dynamic"===e&&(e="continuous");var i=!1;for(var o in t.body.edges)if(t.body.edges.hasOwnProperty(o)){var n=t.body.edges[o],s=t.body.data.edges._data[o];if(void 0!==s){var r=s.smooth;void 0!==r&&r.enabled===!0&&"dynamic"===r.type&&(void 0===e?n.setOptions({smooth:!1}):n.setOptions({smooth:{type:e}}),i=!0)}}i===!0&&t.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",function(){t.reconnectEdges()}),this.body.emitter.on("refreshEdges",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){c.forEach(t.edgesListeners,function(e,i){t.body.data.edges&&t.body.data.edges.off(i,e)}),delete t.body.functions.createEdge,delete t.edgesListeners.add,delete t.edgesListeners.update,delete t.edgesListeners.remove,delete t.edgesListeners})}},{key:"setOptions",value:function(t){if(this.edgeOptions=t,void 0!==t){d.default.parseOptions(this.options,t);var e=!1;if(void 0!==t.smooth)for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&(e=this.body.edges[i].updateEdgeType()||e);if(void 0!==t.font){u.default.parseOptions(this.options.font,t);for(var o in this.body.edges)this.body.edges.hasOwnProperty(o)&&this.body.edges[o].updateLabelModule()}void 0===t.hidden&&void 0===t.physics&&e!==!0||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.edges;if(t instanceof p||t instanceof f)this.body.data.edges=t;else if(Array.isArray(t))this.body.data.edges=new p,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new p}if(o&&c.forEach(this.edgesListeners,function(t,e){o.off(e,t)}),this.body.edges={},this.body.data.edges){c.forEach(this.edgesListeners,function(t,i){e.body.data.edges.on(i,t)});var n=this.body.data.edges.getIds();this.add(n,!0)}i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;ni.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,s.x,s.y,n,this.hover)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=this.from.x,i=this.from.y,o=this.to.x,n=this.to.y,s=t.left,r=t.top;return this.edgeType.getDistanceToEdge(e,i,o,n,s,r)<10}return!1}},{key:"_rotateForLabelAlignment",value:function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,o=Math.atan2(e,i);(o<-1&&i<0||o>0&&i<0)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=["arrowStrikethrough","id","from","hidden","hoverWidth","label","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width"];if(O.selectiveDeepExtend(n,t,e,i),O.mergeOptions(t,e,"smooth",i,o),O.mergeOptions(t,e,"shadow",i,o),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:i===!0&&null===e.dashes&&(t.dashes=(0,a.default)(o.dashes)),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),O.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)):i===!0&&null===e.scaling&&(t.scaling=(0,a.default)(o.scaling)),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var r=e.arrows.toLowerCase();t.arrows.to.enabled=r.indexOf("to")!=-1,t.arrows.middle.enabled=r.indexOf("middle")!=-1,t.arrows.from.enabled=r.indexOf("from")!=-1}else{if("object"!==(0,d.default)(e.arrows))throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+(0,s.default)(e.arrows));O.mergeOptions(t.arrows,e.arrows,"to",i,o.arrows),O.mergeOptions(t.arrows,e.arrows,"middle",i,o.arrows),O.mergeOptions(t.arrows,e.arrows,"from",i,o.arrows)}else i===!0&&null===e.arrows&&(t.arrows=(0,a.default)(o.arrows));if(void 0!==e.color&&null!==e.color)if(t.color=O.deepExtend({},t.color,!0),O.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var h=!1;void 0!==e.color.color&&(t.color.color=e.color.color,h=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,h=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,h=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&h===!0&&(t.color.inherit=!1)}else i===!0&&null===e.color&&(t.color=O.bridgeObject(o.color));void 0!==e.font&&null!==e.font?m.default.parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=O.bridgeObject(o.font))}}]),t}();e.default=S},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(165),s=o(n),r=i(170),a=o(r),h=i(119),d=o(h),l=i(120),u=o(l),c=i(173),p=o(c),f=i(174),m=o(f),v=i(198),g=o(v),y=function(t){function e(t,i,o){return(0,d.default)(this,e),(0,p.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o))}return(0,m.default)(e,t),(0,u.default)(e,[{key:"_line",value:function(t,e,i){var o=i[0],n=i[1];t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i||void 0===o.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.bezierCurveTo(o.x,o.y,n.x,n.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"_getViaCoordinates",value:function(){var t=this.from.x-this.to.x,e=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(t)>Math.abs(e)||this.options.smooth.forceDirection===!0||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates(),h=(0,s.default)(a,2),d=h[0],l=h[1];return this._getDistanceToBezierEdge(t,e,i,o,n,r,d,l)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=(0,s.default)(e,2),o=i[0],n=i[1],r=t,a=[];return a[0]=Math.pow(1-r,3),a[1]=3*r*Math.pow(1-r,2),a[2]=3*Math.pow(r,2)*(1-r),a[3]=Math.pow(r,3),{x:a[0]*this.fromPoint.x+a[1]*o.x+a[2]*n.x+a[3]*this.toPoint.x,y:a[0]*this.fromPoint.y+a[1]*o.y+a[2]*n.y+a[3]*this.toPoint.y}}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(199),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r,a){var h=1e9,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=t,m=e,v=[0,0,0,0];for(l=1;l<10;l++)u=.1*l,v[0]=Math.pow(1-u,3),v[1]=3*u*Math.pow(1-u,2),v[2]=3*Math.pow(u,2)*(1-u),v[3]=Math.pow(u,3),c=v[0]*t+v[1]*r.x+v[2]*a.x+v[3]*i,p=v[0]*e+v[1]*r.y+v[2]*a.y+v[3]*o,l>0&&(d=this._getDistanceToLine(f,m,c,p,n,s),h=d2&&void 0!==arguments[2]?arguments[2]:this._getViaCoordinates(),h=0,d=0,l=1,u=this.to,c=!1;for(t.id===this.from.id&&(u=this.from,c=!0);d<=l&&h<10;){var p=.5*(d+l);if(i=this.getPoint(p,a),o=Math.atan2(u.y-i.y,u.x-i.x),n=u.distanceToBorder(e,o),s=Math.sqrt(Math.pow(i.x-u.x,2)+Math.pow(i.y-u.y,2)),r=n-s,Math.abs(r)<.2)break;r<0?c===!1?d=p:l=p:c===!1?l=p:d=p,h++}return i.t=p,i}},{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r){var a=1e9,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0,p=t,f=e;for(d=1;d<10;d++)l=.1*d,u=Math.pow(1-l,2)*t+2*l*(1-l)*r.x+Math.pow(l,2)*i,c=Math.pow(1-l,2)*e+2*l*(1-l)*r.y+Math.pow(l,2)*o,d>0&&(h=this._getDistanceToLine(p,f,u,c,n,s),a=ho.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=0,d=this.options.selfReferenceSize,l=void 0,u=void 0,c=void 0,p=void 0,f=void 0,m=.5*(s+r);s<=r&&h<10&&(m=.5*(s+r),l=this._pointOnCircle(o,n,d,m),u=Math.atan2(t.y-l.y,t.x-l.x),c=t.distanceToBorder(e,u),p=Math.sqrt(Math.pow(l.x-t.x,2)+Math.pow(l.y-t.y,2)),f=c-p,!(Math.abs(f)<.05));)f>0?a>0?s=m:r=m:a>0?r=m:s=m,h++;return l.t=m,l}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t,e,i,o){if(e.inheritsColor!==!1){if("both"===e.inheritsColor&&this.from.id!==this.to.id){var n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,r=void 0;return s=this.from.options.color.highlight.border,r=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(s=l.overrideOpacity(this.from.options.color.border,e.opacity),r=l.overrideOpacity(this.to.options.color.border,e.opacity)):this.from.selected===!0&&this.to.selected===!1?r=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,r),n}return"to"===e.inheritsColor?l.overrideOpacity(this.to.options.color.border,e.opacity):l.overrideOpacity(this.from.options.color.border,e.opacity)}return l.overrideOpacity(e.color,e.opacity)}},{key:"_circle",value:function(t,e,i,o,n){this.enableShadow(t,e),t.beginPath(),t.arc(i,o,n,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t,e)}},{key:"getDistanceToEdge",value:function(t,e,i,o,n,r,a,h){var d=0;if(this.from!=this.to)d=this._getDistanceToEdge(t,e,i,o,n,r,a);else{var l=this._getCircleData(void 0),u=(0,s.default)(l,3),c=u[0],p=u[1],f=u[2],m=c-n,v=p-r;d=Math.abs(Math.sqrt(m*m+v*v)-f)}return this.labelModule.size.leftn&&this.labelModule.size.topr?0:d}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:d<0&&(d=0);var l=t+d*r,u=e+d*a,c=l-n,p=u-s;return Math.sqrt(c*c+p*p)}},{key:"getArrowData",value:function(t,e,i,o,n,r){var a=void 0,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=r.width;if("from"===e?(d=this.from,l=this.to,u=.1,c=r.fromArrowScale,p=r.fromArrowType):"to"===e?(d=this.to,l=this.from,u=-.1,c=r.toArrowScale,p=r.toArrowType):(d=this.to,l=this.from,c=r.middleArrowScale,p=r.middleArrowType),d!=l)if("middle"!==e)if(this.options.smooth.enabled===!0){h=this.findBorderPosition(d,t,{via:i});var m=this.getPoint(Math.max(0,Math.min(1,h.t+u)),i);a=Math.atan2(h.y-m.y,h.x-m.x)}else a=Math.atan2(d.y-l.y,d.x-l.x),h=this.findBorderPosition(d,t);else a=Math.atan2(d.y-l.y,d.x-l.x),h=this.getPoint(.5,i);else{var v=this._getCircleData(t),g=(0,s.default)(v,3),y=g[0],b=g[1],_=g[2];"from"===e?(h=this.findBorderPosition(this.from,t,{x:y,y:b,low:.25,high:.6,direction:-1}),a=h.t*-2*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(h=this.findBorderPosition(this.from,t,{x:y,y:b,low:.6,high:1,direction:1}),a=h.t*-2*Math.PI+1.5*Math.PI-1.1*Math.PI):(h=this._pointOnCircle(y,b,_,.175),a=3.9269908169872414)}var w=15*c+3*f;return{point:h,core:{x:h.x-.9*w*Math.cos(a),y:h.y-.9*w*Math.sin(a)},angle:a,length:w,type:p}}},{key:"drawArrowHead",value:function(t,e,i,o,n){t.strokeStyle=this.getColor(t,e,i,o),t.fillStyle=t.strokeStyle,t.lineWidth=e.width,n.type&&"circle"===n.type.toLowerCase()?t.circleEndpoint(n.point.x,n.point.y,n.angle,n.length):t.arrowEndpoint(n.point.x,n.point.y,n.angle,n.length),this.enableShadow(t,e),t.fill(),this.disableShadow(t,e)}},{key:"enableShadow",value:function(t,e){e.shadow===!0&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){e.shadow===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(165),s=o(n),r=i(170),a=o(r),h=i(119),d=o(h),l=i(120),u=o(l),c=i(173),p=o(c),f=i(174),m=o(f),v=i(199),g=o(v),y=function(t){function e(t,i,o){(0,d.default)(this,e);var n=(0,p.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o));return n._boundFunction=function(){n.positionBezierNode()},n.body.emitter.on("_repositionBezierNodes",n._boundFunction),n}return(0,m.default)(e,t),(0,u.default)(e,[{key:"setOptions",value:function(t){var e=!1;this.options.physics!==t.physics&&(e=!0),this.options=t,this.id=this.options.id,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.setupSupportNode(),this.connect(),e===!0&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}},{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],void 0===this.from||void 0===this.to||this.options.physics===!1?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}},{key:"cleanup",value:function(){return this.body.emitter.off("_repositionBezierNodes",this._boundFunction),void 0!==this.via&&(delete this.body.nodes[this.via.id],this.via=void 0,!0)}},{key:"setupSupportNode",value:function(){if(void 0===this.via){var t="edgeId:"+this.id,e=this.body.functions.createNode({id:t,shape:"circle",physics:!0,hidden:!0});this.body.nodes[t]=e,this.via=e,this.via.parentEdgeId=this.id,this.positionBezierNode()}}},{key:"positionBezierNode",value:function(){void 0!==this.via&&void 0!==this.from&&void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&&(this.via.x=0,this.via.y=0)}},{key:"_line",value:function(t,e,i){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){return this.via}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.via,i=t,o=void 0,n=void 0;if(this.from===this.to){var r=this._getCircleData(this.from),a=(0,s.default)(r,3),h=a[0],d=a[1],l=a[2],u=2*Math.PI*(1-i);o=h+l*Math.sin(u),n=d+l-l*(1-Math.cos(u))}else o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(199),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e,i){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var t=void 0,e=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=nMath.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=sMath.abs(this.from.y-this.to.y)&&(t=this.from.x=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s,t=this.to.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.y2&&void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(t,e,i.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=t;return{x:Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,y:Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(170),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(173),u=o(l),c=i(174),p=o(c),f=i(200),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}},{key:"_findBorderPosition",value:function(t,e){var i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),h=t.distanceToBorder(e,n),d=(a-h)/a,l={};return l.x=(1-d)*o.x+d*i.x,l.y=(1-d)*o.y+d*i.y,l}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(205),u=o(l),c=i(206),p=o(c),f=i(207),m=o(f),v=i(208),g=o(v),y=i(209),b=o(y),_=i(210),w=o(_),x=i(211),k=o(x),O=i(212),S=o(O),D=i(1),M=function(){function t(e){(0,a.default)(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},D.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return(0,d.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("initPhysics",function(){t.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){t.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){t.stopSimulation(),t.ready=!1}),this.body.emitter.on("disablePhysics",function(){t.physicsEnabled=!1,t.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){t.setOptions(t.options),t.ready===!0&&t.startSimulation()}),this.body.emitter.on("startSimulation",function(){t.ready===!0&&t.startSimulation()}),this.body.emitter.on("stopSimulation",function(){t.stopSimulation()}),this.body.emitter.on("destroy",function(){t.stopSimulation(!1),t.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){t.updatePhysicsData()})}},{key:"setOptions",value:function(t){void 0!==t&&(t===!1?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):(this.physicsEnabled=!0,D.selectiveNotDeepExtend(["stabilization"],this.options,t),D.mergeOptions(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),this.options.enabled===!1&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new k.default(this.body,this.physicsBody,t),this.edgesSolver=new g.default(this.body,this.physicsBody,t),this.gravitySolver=new S.default(this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new p.default(this.body,this.physicsBody,t),this.edgesSolver=new g.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new m.default(this.body,this.physicsBody,t),this.edgesSolver=new b.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new u.default(this.body,this.physicsBody,t),this.edgesSolver=new g.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)),this.modelOptions=t}},{key:"initPhysics",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?this.options.stabilization.enabled===!0?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.stabilized=!0,t===!0&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,t===!0&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var t=Date.now();this.physicsTick(),(Date.now()-t<.4*this.simulationInterval||this.runDoubleSpeed===!0)&&this.stabilized===!1&&(this.physicsTick(),this.runDoubleSpeed=!0),this.stabilized===!0&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||this.startedStabilization===!0)&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0},0)}},{key:"physicsTick",value:function(){if(this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilized===!1){if(this.adaptiveTimestep===!0&&this.adaptiveTimestepEnabled===!0){this.adaptiveCounter%this.adaptiveInterval==0?(this.timestep=2*this.timestep,this.calculateForces(),this.moveNodes(),this.revert(),this.timestep=.5*this.timestep,this.calculateForces(),this.moveNodes(),this.calculateForces(),this.moveNodes(),this._evaluateStepQuality()===!0?this.timestep=1.2*this.timestep:this.timestep/1.2.3))return!1;return!0}},{key:"moveNodes",value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=this.options.maxVelocity?this.options.maxVelocity:1e9,i=0,o=0,n=0;ne?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var h=this.modelOptions.damping*s[t].y,d=(n[t].y-h)/i.options.mass;s[t].y+=d*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;return Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2))}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;if("number"!=typeof e&&(console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",this.options.stabilization.iterations),e=this.options.stabilization.iterations),0===this.physicsBody.physicsNodeIndices.length)return void(this.ready=!0);this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,setTimeout(function(){return t._stabilizationBatch()},0)}},{key:"_stabilizationBatch",value:function(){this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0);for(var t=0;this.stabilized===!1&&t0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;s0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1,e=t),this.overlapAvoidanceFactor<1&&o.shape.radius&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,h=1;h0&&(dr&&(r=d),la&&(a=l))}var u=Math.abs(r-n)-Math.abs(a-s);u>0?(s-=.5*u,a+=.5*u):(n+=.5*u,r-=.5*u);var c=Math.max(1e-5,Math.abs(r-n)),p=.5*c,f=.5*(n+r),m=.5*(s+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-p,maxX:f+p,minY:m-p,maxY:m+p},size:c,calcSize:1/c,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(v.root);for(var g=0;g0&&this._placeInTree(v.root,i);return v}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=this.seededRandom(),e.y+=this.seededRandom()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e.default=h},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(119),s=o(n),r=i(120),a=o(r),h=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t,e,i,o,n,s,r,a,h=this.body.nodes,d=this.physicsBody.physicsNodeIndices,l=this.physicsBody.forces,u=this.options.nodeDistance,c=-2/3/u,p=0;p0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(62),a=o(r),h=i(119),d=o(h),l=i(120),u=o(l),c=i(214),p=o(c),f=i(215),m=o(f),v=i(1),g=function(){function t(e){var i=this;(0,d.default)(this,t),this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},v.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return(0,u.default)(t,[{key:"clusterByHubsize",value:function(t,e){void 0===t?t=this._getHubSize():"object"===(void 0===t?"undefined":(0,a.default)(t))&&(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],o=0;o=t&&i.push(n.id)}for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{},e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===t.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");t=this._checkOptions(t);for(var i={},o={},n=0;n2&&void 0!==arguments[2])||arguments[2];e=this._checkOptions(e);for(var o=[],n={},r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=0;u0&&(0,s.default)(f).length>0&&v===!0&&o.push({nodes:c,edges:f})}}}for(var _=0;_1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:"clusterBridges",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:"clusterByConnection",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[t];e=this._checkOptions(e,o),void 0===e.clusterNodeProperties.x&&(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},r={},a=o.id,h=p.default.cloneOptions(o);n[a]=o;for(var d=0;d-1&&(r[g.id]=g)}this._cluster(n,r,e,i)}},{key:"_createClusterEdges",value:function(t,e,i,o){for(var n=void 0,r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=(0,s.default)(t),c=[],f=0;f0&&void 0!==arguments[0]?arguments[0]:{};return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}},{key:"_cluster",value:function(t,e,i){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(0!=(0,s.default)(t).length&&(1!=(0,s.default)(t).length||1==i.clusterNodeProperties.allowSingleNodeCluster)){for(var n in t)if(t.hasOwnProperty(n)&&void 0!==this.clusteredNodes[n])return;var r=v.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var a=[];for(var h in t)if(t.hasOwnProperty(h)){var d=p.default.cloneOptions(t[h]);a.push(d)}var l=[];for(var u in e)if(e.hasOwnProperty(u)&&"clusterEdge:"!==u.substr(0,12)){var c=p.default.cloneOptions(e[u],"edge");l.push(c)}if(!(r=i.processProperties(r,a,l)))throw new Error("The processProperties function does not return properties!")}void 0===r.id&&(r.id="cluster:"+v.randomUUID());var f=r.id;void 0===r.label&&(r.label="cluster");var g=void 0;void 0===r.x&&(g=this._getClusterPosition(t),r.x=g.x),void 0===r.y&&(void 0===g&&(g=this._getClusterPosition(t)),r.y=g.y),r.id=f;var y=this.body.functions.createNode(r,m.default);y.isCluster=!0,y.containedNodes=t,y.containedEdges=e,y.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[r.id]=y,this._createClusterEdges(t,e,r,i.clusterEdgeProperties);for(var b in e)if(e.hasOwnProperty(b)&&void 0!==this.body.edges[b]){var _=this.body.edges[b];this._backupEdgeOptions(_),_.setOptions({physics:!1,hidden:!0})}for(var w in t)t.hasOwnProperty(w)&&(this.clusteredNodes[w]={clusterId:r.id,node:this.body.nodes[w]},this.body.nodes[w].setOptions({hidden:!0,physics:!1}));r.id=void 0,o===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"_backupEdgeOptions",value:function(t){void 0===this.clusteredEdges[t.id]&&(this.clusteredEdges[t.id]={physics:t.options.physics,hidden:t.options.hidden})}},{key:"_restoreEdge",value:function(t){var e=this.clusteredEdges[t.id];void 0!==e&&(t.setOptions({physics:e.physics,hidden:e.hidden}),delete this.clusteredEdges[t.id])}},{key:"isCluster",value:function(t){return void 0!==this.body.nodes[t]?this.body.nodes[t].isCluster===!0:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(t){for(var e=(0,s.default)(t),i=t[e[0]].x,o=t[e[0]].x,n=t[e[0]].y,r=t[e[0]].y,a=void 0,h=1;ho?a.x:o,n=a.yr?a.y:r;return{x:.5*(i+o),y:.5*(n+r)}}},{key:"openCluster",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var o=this.body.nodes[t],n=o.containedNodes,s=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){var r={},a={x:o.x,y:o.y};for(var h in n)if(n.hasOwnProperty(h)){var d=this.body.nodes[h];r[h]={x:d.x,y:d.y}}var l=e.releaseFunction(a,r);for(var u in n)if(n.hasOwnProperty(u)){var c=this.body.nodes[u];void 0!==l[u]&&(c.x=void 0===l[u].x?o.x:l[u].x,c.y=void 0===l[u].y?o.y:l[u].y)}}else for(var f in n)if(n.hasOwnProperty(f)){var m=this.body.nodes[f];m=n[f],m.options.fixed.x===!1&&(m.x=o.x),m.options.fixed.y===!1&&(m.y=o.y)}for(var g in n)if(n.hasOwnProperty(g)){var y=this.body.nodes[g];y.vx=o.vx,y.vy=o.vy,y.setOptions({hidden:!1,physics:!0}),delete this.clusteredNodes[g]}for(var b=[],_=0;_o&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(119),s=o(n),r=i(120),a=o(r),h=i(1),d=function(){function t(){(0,s.default)(this,t)}return(0,a.default)(t,null,[{key:"getRange",value:function(t){var e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.shape.boundingBox.left&&(s=e.shape.boundingBox.left),re.shape.boundingBox.top&&(o=e.shape.boundingBox.top),n1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.x&&(s=e.x),re.y&&(o=e.y),n0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.allowRedraw=!1,t.renderingActive=!1,t.requiresTimeout===!0?clearTimeout(t.renderTimer):cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];h.selectiveDeepExtend(e,this.options,t)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var t=this;this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedraw===!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(function(){t._redraw(!1)},0):window.requestAnimationFrame(function(){t._redraw(!1)}))}},{key:"_redraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.allowRedraw===!0){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(e.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),t===!0&&e.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){var t=this.canvas.frame.canvas.getContext("2d");void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0),t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=this.canvas.DOMtoCanvas({x:-20,y:-20}),a=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+20,y:this.canvas.frame.canvas.clientHeight+20}),h={top:r.y,left:r.x,bottom:a.y,right:a.x},d=0;d0&&void 0!==arguments[0]?arguments[0]:this.pixelRatio;this.initialized===!0&&(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=t&&1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&&(i=this.cameraState.scale*e),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(t.indexOf("%")!==-1||t.indexOf("px")!==-1)return t;if(t.indexOf("%")===-1)return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var t=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new h(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:h.DIRECTION_ALL}),d.onTouch(this.hammer,function(e){t.body.eventListeners.onTouch(e)}),this.hammer.on("tap",function(e){t.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",function(e){t.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",function(e){t.body.eventListeners.onHold(e)}),this.hammer.on("panstart",function(e){t.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",function(e){t.body.eventListeners.onDrag(e)}),this.hammer.on("panend",function(e){t.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",function(e){t.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("mousewheel",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",function(e){t.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",function(e){t.body.eventListeners.onContext(e)}),this.hammerFrame=new h(this.frame),d.onRelease(this.hammerFrame,function(e){t.body.eventListeners.onRelease(e)})}},{key:"setSize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.width,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.height;t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.frame.canvas.getContext("2d"),r=this.pixelRatio;return this.pixelRatio=(window.devicePixelRatio||1)/(s.webkitBackingStorePixelRatio||s.mozBackingStorePixelRatio||s.msBackingStorePixelRatio||s.oBackingStorePixelRatio||s.backingStorePixelRatio||1),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e?(this._getCameraState(r),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0):(this.frame.canvas.width==Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&this.frame.canvas.height==Math.round(this.frame.canvas.clientHeight*this.pixelRatio)||this._getCameraState(r),this.frame.canvas.width!=Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&(this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),i=!0),this.frame.canvas.height!=Math.round(this.frame.canvas.clientHeight*this.pixelRatio)&&(this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),i=!0)),i===!0&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:"_XconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}},{key:"DOMtoCanvas",value:function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(119),s=o(n),r=i(120),a=o(r),h=i(214),d=o(h),l=i(1),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",this.fit.bind(this)),this.body.emitter.on("animationFinished",function(){o.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",this.releaseNode.bind(this))}return(0,a.default)(t,[{key:"setOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=t}},{key:"fit",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{nodes:[]},e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=void 0;if(void 0!==t.nodes&&0!==t.nodes.length||(t.nodes=this.body.nodeIndices),e===!0){var n=0;for(var s in this.body.nodes)if(this.body.nodes.hasOwnProperty(s)){var r=this.body.nodes[s];r.predefinedPosition===!0&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(t,!1);i=d.default.getRange(this.body.nodes,t.nodes);o=12.662/(this.body.nodeIndices.length+7.4147)+.0964822;o*=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600)}else{this.body.emitter.emit("_resizeNodes"),i=d.default.getRange(this.body.nodes,t.nodes);var a=1.1*Math.abs(i.maxX-i.minX),h=1.1*Math.abs(i.maxY-i.minY),l=this.canvas.frame.canvas.clientWidth/a,u=this.canvas.frame.canvas.clientHeight/h;o=l<=u?l:u}o>1?o=1:0===o&&(o=1);var c=d.default.findCenter(i),p={position:c,scale:o,animation:t.animation};this.moveTo(p)}},{key:"focus",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){if(void 0===t)return void(t={});void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.getViewPosition()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),this.animateView(t)}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=l.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(119),s=o(n),r=i(120),a=o(r),h=i(220),d=o(h),l=i(132),u=o(l),c=i(1),p=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new d.default(e,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("destroy",function(){clearTimeout(t.popupTimer),delete t.body.functions.getPointer})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];c.selectiveNotDeepExtend(e,this.options,t),c.mergeOptions(this.options,t,"keyboard"),t.tooltip&&(c.extend(this.options.tooltip,t.tooltip),t.tooltip.color&&(this.options.tooltip.color=c.parseColor(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(t){return{x:t.x-c.getAbsoluteLeft(this.canvas.frame.canvas),y:t.y-c.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(t){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var a=this.selectionHandler._getSelectedEdgeCount(),h=this.selectionHandler._getSelectedNodeCount(),d=this.selectionHandler.getSelection(),l=this._determineIfDifferent(s,d),u=l.nodesChanged,c=l.edgesChanged,p=!1;h-n>0?(this.selectionHandler._generateClickEvent("selectNode",e,t),r=!0,p=!0):u===!0&&h>0?(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),this.selectionHandler._generateClickEvent("selectNode",e,t),p=!0,r=!0):h-n<0&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),r=!0),a-o>0&&p===!1?(this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a>0&&c===!0?(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a-o<0&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"_determineIfDifferent",value:function(t,e){for(var i=!1,o=!1,n=0;n10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),i0&&(this.popupObj=h[l[l.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],g=0;g0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new u.default(this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e))===!0){var o=this.selectionHandler.getNodeAt(t);i=void 0!==o&&o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e.default=p},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(119),s=o(n),r=i(120),a=o(r),h=(i(1),i(112)),d=i(125),l=i(115),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){o.activated=!0,o.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){o.activated=!1,o.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==o.keycharm&&o.keycharm.destroy()}),this.options={}}return(0,a.default)(t,[{key:"setOptions",value:function(t){void 0!==t&&(this.options=t,this.create())}},{key:"create",value:function(){this.options.navigationButtons===!0?this.iconsCreated===!1&&this.loadNavigationElements():this.iconsCreated===!0&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var t=0;t700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){var t=this.body.view.scale,e=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}},{key:"_zoomOut",value:function(){var t=this.body.view.scale,e=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}},{key:"configureKeyboardBindings",value:function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=l({container:window,preventDefault:!0}):this.keycharm=l({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",function(){t.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){t.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){t.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){t.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){t.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){t.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){t.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){t.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){t.unbindFromRedraw("_zoomOut")},"keyup")))}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(119),s=o(n),r=i(120),a=o(r),h=i(163),d=o(h),l=i(196),u=o(l),c=i(1),p=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionObj={nodes:[],edges:[]},this.hoverObj={nodes:{},edges:{}},this.options={},this.defaultOptions={multiselect:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0},c.extend(this.options,this.defaultOptions),this.body.emitter.on("_dataChanged",function(){o.updateSelection()})}return(0,a.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){var e=["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"];c.selectiveDeepExtend(e,this.options,t)}}},{key:"selectOnPoint",value:function(t){var e=!1;if(this.options.selectable===!0){var i=this.getNodeAt(t)||this.getEdgeAt(t);this.unselectAll(),void 0!==i&&(e=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return e}},{key:"selectAdditionalOnPoint",value:function(t){var e=!1;if(this.options.selectable===!0){var i=this.getNodeAt(t)||this.getEdgeAt(t);void 0!==i&&(e=!0,i.isSelected()===!0?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return e}},{key:"_generateClickEvent",value:function(t,e,i,o){var n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=void 0;s=n===!0?{nodes:[],edges:[]}:this.getSelection(),s.pointer={DOM:{x:i.x,y:i.y},canvas:this.canvas.DOMtoCanvas(i)},s.event=e,void 0!==o&&(s.previousSelection=o),this.body.emitter.emit(t,s)}},{key:"selectObject",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.selectConnectedEdges;return void 0!==t&&(t instanceof d.default&&e===!0&&this._selectConnectedEdges(t),t.select(),this._addToSelection(t),!0)}},{key:"deselectObject",value:function(t){t.isSelected()===!0&&(t.selected=!1,this._removeFromSelection(t))}},{key:"_getAllNodesOverlappingWith",value:function(t){for(var e=[],i=this.body.nodes,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this._pointerToPositionObject(t),o=this._getAllNodesOverlappingWith(i);return o.length>0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this.canvas.DOMtoCanvas(t),o=10,n=null,s=this.body.edges,r=0;r1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{},i=void 0,o=void 0;if(!t||!t.nodes&&!t.edges)throw"Selection must be an object with nodes and/or edges properties";if((e.unselectAll||void 0===e.unselectAll)&&this.unselectAll(),t.nodes)for(i=0;i1&&void 0!==arguments[1])||arguments[1];if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({nodes:t},{highlightEdges:e})}},{key:"selectEdges",value:function(t){if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({edges:t})}},{key:"updateSelection",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.body.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.body.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}}]),t}();e.default=p},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(165),a=o(r),h=i(62),d=o(h),l=i(119),u=o(l),c=i(120),p=o(c),f=i(214),m=o(f),v=i(1),g=function(){function t(e){(0,u.default)(this,t),this.body=e,this.initialRandomSeed=Math.round(1e6*Math.random()),this.randomSeed=this.initialRandomSeed,this.setPhysics=!1,this.options={},this.optionsBackup={physics:{}},this.defaultOptions={randomSeed:void 0,improvedLayout:!0,hierarchical:{enabled:!1,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:"UD",sortMethod:"hubsize"}},v.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,p.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_dataChanged",function(){t.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",function(){t.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",function(){t.setupHierarchicalLayout()})}},{key:"setOptions",value:function(t,e){if(void 0!==t){var i=this.options.hierarchical.enabled;if(v.selectiveDeepExtend(["randomSeed","improvedLayout"],this.options,t),v.mergeOptions(this.options,t,"hierarchical"),void 0!==t.randomSeed&&(this.initialRandomSeed=t.randomSeed),this.options.hierarchical.enabled===!0)return i===!0&&this.body.emitter.emit("refresh",!0),"RL"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.options.hierarchical.levelSeparation>0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(e);if(i===!0)return this.body.emitter.emit("refresh"),v.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={enabled:void 0===this.optionsBackup.physics.enabled||this.optionsBackup.physics.enabled,solver:"hierarchicalRepulsion"},this.optionsBackup.physics.enabled=void 0===this.optionsBackup.physics.enabled||this.optionsBackup.physics.enabled,this.optionsBackup.physics.solver=this.optionsBackup.physics.solver||"barnesHut"):"object"===(0,d.default)(t.physics)?(this.optionsBackup.physics.enabled=void 0===t.physics.enabled||t.physics.enabled,this.optionsBackup.physics.solver=t.physics.solver||"barnesHut",t.physics.solver="hierarchicalRepulsion"):t.physics!==!1&&(this.optionsBackup.physics.solver="barnesHut",t.physics={solver:"hierarchicalRepulsion"});var e="horizontal";"RL"!==this.options.hierarchical.direction&&"LR"!==this.options.hierarchical.direction||(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:e}):(void 0!==t.edges.smooth.type&&"dynamic"!==t.edges.smooth.type&&(e=t.edges.smooth.type),this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled||t.edges.smooth.enabled,type:void 0===t.edges.smooth.type?"dynamic":t.edges.smooth.type,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0!==t.edges.smooth.forceDirection&&t.edges.smooth.forceDirection},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled||t.edges.smooth.enabled,type:e,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0!==t.edges.smooth.forceDirection&&t.edges.smooth.forceDirection}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0){this.randomSeed=this.initialRandomSeed;for(var e=0;e100){for(var o=this.body.nodeIndices.length;this.body.nodeIndices.length>100;){i+=1;var n=this.body.nodeIndices.length;i%3==0?this.body.modules.clustering.clusterBridges():this.body.modules.clustering.clusterOutliers();if(n==this.body.nodeIndices.length&&i%3!=0||i>10)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*o)})}this.body.modules.kamadaKawai.solve(this.body.nodeIndices,this.body.edgeIndices,!0),this._shiftToCenter();for(var s=0;s0){var t=void 0,e=void 0,i=!1,o=!1;this.hierarchicalLevels={},this.lastNodeOnLevel={},this.hierarchicalChildrenReference={},this.hierarchicalParentReference={},this.hierarchicalTrees={},this.treeIndex=-1,this.distributionOrdering={},this.distributionIndex={},this.distributionOrderingPresence={};for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0===t.options.x&&void 0===t.options.y&&!1,void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):o=!0);if(o===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");o===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():"directed"===this.options.hierarchical.sortMethod?this._determineLevelsDirected():"custom"===this.options.hierarchical.sortMethod&&this._determineLevelsCustomCallback());for(var n in this.body.nodes)this.body.nodes.hasOwnProperty(n)&&void 0===this.hierarchicalLevels[n]&&(this.hierarchicalLevels[n]=0);var s=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(s),this._condenseHierarchy(),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(){var t=this,e=!1,i={},o=function(e,i){for(var o in t.hierarchicalTrees)if(t.hierarchicalTrees.hasOwnProperty(o)&&t.hierarchicalTrees[o]===e){var n=t.body.nodes[o],s=t._getPositionForHierarchy(n);t._setPositionForHierarchy(n,s+i,void 0,!0)}},n=function(e){var i=1e9,o=-1e9;for(var n in t.hierarchicalTrees)if(t.hierarchicalTrees.hasOwnProperty(n)&&t.hierarchicalTrees[n]===e){var s=t._getPositionForHierarchy(t.body.nodes[n]);i=Math.min(s,i),o=Math.max(s,o)}return{min:i,max:o}},r=function(){for(var e=[],i=0;i<=t.treeIndex;i++)e.push(n(i));return e},h=function e(i,o){if(!o[i.id]&&(o[i.id]=!0,t.hierarchicalChildrenReference[i.id])){var n=t.hierarchicalChildrenReference[i.id];if(n.length>0)for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:1e9,o=1e9,n=1e9,s=1e9,r=-1e9;for(var h in e)if(e.hasOwnProperty(h)){var d=t.body.nodes[h],l=t.hierarchicalLevels[d.id],u=t._getPositionForHierarchy(d),c=t._getSpaceAroundNode(d,e),p=(0,a.default)(c,2),f=p[0],m=p[1];o=Math.min(f,o),n=Math.min(m,n),l<=i&&(s=Math.min(u,s),r=Math.max(u,r))}return[s,r,o,n]},l=function(e){var i={};return function e(o){if(void 0!==i[o])return i[o];var n=t.hierarchicalLevels[o];if(t.hierarchicalChildrenReference[o]){var s=t.hierarchicalChildrenReference[o];if(s.length>0)for(var r=0;r1)for(var a=0;a2&&void 0!==arguments[2]&&arguments[2],s=t._getPositionForHierarchy(i),r=t._getPositionForHierarchy(o);if(Math.abs(r-s)>t.options.hierarchical.nodeSpacing){var l={},c={};h(i,l),h(o,c);var p=u(i,o),f=d(l,p),m=(0,a.default)(f,4),v=(m[0],m[1]),g=(m[2],m[3],d(c,p)),y=(0,a.default)(g,4),b=y[0],_=(y[1],y[2]);if(y[3],Math.abs(v-b)>t.options.hierarchical.nodeSpacing){var w=v-b+t.options.hierarchical.nodeSpacing;w<-_+t.options.hierarchical.nodeSpacing&&(w=-_+t.options.hierarchical.nodeSpacing),w<0&&(t._shiftBlock(o.id,w),e=!0,n===!0&&t._centerParent(o))}}},m=function(o,n){for(var s=n.id,r=n.edges,l=t.hierarchicalLevels[n.id],u=t.options.hierarchical.levelSeparation*t.options.hierarchical.levelSeparation,c={},p=[],f=0;f0?m=Math.min(f,p-t.options.hierarchical.nodeSpacing):f<0&&(m=-Math.min(-f,c-t.options.hierarchical.nodeSpacing)),0!=m&&(t._shiftBlock(n.id,m),e=!0)}(_),_=b(o,r),function(i){var o=t._getPositionForHierarchy(n),s=t._getSpaceAroundNode(n),r=(0,a.default)(s,2),h=r[0],d=r[1],l=i-o,u=o;l>0?u=Math.min(o+(d-t.options.hierarchical.nodeSpacing),i):l<0&&(u=Math.max(o-(h-t.options.hierarchical.nodeSpacing),i)),u!==o&&(t._setPositionForHierarchy(n,u,void 0,!0),e=!0)}(_)};this.options.hierarchical.blockShifting===!0&&(function(i){var o=(0,s.default)(t.distributionOrdering);o=o.reverse();for(var n=0;n0)for(var d=0;d0&&Math.abs(g)0&&(a=this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing),this._setPositionForHierarchy(r,a,e),this._validataPositionAndContinue(r,e,a),o++}}}}},{key:"_placeBranchNodes",value:function(t,e){if(void 0!==this.hierarchicalChildrenReference[t]){for(var i=[],o=0;oe&&void 0===this.positionedNodes[s.id]))return;var a=void 0;a=0===n?this._getPositionForHierarchy(this.body.nodes[t]):this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing,this._setPositionForHierarchy(s,a,r),this._validataPositionAndContinue(s,r,a)}for(var h=1e9,d=-1e9,l=0;l0&&0!==(e=this._getHubSize());)for(var o in this.body.nodes)if(this.body.nodes.hasOwnProperty(o)){var n=this.body.nodes[o];n.edges.length===e&&this._crawlNetwork(i,o)}}},{key:"_determineLevelsCustomCallback",value:function(){var t=this,e=function(e,i,o){void 0===t.hierarchicalLevels[e.id]&&(t.hierarchicalLevels[e.id]=1e5);var n=(m.default.cloneOptions(e,"node"),m.default.cloneOptions(i,"node"),void m.default.cloneOptions(o,"edge"));t.hierarchicalLevels[i.id]=t.hierarchicalLevels[e.id]+n};this._crawlNetwork(e),this._setMinLevelToZero()}},{key:"_determineLevelsDirected",value:function(){var t=this,e=function(e,i,o){void 0===t.hierarchicalLevels[e.id]&&(t.hierarchicalLevels[e.id]=1e4),o.toId==i.id?t.hierarchicalLevels[i.id]=t.hierarchicalLevels[e.id]+1:t.hierarchicalLevels[i.id]=t.hierarchicalLevels[e.id]-1};this._crawlNetwork(e),this._setMinLevelToZero()}},{key:"_setMinLevelToZero",value:function(){var t=1e9;for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&void 0!==this.hierarchicalLevels[e]&&(t=Math.min(this.hierarchicalLevels[e],t));for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&void 0!==this.hierarchicalLevels[i]&&(this.hierarchicalLevels[i]-=t)}},{key:"_generateMap",value:function(){var t=this,e=function(e,i){if(t.hierarchicalLevels[i.id]>t.hierarchicalLevels[e.id]){var o=e.id,n=i.id;void 0===t.hierarchicalChildrenReference[o]&&(t.hierarchicalChildrenReference[o]=[]),t.hierarchicalChildrenReference[o].push(n),void 0===t.hierarchicalParentReference[n]&&(t.hierarchicalParentReference[n]=[]),t.hierarchicalParentReference[n].push(o)}};this._crawlNetwork(e)}},{key:"_crawlNetwork",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},i=arguments[1],o={},n=0,s=function i(n,s){if(void 0===o[n.id]){void 0===t.hierarchicalTrees[n.id]&&(t.hierarchicalTrees[n.id]=s,t.treeIndex=Math.max(s,t.treeIndex)),o[n.id]=!0;for(var r=void 0,a=0;a3&&void 0!==arguments[3]&&arguments[3])!==!0&&(void 0===this.distributionOrdering[i]&&(this.distributionOrdering[i]=[],this.distributionOrderingPresence[i]={}),void 0===this.distributionOrderingPresence[i][t.id]&&(this.distributionOrdering[i].push(t),this.distributionIndex[t.id]=this.distributionOrdering[i].length-1),this.distributionOrderingPresence[i][t.id]=!0),"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x=e:t.y=e}},{key:"_getPositionForHierarchy",value:function(t){return"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x:t.y}},{key:"_sortNodeArray",value:function(t){t.length>1&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.sort(function(t,e){return t.x-e.x}):t.sort(function(t,e){return t.y-e.y}))}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(90),a=o(r),h=i(62),d=o(h),l=i(119),u=o(l),c=i(120),p=o(c),f=i(1),m=i(112),v=i(125),g=function(){function t(e,i,o){var n=this;(0,u.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},f.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){n._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return(0,p.default)(t,[{key:"_restore",value:function(){this.inMode!==!1&&(this.options.initiallyActive===!0?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(t,e,i){void 0!==e&&(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&&("boolean"==typeof t?this.options.enabled=t:(this.options.enabled=!0,f.deepExtend(this.options,t)),this.options.initiallyActive===!0&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){this.editMode===!0?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},this.guiEnabled===!0){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var t=this.selectionHandler._getSelectedNodeCount(),e=this.selectionHandler._getSelectedEdgeCount(),i=t+e,o=this.options.locales[this.options.locale],n=!1;this.options.addNode!==!1&&(this._createAddNodeButton(o),n=!0),this.options.addEdge!==!1&&(n===!0?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===t&&"function"==typeof this.options.editNode?(n===!0?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===e&&0===t&&this.options.editEdge!==!1&&(n===!0?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(t>0&&this.options.deleteNode!==!1?(n===!0&&this._createSeperator(4),this._createDeleteButton(o)):0===t&&this.options.deleteEdge!==!1&&(n===!0&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addNode",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean();var e=this.selectionHandler._getSelectedNode();if(void 0!==e){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(e.isCluster!==!0){var i=f.deepExtend({},e.options,!1);if(i.x=e.x,i.y=e.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(e){null!==e&&void 0!==e&&"editNode"===t.inMode&&t.body.data.nodes.getDataSet().update(e),t.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addEdge",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",function(){}),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="editEdge","object"===(0,d.default)(this.options.editEdge)&&"function"==typeof this.options.editEdge.editWithoutDrag&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId)){var t=this.body.edges[this.edgeBeingEditedId];return void this._performEditEdge(t.from,t.to)}if(this.guiEnabled===!0){var e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}if(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId){var i=this.body.edges[this.edgeBeingEditedId],o=this._getNewTargetNode(i.from.x,i.from.y),n=this._getNewTargetNode(i.to.x,i.to.y);this.temporaryIds.nodes.push(o.id),this.temporaryIds.nodes.push(n.id),this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id),this.body.nodes[n.id]=n,this.body.nodeIndices.push(n.id),this._temporaryBindUI("onTouch",this._controlNodeTouch.bind(this)),this._temporaryBindUI("onTap",function(){}),this._temporaryBindUI("onHold",function(){}),this._temporaryBindUI("onDragStart",this._controlNodeDragStart.bind(this)),this._temporaryBindUI("onDrag",this._controlNodeDrag.bind(this)),this._temporaryBindUI("onDragEnd",this._controlNodeDragEnd.bind(this)),this._temporaryBindUI("onMouseMove",function(){}),this._temporaryBindEvent("beforeDrawing",function(t){var e=i.edgeType.findBorderPositions(t);o.selected===!1&&(o.x=e.from.x,o.y=e.from.y),n.selected===!1&&(n.x=e.to.x,n.y=e.to.y)}),this.body.emitter.emit("_redraw")}else this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="delete";var e=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(e.length>0){for(var n=0;n0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode?(t.body.data.edges.getDataSet().remove(e.edges),t.body.data.nodes.getDataSet().remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar()):(t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=f.deepExtend({},this.options.controlNodeStyle);i.id="targetNode"+f.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e;var o=this.body.functions.createNode(i);return o.shape.boundingBox={left:t,right:t,top:e,bottom:e},o}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},f.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(f.recursiveDOMDelete(this.editModeDiv),f.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+t]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+t].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+t])}},{key:"_createAddNodeButton",value:function(t){var e=this._createButton("addNode","vis-button vis-add",t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(t){var e=this._createButton("addEdge","vis-button vis-connect",t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(t){var e=this._createButton("editNode","vis-button vis-edit",t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(t){var e=this._createButton("editEdge","vis-button vis-edit",t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(t){if(this.options.rtl)var e="vis-button vis-delete-rtl";else var e="vis-button vis-delete";var i=this._createButton("delete",e,t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(i),this._bindHammerToDiv(i,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(t){var e=this._createButton("back","vis-button vis-back",t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"vis-label";return this.manipulationDOM[t+"Div"]=document.createElement("div"),this.manipulationDOM[t+"Div"].className=e,this.manipulationDOM[t+"Label"]=document.createElement("div"),this.manipulationDOM[t+"Label"].className=o,this.manipulationDOM[t+"Label"].innerHTML=i,this.manipulationDOM[t+"Div"].appendChild(this.manipulationDOM[t+"Label"]),this.manipulationDOM[t+"Div"]}},{key:"_createDescription",value:function(t){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",t))}},{key:"_temporaryBindEvent",value:function(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}},{key:"_temporaryBindUI",value:function(t,e){if(void 0===this.body.eventListeners[t])throw new Error("This UI function does not exist. Typo? You tried: "+t+" possible are: "+(0,a.default)((0,s.default)(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}},{key:"_unbindTemporaryUIs",value:function(){for(var t in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(t)&&(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=f.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+f.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(this.temporaryIds.nodes.indexOf(n[r])===-1){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:f.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.getDataSet().add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e,label:this.body.data.edges._data[this.edgeBeingEditedId].label},n=this.options.editEdge;if("object"===(void 0===n?"undefined":(0,d.default)(n))&&(n=n.editWithoutDrag),"function"==typeof n){if(2!==n.length)throw new Error("The function for edit does not support two arguments (data, callback)");n(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw"),i.showManipulatorToolbar()):(i.body.data.edges.getDataSet().update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e.default=g},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="object",r={configure:{enabled:{boolean:o},filter:{boolean:o,string:i,array:"array",function:"function"},container:{dom:"dom"},showButton:{boolean:o},__type__:{object:s,boolean:o,string:i,array:"array",function:"function"}},edges:{arrows:{to:{enabled:{boolean:o},scaleFactor:{number:n},type:{string:["arrow","circle"]},__type__:{object:s,boolean:o}},middle:{enabled:{boolean:o},scaleFactor:{number:n},type:{string:["arrow","circle"]},__type__:{object:s,boolean:o}},from:{enabled:{boolean:o},scaleFactor:{number:n},type:{string:["arrow","circle"]},__type__:{object:s,boolean:o}},__type__:{string:["from","to","middle"],object:s}},arrowStrikethrough:{boolean:o},chosen:{label:{boolean:o,function:"function"},edge:{boolean:o,function:"function"},__type__:{object:s,boolean:o}},color:{color:{string:i},highlight:{string:i},hover:{string:i},inherit:{string:["from","to","both"],boolean:o},opacity:{number:n},__type__:{object:s,string:i}},dashes:{boolean:o,array:"array"},font:{color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},align:{string:["horizontal","top","middle","bottom"]},vadjust:{number:n},multi:{boolean:o,string:i},bold:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:s,string:i}},boldital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:s,string:i}},ital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:s,string:i}},mono:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:s,string:i}},__type__:{object:s,string:i}},hidden:{boolean:o},hoverWidth:{function:"function",number:n},label:{string:i,undefined:"undefined"},labelHighlightBold:{boolean:o},length:{number:n,undefined:"undefined"},physics:{boolean:o},scaling:{min:{number:n},max:{number:n},label:{enabled:{boolean:o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:s,boolean:o}},customScalingFunction:{function:"function"},__type__:{object:s}},selectionWidth:{function:"function",number:n},selfReferenceSize:{number:n},shadow:{enabled:{boolean:o},color:{string:i},size:{number:n},x:{number:n},y:{number:n},__type__:{object:s,boolean:o}},smooth:{enabled:{boolean:o},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"]},roundness:{number:n},forceDirection:{string:["horizontal","vertical","none"],boolean:o},__type__:{object:s,boolean:o}},title:{string:i,undefined:"undefined"},width:{number:n},widthConstraint:{maximum:{number:n},__type__:{object:s,boolean:o,number:n}},value:{number:n,undefined:"undefined"},__type__:{object:s}},groups:{useDefaultGroups:{boolean:o},__any__:"get from nodes, will be overwritten below",__type__:{object:s}},interaction:{dragNodes:{boolean:o},dragView:{boolean:o},hideEdgesOnDrag:{boolean:o},hideNodesOnDrag:{boolean:o},hover:{boolean:o},keyboard:{enabled:{boolean:o},speed:{x:{number:n},y:{number:n},zoom:{number:n},__type__:{object:s}},bindToWindow:{boolean:o},__type__:{object:s,boolean:o}},multiselect:{boolean:o},navigationButtons:{boolean:o},selectable:{boolean:o},selectConnectedEdges:{boolean:o},hoverConnectedEdges:{boolean:o},tooltipDelay:{number:n},zoomView:{boolean:o},__type__:{object:s}},layout:{randomSeed:{undefined:"undefined",number:n},improvedLayout:{boolean:o},hierarchical:{enabled:{boolean:o},levelSeparation:{number:n},nodeSpacing:{number:n},treeSpacing:{number:n},blockShifting:{boolean:o},edgeMinimization:{boolean:o},parentCentralization:{boolean:o},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},__type__:{object:s,boolean:o}},__type__:{object:s}},manipulation:{enabled:{boolean:o},initiallyActive:{boolean:o},addNode:{boolean:o,function:"function"},addEdge:{boolean:o,function:"function"},editNode:{function:"function"},editEdge:{editWithoutDrag:{function:"function"},__type__:{object:s,boolean:o,function:"function"}},deleteNode:{boolean:o,function:"function"},deleteEdge:{boolean:o,function:"function"},controlNodeStyle:"get from nodes, will be overwritten below",__type__:{object:s,boolean:o}},nodes:{borderWidth:{number:n},borderWidthSelected:{number:n,undefined:"undefined"},brokenImage:{string:i,undefined:"undefined"},chosen:{label:{boolean:o,function:"function"},node:{boolean:o,function:"function"},__type__:{object:s,boolean:o}},color:{border:{string:i},background:{string:i},highlight:{border:{string:i},background:{string:i},__type__:{object:s,string:i}},hover:{border:{string:i},background:{string:i},__type__:{object:s,string:i}},__type__:{object:s,string:i}},fixed:{x:{boolean:o},y:{boolean:o},__type__:{object:s,boolean:o}},font:{align:{string:i},color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},vadjust:{number:n},multi:{boolean:o,string:i},bold:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:s,string:i}},boldital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:s,string:i}},ital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:s,string:i}},mono:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:s,string:i}},__type__:{object:s,string:i}},group:{string:i,number:n,undefined:"undefined"},heightConstraint:{minimum:{number:n},valign:{string:i},__type__:{object:s,boolean:o,number:n}},hidden:{boolean:o},icon:{face:{string:i},code:{string:i},size:{number:n},color:{string:i},__type__:{object:s}},id:{string:i,number:n},image:{selected:{string:i,undefined:"undefined"},unselected:{string:i,undefined:"undefined"},__type__:{object:s,string:i}},label:{string:i,undefined:"undefined"},labelHighlightBold:{boolean:o},level:{number:n,undefined:"undefined"},margin:{top:{number:n},right:{number:n},bottom:{number:n},left:{number:n},__type__:{object:s,number:n}},mass:{number:n},physics:{boolean:o},scaling:{min:{number:n},max:{number:n},label:{enabled:{boolean:o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:s,boolean:o}},customScalingFunction:{function:"function"},__type__:{object:s}},shadow:{enabled:{boolean:o},color:{string:i},size:{number:n},x:{number:n},y:{number:n},__type__:{object:s,boolean:o}},shape:{string:["ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon"]},shapeProperties:{borderDashes:{boolean:o,array:"array"},borderRadius:{number:n},interpolation:{boolean:o},useImageSize:{boolean:o},useBorderWithImage:{boolean:o},__type__:{object:s}},size:{number:n},title:{string:i,undefined:"undefined"},value:{number:n,undefined:"undefined"},widthConstraint:{minimum:{number:n},maximum:{number:n},__type__:{object:s,boolean:o,number:n}},x:{number:n},y:{number:n},__type__:{object:s}},physics:{enabled:{boolean:o},barnesHut:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:s}},forceAtlas2Based:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:s}},repulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:s}},hierarchicalRepulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:s}},maxVelocity:{number:n},minVelocity:{number:n},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{boolean:o},iterations:{number:n},updateInterval:{number:n},onlyDynamicEdges:{boolean:o},fit:{boolean:o},__type__:{object:s,boolean:o}},timestep:{number:n},adaptiveTimestep:{boolean:o},__type__:{object:s,boolean:o}},autoResize:{boolean:o},clickToUse:{boolean:o},locale:{string:i},locales:{__any__:{any:"any"},__type__:{object:s}},height:{string:i},width:{string:i},__type__:{object:s}};r.groups.__any__=r.nodes,r.manipulation.controlNodeStyle=r.nodes;var a={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown"],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1], +interpolation:!0,useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},middle:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},from:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"}},arrowStrikethrough:!0,color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"],forceDirection:["horizontal","vertical","none"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01]}};e.allOptions=r,e.configureOptions=a},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(165),s=o(n),r=i(119),a=o(r),h=i(120),d=o(h),l=i(226),u=o(l),c=function(){function t(e,i,o){(0,a.default)(this,t),this.body=e,this.springLength=i,this.springConstant=o,this.distanceSolver=new u.default}return(0,d.default)(t,[{key:"setOptions",value:function(t){t&&(t.springLength&&(this.springLength=t.springLength),t.springConstant&&(this.springConstant=t.springConstant))}},{key:"solve",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(o),this._createK_matrix(o);for(var n=0,r=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),a=1e9,h=0,d=0,l=0,u=0,c=0;a>.01&&n1&&c<5;){c+=1,this._moveNode(h,d,l);var m=this._getEnergy(h),v=(0,s.default)(m,3);u=v[0],d=v[1],l=v[2]}}}},{key:"_getHighestEnergyNode",value:function(t){for(var e=this.body.nodeIndices,i=this.body.nodes,o=0,n=e[0],r=0,a=0,h=0;h=.1;)p=n[l++%s],p>d&&(p=d),c=Math.sqrt(p*p/(1+h*h)),c=r<0?-c:c,t+=c,e+=h*c,u===!0?this.lineTo(t,e):this.moveTo(t,e),d-=p,u=!u})},function(t,e,i){function o(t){return R=t,f()}function n(){z=0,A=R.charAt(0)}function s(){z++,A=R.charAt(z)}function r(){return R.charAt(z+1)}function a(t){return F.test(t)}function h(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function d(t,e,i){for(var o=e.split("."),n=t;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function l(t,e){for(var i,o,n=null,s=[t],r=t;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;i=0;i--){var a=s[i];a.nodes||(a.nodes=[]),a.nodes.indexOf(n)===-1&&a.nodes.push(n)}e.attr&&(n.attr=h(n.attr,e.attr))}function u(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function c(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=h({},t.edge)),s.attr=h(s.attr||{},n),s}function p(){for(B=I.NULL,L="";" "===A||"\t"===A||"\n"===A||"\r"===A;)s();do{var t=!1;if("#"===A){for(var e=z-1;" "===R.charAt(e)||"\t"===R.charAt(e);)e--;if("\n"===R.charAt(e)||""===R.charAt(e)){for(;""!=A&&"\n"!=A;)s();t=!0}}if("/"===A&&"/"===r()){for(;""!=A&&"\n"!=A;)s();t=!0}if("/"===A&&"*"===r()){for(;""!=A;){if("*"===A&&"/"===r()){s(),s();break}s()}t=!0}for(;" "===A||"\t"===A||"\n"===A||"\r"===A;)s()}while(t);if(""===A)return void(B=I.DELIMITER);var i=A+r();if(N[i])return B=I.DELIMITER,L=i,s(),void s();if(N[A])return B=I.DELIMITER,L=A,void s();if(a(A)||"-"===A){for(L+=A,s();a(A);)L+=A,s();return"false"===L?L=!1:"true"===L?L=!0:isNaN(Number(L))||(L=Number(L)),void(B=I.IDENTIFIER)}if('"'===A){for(s();""!=A&&('"'!=A||'"'===A&&'"'===r());)L+=A,'"'===A&&s(),s();if('"'!=A)throw x('End of string " expected');return s(),void(B=I.IDENTIFIER)}for(B=I.UNKNOWN;""!=A;)L+=A,s();throw new SyntaxError('Syntax error in part "'+k(L,30)+'"')}function f(){var t={};if(n(),p(),"strict"===L&&(t.strict=!0,p()),"graph"!==L&&"digraph"!==L||(t.type=L,p()),B===I.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),m(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==L&&"}"!=L;)v(t),";"===L&&p()}function v(t){var e=g(t);if(e)return void _(t,e);if(!y(t)){if(B!=I.IDENTIFIER)throw x("Identifier expected");var i=L;if(p(),"="===L){if(p(),B!=I.IDENTIFIER)throw x("Identifier expected");t[i]=L,p()}else b(t,i)}}function g(t){var e=null;if("subgraph"===L&&(e={},e.type="subgraph",p(),B===I.IDENTIFIER&&(e.id=L,p())),"{"===L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"===L?(p(),t.node=w(),"node"):"edge"===L?(p(),t.edge=w(),"edge"):"graph"===L?(p(),t.graph=w(),"graph"):null}function b(t,e){var i={id:e},o=w();o&&(i.attr=o),l(t,i),_(t,e)}function _(t,e){for(;"->"===L||"--"===L;){var i,o=L;p();var n=g(t);if(n)i=n;else{if(B!=I.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,l(t,{id:i}),p()}u(t,c(t,e,i,o,w())),e=i}}function w(){for(var t=null;"["===L;){for(p(),t={};""!==L&&"]"!=L;){if(B!=I.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),B!=I.IDENTIFIER)throw x("Attribute value expected");d(t,e,L),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+k(L,30)+'" (char '+z+")")}function k(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function O(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r":!0,"--":!0},R="",z=0,A="",L="",B=I.NULL,F=/[a-zA-Z_0-9.:#]/;e.parseDOT=o,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;a