From 1321df719a444800f0f14fdf0c771f8e3d8aa098 Mon Sep 17 00:00:00 2001 From: Brendon Page Date: Thu, 15 Jan 2015 14:15:27 +0200 Subject: [PATCH] Fixed infinite loop on network image load when Url and brokenUrl failed to load --- dist/vis.js | 10802 ++++++++++++++++++++-------------------- dist/vis.map | 2 +- dist/vis.min.js | 22 +- lib/network/Images.js | 15 + 4 files changed, 5382 insertions(+), 5459 deletions(-) diff --git a/dist/vis.js b/dist/vis.js index 63b05424..05489793 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.8.1-SNAPSHOT - * @date 2015-01-14 + * @date 2015-01-15 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -7711,7 +7711,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(48); + var hammerUtil = __webpack_require__(47); var moment = __webpack_require__(44); var Component = __webpack_require__(20); var DateUtil = __webpack_require__(15); @@ -9197,7 +9197,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var Component = __webpack_require__(20); var moment = __webpack_require__(44); - var locales = __webpack_require__(47); + var locales = __webpack_require__(48); /** * A current time bar @@ -9367,7 +9367,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var Component = __webpack_require__(20); var moment = __webpack_require__(44); - var locales = __webpack_require__(47); + var locales = __webpack_require__(48); /** * A custom time bar @@ -10212,9 +10212,9 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var DOMutil = __webpack_require__(2); - var Line = __webpack_require__(49); - var Bar = __webpack_require__(50); - var Points = __webpack_require__(51); + var Line = __webpack_require__(51); + var Bar = __webpack_require__(52); + var Points = __webpack_require__(53); /** * /** @@ -12809,7 +12809,7 @@ return /******/ (function(modules) { // webpackBootstrap var DataAxis = __webpack_require__(23); var GraphGroup = __webpack_require__(24); var Legend = __webpack_require__(28); - var BarGraphFunctions = __webpack_require__(50); + var BarGraphFunctions = __webpack_require__(52); var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items @@ -15456,9 +15456,9 @@ return /******/ (function(modules) { // webpackBootstrap var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); - var keycharm = __webpack_require__(59); + var keycharm = __webpack_require__(57); var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(48); + var hammerUtil = __webpack_require__(47); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var dotparser = __webpack_require__(42); @@ -15470,10 +15470,10 @@ return /******/ (function(modules) { // webpackBootstrap var Popup = __webpack_require__(41); var MixinLoader = __webpack_require__(54); var Activator = __webpack_require__(55); - var locales = __webpack_require__(52); + var locales = __webpack_require__(49); // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(53); + __webpack_require__(50); /** * @constructor Network @@ -19624,6 +19624,14 @@ return /******/ (function(modules) { // webpackBootstrap this.callback = undefined; } + Images.prototype._resolveRelativeUrl = function(url){ + var img = document.createElement('img'); + img.src = url; // set string url + url = img.src; // get qualified url + img.src = null; // no server request + return url; + } + /** * Set an onload callback function. This will be called each time an image * is loaded @@ -19669,6 +19677,13 @@ return /******/ (function(modules) { // webpackBootstrap me.callback(this); } } + else if (this.src === this._resolveRelativeUrl(brokenUrl)){ + console.error("Could not load brokenImage:", brokenUrl); + delete this.src; + if (me.callback) { + me.callback(this); + } + } else { this.src = brokenUrl; } @@ -21881,7 +21896,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(57); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(59); /***/ }, @@ -22780,27 +22795,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 47 */ -/***/ function(module, exports, __webpack_require__) { - - // English - exports['en'] = { - current: 'current', - time: 'time' - }; - exports['en_EN'] = exports['en']; - exports['en_US'] = exports['en']; - - // Dutch - exports['nl'] = { - custom: 'aangepaste', - time: 'tijd' - }; - exports['nl_NL'] = exports['nl']; - exports['nl_BE'] = exports['nl']; - - -/***/ }, -/* 48 */ /***/ function(module, exports, __webpack_require__) { var Hammer = __webpack_require__(45); @@ -22834,282 +22828,575 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 49 */ +/* 48 */ /***/ function(module, exports, __webpack_require__) { - /** - * Created by Alex on 11/11/2014. - */ - var DOMutil = __webpack_require__(2); - var Points = __webpack_require__(51); - - function Line(groupId, options) { - this.groupId = groupId; - this.options = options; - } - - Line.prototype.getYRange = function(groupData) { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; - } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; + // English + exports['en'] = { + current: 'current', + time: 'time' }; + exports['en_EN'] = exports['en']; + exports['en_US'] = exports['en']; + // Dutch + exports['nl'] = { + custom: 'aangepaste', + time: 'tijd' + }; + exports['nl_NL'] = exports['nl']; + exports['nl_BE'] = exports['nl']; - /** - * draw a line graph - * - * @param dataset - * @param group - */ - Line.prototype.draw = function (dataset, group, framework) { - if (dataset != null) { - if (dataset.length > 0) { - var path, d; - var svgHeight = Number(framework.svg.style.height.replace('px','')); - path = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); - path.setAttributeNS(null, "class", group.className); - if(group.style !== undefined) { - path.setAttributeNS(null, "style", group.style); - } - // construct path from dataset - if (group.options.catmullRom.enabled == true) { - d = Line._catmullRom(dataset, group); - } - else { - d = Line._linear(dataset); - } +/***/ }, +/* 49 */ +/***/ function(module, exports, __webpack_require__) { - // append with points for fill and finalize the path - if (group.options.shaded.enabled == true) { - var fillPath = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); - var dFill; - if (group.options.shaded.orientation == 'top') { - dFill = 'M' + dataset[0].x + ',' + 0 + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + 0; - } - else { - dFill = 'M' + dataset[0].x + ',' + svgHeight + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + svgHeight; - } - fillPath.setAttributeNS(null, "class", group.className + " fill"); - if(group.options.shaded.style !== undefined) { - fillPath.setAttributeNS(null, "style", group.options.shaded.style); - } - fillPath.setAttributeNS(null, "d", dFill); - } - // copy properties to path for drawing. - path.setAttributeNS(null, 'd', 'M' + d); + // English + exports['en'] = { + edit: 'Edit', + del: 'Delete selected', + back: 'Back', + addNode: 'Add Node', + addEdge: 'Add Edge', + editNode: 'Edit Node', + editEdge: 'Edit Edge', + addDescription: 'Click in an empty space to place a new node.', + edgeDescription: 'Click on a node and drag the edge to another node to connect them.', + editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', + createEdgeError: 'Cannot link edges to a cluster.', + deleteClusterError: 'Clusters cannot be deleted.' + }; + exports['en_EN'] = exports['en']; + exports['en_US'] = exports['en']; - // draw points - if (group.options.drawPoints.enabled == true) { - Points.draw(dataset, group, framework); - } - } - } + // Dutch + exports['nl'] = { + edit: 'Wijzigen', + del: 'Selectie verwijderen', + back: 'Terug', + addNode: 'Node toevoegen', + addEdge: 'Link toevoegen', + editNode: 'Node wijzigen', + editEdge: 'Link wijzigen', + addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.', + edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.', + editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.', + createEdgeError: 'Kan geen link maken naar een cluster.', + deleteClusterError: 'Clusters kunnen niet worden verwijderd.' }; + exports['nl_NL'] = exports['nl']; + exports['nl_BE'] = exports['nl']; +/***/ }, +/* 50 */ +/***/ function(module, exports, __webpack_require__) { /** - * This uses an uniform parametrization of the CatmullRom algorithm: - * 'On the Parameterization of Catmull-Rom Curves' by Cem Yuksel et al. - * @param data - * @returns {string} - * @private + * Canvas shapes used by Network */ - Line._catmullRomUniform = function(data) { - // catmull rom - var p0, p1, p2, p3, bp1, bp2; - var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; - var normalization = 1/6; - var length = data.length; - for (var i = 0; i < length - 1; i++) { + if (typeof CanvasRenderingContext2D !== 'undefined') { - p0 = (i == 0) ? data[0] : data[i-1]; - p1 = data[i]; - p2 = data[i+1]; - p3 = (i + 2 < length) ? data[i+2] : p2; + /** + * Draw a circle shape + */ + CanvasRenderingContext2D.prototype.circle = function(x, y, r) { + this.beginPath(); + this.arc(x, y, r, 0, 2*Math.PI, false); + }; + /** + * Draw a square shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r size, width and height of the square + */ + CanvasRenderingContext2D.prototype.square = function(x, y, r) { + this.beginPath(); + this.rect(x - r, y - r, r * 2, r * 2); + }; - // Catmull-Rom to Cubic Bezier conversion matrix - // 0 1 0 0 - // -1/6 1 1/6 0 - // 0 1/6 1 -1/6 - // 0 0 1 0 + /** + * Draw a triangle shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); - // bp0 = { x: p1.x, y: p1.y }; - bp1 = { x: ((-p0.x + 6*p1.x + p2.x) *normalization), y: ((-p0.y + 6*p1.y + p2.y) *normalization)}; - bp2 = { x: (( p1.x + 6*p2.x - p3.x) *normalization), y: (( p1.y + 6*p2.y - p3.y) *normalization)}; - // bp0 = { x: p2.x, y: p2.y }; + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height - d += 'C' + - bp1.x + ',' + - bp1.y + ' ' + - bp2.x + ',' + - bp2.y + ' ' + - p2.x + ',' + - p2.y + ' '; - } + this.moveTo(x, y - (h - ir)); + this.lineTo(x + s2, y + ir); + this.lineTo(x - s2, y + ir); + this.lineTo(x, y - (h - ir)); + this.closePath(); + }; - return d; - }; + /** + * Draw a triangle shape in downward orientation + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius + */ + CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); - /** - * This uses either the chordal or centripetal parameterization of the catmull-rom algorithm. - * By default, the centripetal parameterization is used because this gives the nicest results. - * These parameterizations are relatively heavy because the distance between 4 points have to be calculated. - * - * One optimization can be used to reuse distances since this is a sliding window approach. - * @param data - * @param group - * @returns {string} - * @private - */ - Line._catmullRom = function(data, group) { - var alpha = group.options.catmullRom.alpha; - if (alpha == 0 || alpha === undefined) { - return this._catmullRomUniform(data); - } - else { - var p0, p1, p2, p3, bp1, bp2, d1,d2,d3, A, B, N, M; - var d3powA, d2powA, d3pow2A, d2pow2A, d1pow2A, d1powA; - var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; - var length = data.length; - for (var i = 0; i < length - 1; i++) { + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height - p0 = (i == 0) ? data[0] : data[i-1]; - p1 = data[i]; - p2 = data[i+1]; - p3 = (i + 2 < length) ? data[i+2] : p2; + this.moveTo(x, y + (h - ir)); + this.lineTo(x + s2, y - ir); + this.lineTo(x - s2, y - ir); + this.lineTo(x, y + (h - ir)); + this.closePath(); + }; - d1 = Math.sqrt(Math.pow(p0.x - p1.x,2) + Math.pow(p0.y - p1.y,2)); - d2 = Math.sqrt(Math.pow(p1.x - p2.x,2) + Math.pow(p1.y - p2.y,2)); - d3 = Math.sqrt(Math.pow(p2.x - p3.x,2) + Math.pow(p2.y - p3.y,2)); + /** + * Draw a star shape, a star with 5 points + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.star = function(x, y, r) { + // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ + this.beginPath(); - // Catmull-Rom to Cubic Bezier conversion matrix + for (var n = 0; n < 10; n++) { + var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; + this.lineTo( + x + radius * Math.sin(n * 2 * Math.PI / 10), + y - radius * Math.cos(n * 2 * Math.PI / 10) + ); + } - // A = 2d1^2a + 3d1^a * d2^a + d3^2a - // B = 2d3^2a + 3d3^a * d2^a + d2^2a + this.closePath(); + }; - // [ 0 1 0 0 ] - // [ -d2^2a /N A/N d1^2a /N 0 ] - // [ 0 d3^2a /M B/M -d2^2a /M ] - // [ 0 0 1 0 ] + /** + * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas + */ + CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { + var r2d = Math.PI/180; + if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x + if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y + this.beginPath(); + this.moveTo(x+r,y); + this.lineTo(x+w-r,y); + this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); + this.lineTo(x+w,y+h-r); + this.arc(x+w-r,y+h-r,r,0,r2d*90,false); + this.lineTo(x+r,y+h); + this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); + this.lineTo(x,y+r); + this.arc(x+r,y+r,r,r2d*180,r2d*270,false); + }; - d3powA = Math.pow(d3, alpha); - d3pow2A = Math.pow(d3,2*alpha); - d2powA = Math.pow(d2, alpha); - d2pow2A = Math.pow(d2,2*alpha); - d1powA = Math.pow(d1, alpha); - d1pow2A = Math.pow(d1,2*alpha); + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { + var kappa = .5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle - A = 2*d1pow2A + 3*d1powA * d2powA + d2pow2A; - B = 2*d3pow2A + 3*d3powA * d2powA + d2pow2A; - N = 3*d1powA * (d1powA + d2powA); - if (N > 0) {N = 1 / N;} - M = 3*d3powA * (d3powA + d2powA); - if (M > 0) {M = 1 / M;} + this.beginPath(); + this.moveTo(x, ym); + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + }; - bp1 = { x: ((-d2pow2A * p0.x + A*p1.x + d1pow2A * p2.x) * N), - y: ((-d2pow2A * p0.y + A*p1.y + d1pow2A * p2.y) * N)}; - bp2 = { x: (( d3pow2A * p1.x + B*p2.x - d2pow2A * p3.x) * M), - y: (( d3pow2A * p1.y + B*p2.y - d2pow2A * p3.y) * M)}; - if (bp1.x == 0 && bp1.y == 0) {bp1 = p1;} - if (bp2.x == 0 && bp2.y == 0) {bp2 = p2;} - d += 'C' + - bp1.x + ',' + - bp1.y + ' ' + - bp2.x + ',' + - bp2.y + ' ' + - p2.x + ',' + - p2.y + ' '; - } + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { + var f = 1/3; + var wEllipse = w; + var hEllipse = h * f; - return d; - } - }; + var kappa = .5522848, + ox = (wEllipse / 2) * kappa, // control point offset horizontal + oy = (hEllipse / 2) * kappa, // control point offset vertical + xe = x + wEllipse, // x-end + ye = y + hEllipse, // y-end + xm = x + wEllipse / 2, // x-middle + ym = y + hEllipse / 2, // y-middle + ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse + yeb = y + h; // y-end, bottom ellipse - /** - * this generates the SVG path for a linear drawing between datapoints. - * @param data - * @returns {string} - * @private - */ - Line._linear = function(data) { - // linear - var d = ''; - for (var i = 0; i < data.length; i++) { - if (i == 0) { - d += data[i].x + ',' + data[i].y; - } - else { - d += ' ' + data[i].x + ',' + data[i].y; + this.beginPath(); + this.moveTo(xe, ym); + + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + + this.lineTo(xe, ymb); + + this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); + this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); + + this.lineTo(x, ym); + }; + + + /** + * Draw an arrow point (no line) + */ + CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { + // tail + var xt = x - length * Math.cos(angle); + var yt = y - length * Math.sin(angle); + + // inner tail + // TODO: allow to customize different shapes + var xi = x - length * 0.9 * Math.cos(angle); + var yi = y - length * 0.9 * Math.sin(angle); + + // left + var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); + var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); + + // right + var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); + var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); + + this.beginPath(); + this.moveTo(x, y); + this.lineTo(xl, yl); + this.lineTo(xi, yi); + this.lineTo(xr, yr); + this.closePath(); + }; + + /** + * Sets up the dashedLine functionality for drawing + * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas + * @author David Jordan + * @date 2012-08-08 + */ + CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ + if (!dashArray) dashArray=[10,5]; + if (dashLength==0) dashLength = 0.001; // Hack for Safari + var dashCount = dashArray.length; + this.moveTo(x, y); + var dx = (x2-x), dy = (y2-y); + var slope = dy/dx; + var distRemaining = Math.sqrt( dx*dx + dy*dy ); + var dashIndex=0, draw=true; + while (distRemaining>=0.1){ + var dashLength = dashArray[dashIndex++%dashCount]; + if (dashLength > distRemaining) dashLength = distRemaining; + var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); + if (dx<0) xStep = -xStep; + x += xStep; + y += slope*xStep; + this[draw ? 'lineTo' : 'moveTo'](x,y); + distRemaining -= dashLength; + draw = !draw; } - } - return d; - }; + }; - module.exports = Line; + // TODO: add diamond shape + } /***/ }, -/* 50 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { /** * Created by Alex on 11/11/2014. */ var DOMutil = __webpack_require__(2); - var Points = __webpack_require__(51); + var Points = __webpack_require__(53); - function Bargraph(groupId, options) { + function Line(groupId, options) { this.groupId = groupId; this.options = options; } - Bargraph.prototype.getYRange = function(groupData) { - if (this.options.barChart.handleOverlap != 'stack') { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; - } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; - } - else { - var barCombinedData = []; - for (var j = 0; j < groupData.length; j++) { - barCombinedData.push({ - x: groupData[j].x, - y: groupData[j].y, - groupId: this.groupId - }); - } - return barCombinedData; + Line.prototype.getYRange = function(groupData) { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; } + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; }; - /** - * draw a bar graph + * draw a line graph * - * @param groupIds - * @param processedGroupData + * @param dataset + * @param group */ - Bargraph.draw = function (groupIds, processedGroupData, framework) { - var combinedData = []; - var intersections = {}; - var coreDistance; - var key, drawData; - var group; - var i,j; + Line.prototype.draw = function (dataset, group, framework) { + if (dataset != null) { + if (dataset.length > 0) { + var path, d; + var svgHeight = Number(framework.svg.style.height.replace('px','')); + path = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); + path.setAttributeNS(null, "class", group.className); + if(group.style !== undefined) { + path.setAttributeNS(null, "style", group.style); + } + + // construct path from dataset + if (group.options.catmullRom.enabled == true) { + d = Line._catmullRom(dataset, group); + } + else { + d = Line._linear(dataset); + } + + // append with points for fill and finalize the path + if (group.options.shaded.enabled == true) { + var fillPath = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); + var dFill; + if (group.options.shaded.orientation == 'top') { + dFill = 'M' + dataset[0].x + ',' + 0 + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + 0; + } + else { + dFill = 'M' + dataset[0].x + ',' + svgHeight + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + svgHeight; + } + fillPath.setAttributeNS(null, "class", group.className + " fill"); + if(group.options.shaded.style !== undefined) { + fillPath.setAttributeNS(null, "style", group.options.shaded.style); + } + fillPath.setAttributeNS(null, "d", dFill); + } + // copy properties to path for drawing. + path.setAttributeNS(null, 'd', 'M' + d); + + // draw points + if (group.options.drawPoints.enabled == true) { + Points.draw(dataset, group, framework); + } + } + } + }; + + + + /** + * This uses an uniform parametrization of the CatmullRom algorithm: + * 'On the Parameterization of Catmull-Rom Curves' by Cem Yuksel et al. + * @param data + * @returns {string} + * @private + */ + Line._catmullRomUniform = function(data) { + // catmull rom + var p0, p1, p2, p3, bp1, bp2; + var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; + var normalization = 1/6; + var length = data.length; + for (var i = 0; i < length - 1; i++) { + + p0 = (i == 0) ? data[0] : data[i-1]; + p1 = data[i]; + p2 = data[i+1]; + p3 = (i + 2 < length) ? data[i+2] : p2; + + + // Catmull-Rom to Cubic Bezier conversion matrix + // 0 1 0 0 + // -1/6 1 1/6 0 + // 0 1/6 1 -1/6 + // 0 0 1 0 + + // bp0 = { x: p1.x, y: p1.y }; + bp1 = { x: ((-p0.x + 6*p1.x + p2.x) *normalization), y: ((-p0.y + 6*p1.y + p2.y) *normalization)}; + bp2 = { x: (( p1.x + 6*p2.x - p3.x) *normalization), y: (( p1.y + 6*p2.y - p3.y) *normalization)}; + // bp0 = { x: p2.x, y: p2.y }; + + d += 'C' + + bp1.x + ',' + + bp1.y + ' ' + + bp2.x + ',' + + bp2.y + ' ' + + p2.x + ',' + + p2.y + ' '; + } + + return d; + }; + + /** + * This uses either the chordal or centripetal parameterization of the catmull-rom algorithm. + * By default, the centripetal parameterization is used because this gives the nicest results. + * These parameterizations are relatively heavy because the distance between 4 points have to be calculated. + * + * One optimization can be used to reuse distances since this is a sliding window approach. + * @param data + * @param group + * @returns {string} + * @private + */ + Line._catmullRom = function(data, group) { + var alpha = group.options.catmullRom.alpha; + if (alpha == 0 || alpha === undefined) { + return this._catmullRomUniform(data); + } + else { + var p0, p1, p2, p3, bp1, bp2, d1,d2,d3, A, B, N, M; + var d3powA, d2powA, d3pow2A, d2pow2A, d1pow2A, d1powA; + var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; + var length = data.length; + for (var i = 0; i < length - 1; i++) { + + p0 = (i == 0) ? data[0] : data[i-1]; + p1 = data[i]; + p2 = data[i+1]; + p3 = (i + 2 < length) ? data[i+2] : p2; + + d1 = Math.sqrt(Math.pow(p0.x - p1.x,2) + Math.pow(p0.y - p1.y,2)); + d2 = Math.sqrt(Math.pow(p1.x - p2.x,2) + Math.pow(p1.y - p2.y,2)); + d3 = Math.sqrt(Math.pow(p2.x - p3.x,2) + Math.pow(p2.y - p3.y,2)); + + // Catmull-Rom to Cubic Bezier conversion matrix + + // A = 2d1^2a + 3d1^a * d2^a + d3^2a + // B = 2d3^2a + 3d3^a * d2^a + d2^2a + + // [ 0 1 0 0 ] + // [ -d2^2a /N A/N d1^2a /N 0 ] + // [ 0 d3^2a /M B/M -d2^2a /M ] + // [ 0 0 1 0 ] + + d3powA = Math.pow(d3, alpha); + d3pow2A = Math.pow(d3,2*alpha); + d2powA = Math.pow(d2, alpha); + d2pow2A = Math.pow(d2,2*alpha); + d1powA = Math.pow(d1, alpha); + d1pow2A = Math.pow(d1,2*alpha); + + A = 2*d1pow2A + 3*d1powA * d2powA + d2pow2A; + B = 2*d3pow2A + 3*d3powA * d2powA + d2pow2A; + N = 3*d1powA * (d1powA + d2powA); + if (N > 0) {N = 1 / N;} + M = 3*d3powA * (d3powA + d2powA); + if (M > 0) {M = 1 / M;} + + bp1 = { x: ((-d2pow2A * p0.x + A*p1.x + d1pow2A * p2.x) * N), + y: ((-d2pow2A * p0.y + A*p1.y + d1pow2A * p2.y) * N)}; + + bp2 = { x: (( d3pow2A * p1.x + B*p2.x - d2pow2A * p3.x) * M), + y: (( d3pow2A * p1.y + B*p2.y - d2pow2A * p3.y) * M)}; + + if (bp1.x == 0 && bp1.y == 0) {bp1 = p1;} + if (bp2.x == 0 && bp2.y == 0) {bp2 = p2;} + d += 'C' + + bp1.x + ',' + + bp1.y + ' ' + + bp2.x + ',' + + bp2.y + ' ' + + p2.x + ',' + + p2.y + ' '; + } + + return d; + } + }; + + /** + * this generates the SVG path for a linear drawing between datapoints. + * @param data + * @returns {string} + * @private + */ + Line._linear = function(data) { + // linear + var d = ''; + for (var i = 0; i < data.length; i++) { + if (i == 0) { + d += data[i].x + ',' + data[i].y; + } + else { + d += ' ' + data[i].x + ',' + data[i].y; + } + } + return d; + }; + + module.exports = Line; + + +/***/ }, +/* 52 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Created by Alex on 11/11/2014. + */ + var DOMutil = __webpack_require__(2); + var Points = __webpack_require__(53); + + function Bargraph(groupId, options) { + this.groupId = groupId; + this.options = options; + } + + Bargraph.prototype.getYRange = function(groupData) { + if (this.options.barChart.handleOverlap != 'stack') { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; + } + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; + } + else { + var barCombinedData = []; + for (var j = 0; j < groupData.length; j++) { + barCombinedData.push({ + x: groupData[j].x, + y: groupData[j].y, + groupId: this.groupId + }); + } + return barCombinedData; + } + }; + + + + /** + * draw a bar graph + * + * @param groupIds + * @param processedGroupData + */ + Bargraph.draw = function (groupIds, processedGroupData, framework) { + var combinedData = []; + var intersections = {}; + var coreDistance; + var key, drawData; + var group; + var i,j; var barPoints = 0; // combine all barchart data @@ -23292,7 +23579,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Bargraph; /***/ }, -/* 51 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { /** @@ -23340,582 +23627,310 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Points; /***/ }, -/* 52 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { - // English - exports['en'] = { - edit: 'Edit', - del: 'Delete selected', - back: 'Back', - addNode: 'Add Node', - addEdge: 'Add Edge', - editNode: 'Edit Node', - editEdge: 'Edit Edge', - addDescription: 'Click in an empty space to place a new node.', - edgeDescription: 'Click on a node and drag the edge to another node to connect them.', - editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', - createEdgeError: 'Cannot link edges to a cluster.', - deleteClusterError: 'Clusters cannot be deleted.' + var PhysicsMixin = __webpack_require__(66); + var ClusterMixin = __webpack_require__(60); + var SectorsMixin = __webpack_require__(61); + var SelectionMixin = __webpack_require__(62); + var ManipulationMixin = __webpack_require__(63); + var NavigationMixin = __webpack_require__(64); + var HierarchicalLayoutMixin = __webpack_require__(65); + + /** + * Load a mixin into the network object + * + * @param {Object} sourceVariable | this object has to contain functions. + * @private + */ + exports._loadMixin = function (sourceVariable) { + for (var mixinFunction in sourceVariable) { + if (sourceVariable.hasOwnProperty(mixinFunction)) { + this[mixinFunction] = sourceVariable[mixinFunction]; + } + } }; - exports['en_EN'] = exports['en']; - exports['en_US'] = exports['en']; - // Dutch - exports['nl'] = { - edit: 'Wijzigen', - del: 'Selectie verwijderen', - back: 'Terug', - addNode: 'Node toevoegen', - addEdge: 'Link toevoegen', - editNode: 'Node wijzigen', - editEdge: 'Link wijzigen', - addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.', - edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.', - editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.', - createEdgeError: 'Kan geen link maken naar een cluster.', - deleteClusterError: 'Clusters kunnen niet worden verwijderd.' + + /** + * removes a mixin from the network object. + * + * @param {Object} sourceVariable | this object has to contain functions. + * @private + */ + exports._clearMixin = function (sourceVariable) { + for (var mixinFunction in sourceVariable) { + if (sourceVariable.hasOwnProperty(mixinFunction)) { + this[mixinFunction] = undefined; + } + } }; - exports['nl_NL'] = exports['nl']; - exports['nl_BE'] = exports['nl']; -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { + /** + * Mixin the physics system and initialize the parameters required. + * + * @private + */ + exports._loadPhysicsSystem = function () { + this._loadMixin(PhysicsMixin); + this._loadSelectedForceSolver(); + if (this.constants.configurePhysics == true) { + this._loadPhysicsConfiguration(); + } + else { + this._cleanupPhysicsConfiguration(); + } + }; + /** - * Canvas shapes used by Network + * Mixin the cluster system and initialize the parameters required. + * + * @private */ - if (typeof CanvasRenderingContext2D !== 'undefined') { + exports._loadClusterSystem = function () { + this.clusterSession = 0; + this.hubThreshold = 5; + this._loadMixin(ClusterMixin); + }; - /** - * Draw a circle shape - */ - CanvasRenderingContext2D.prototype.circle = function(x, y, r) { - this.beginPath(); - this.arc(x, y, r, 0, 2*Math.PI, false); - }; - /** - * Draw a square shape - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r size, width and height of the square - */ - CanvasRenderingContext2D.prototype.square = function(x, y, r) { - this.beginPath(); - this.rect(x - r, y - r, r * 2, r * 2); - }; + /** + * Mixin the sector system and initialize the parameters required + * + * @private + */ + exports._loadSectorSystem = function () { + this.sectors = {}; + this.activeSector = ["default"]; + this.sectors["active"] = {}; + this.sectors["active"]["default"] = {"nodes": {}, + "edges": {}, + "nodeIndices": [], + "formationScale": 1.0, + "drawingNode": undefined }; + this.sectors["frozen"] = {}; + this.sectors["support"] = {"nodes": {}, + "edges": {}, + "nodeIndices": [], + "formationScale": 1.0, + "drawingNode": undefined }; - /** - * Draw a triangle shape - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius, half the length of the sides of the triangle - */ - CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { - // http://en.wikipedia.org/wiki/Equilateral_triangle - this.beginPath(); + this.nodeIndices = this.sectors["active"]["default"]["nodeIndices"]; // the node indices list is used to speed up the computation of the repulsion fields - var s = r * 2; - var s2 = s / 2; - var ir = Math.sqrt(3) / 6 * s; // radius of inner circle - var h = Math.sqrt(s * s - s2 * s2); // height + this._loadMixin(SectorsMixin); + }; - this.moveTo(x, y - (h - ir)); - this.lineTo(x + s2, y + ir); - this.lineTo(x - s2, y + ir); - this.lineTo(x, y - (h - ir)); - this.closePath(); - }; - /** - * Draw a triangle shape in downward orientation - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius - */ - CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { - // http://en.wikipedia.org/wiki/Equilateral_triangle - this.beginPath(); + /** + * Mixin the selection system and initialize the parameters required + * + * @private + */ + exports._loadSelectionSystem = function () { + this.selectionObj = {nodes: {}, edges: {}}; - var s = r * 2; - var s2 = s / 2; - var ir = Math.sqrt(3) / 6 * s; // radius of inner circle - var h = Math.sqrt(s * s - s2 * s2); // height + this._loadMixin(SelectionMixin); + }; - this.moveTo(x, y + (h - ir)); - this.lineTo(x + s2, y - ir); - this.lineTo(x - s2, y - ir); - this.lineTo(x, y + (h - ir)); - this.closePath(); - }; - /** - * Draw a star shape, a star with 5 points - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius, half the length of the sides of the triangle - */ - CanvasRenderingContext2D.prototype.star = function(x, y, r) { - // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ - this.beginPath(); + /** + * Mixin the navigationUI (User Interface) system and initialize the parameters required + * + * @private + */ + exports._loadManipulationSystem = function () { + // reset global variables -- these are used by the selection of nodes and edges. + this.blockConnectingEdgeSelection = false; + this.forceAppendSelection = false; - for (var n = 0; n < 10; n++) { - var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; - this.lineTo( - x + radius * Math.sin(n * 2 * Math.PI / 10), - y - radius * Math.cos(n * 2 * Math.PI / 10) - ); + if (this.constants.dataManipulation.enabled == true) { + // load the manipulator HTML elements. All styling done in css. + if (this.manipulationDiv === undefined) { + this.manipulationDiv = document.createElement('div'); + this.manipulationDiv.className = 'network-manipulationDiv'; + if (this.editMode == true) { + this.manipulationDiv.style.display = "block"; + } + else { + this.manipulationDiv.style.display = "none"; + } + this.frame.appendChild(this.manipulationDiv); } - this.closePath(); - }; + if (this.editModeDiv === undefined) { + this.editModeDiv = document.createElement('div'); + this.editModeDiv.className = 'network-manipulation-editMode'; + if (this.editMode == true) { + this.editModeDiv.style.display = "none"; + } + else { + this.editModeDiv.style.display = "block"; + } + this.frame.appendChild(this.editModeDiv); + } - /** - * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas - */ - CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { - var r2d = Math.PI/180; - if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x - if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y - this.beginPath(); - this.moveTo(x+r,y); - this.lineTo(x+w-r,y); - this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); - this.lineTo(x+w,y+h-r); - this.arc(x+w-r,y+h-r,r,0,r2d*90,false); - this.lineTo(x+r,y+h); - this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); - this.lineTo(x,y+r); - this.arc(x+r,y+r,r,r2d*180,r2d*270,false); - }; + if (this.closeDiv === undefined) { + this.closeDiv = document.createElement('div'); + this.closeDiv.className = 'network-manipulation-closeDiv'; + this.closeDiv.style.display = this.manipulationDiv.style.display; + this.frame.appendChild(this.closeDiv); + } - /** - * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - */ - CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { - var kappa = .5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - this.beginPath(); - this.moveTo(x, ym); - this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - }; + // load the manipulation functions + this._loadMixin(ManipulationMixin); + // create the manipulator toolbar + this._createManipulatorBar(); + } + else { + if (this.manipulationDiv !== undefined) { + // removes all the bindings and overloads + this._createManipulatorBar(); + // remove the manipulation divs + this.frame.removeChild(this.manipulationDiv); + this.frame.removeChild(this.editModeDiv); + this.frame.removeChild(this.closeDiv); - /** - * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - */ - CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { - var f = 1/3; - var wEllipse = w; - var hEllipse = h * f; + this.manipulationDiv = undefined; + this.editModeDiv = undefined; + this.closeDiv = undefined; + // remove the mixin functions + this._clearMixin(ManipulationMixin); + } + } + }; - var kappa = .5522848, - ox = (wEllipse / 2) * kappa, // control point offset horizontal - oy = (hEllipse / 2) * kappa, // control point offset vertical - xe = x + wEllipse, // x-end - ye = y + hEllipse, // y-end - xm = x + wEllipse / 2, // x-middle - ym = y + hEllipse / 2, // y-middle - ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse - yeb = y + h; // y-end, bottom ellipse - this.beginPath(); - this.moveTo(xe, ym); + /** + * Mixin the navigation (User Interface) system and initialize the parameters required + * + * @private + */ + exports._loadNavigationControls = function () { + this._loadMixin(NavigationMixin); + // the clean function removes the button divs, this is done to remove the bindings. + this._cleanNavigation(); + if (this.constants.navigation.enabled == true) { + this._loadNavigationElements(); + } + }; - this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + /** + * Mixin the hierarchical layout system. + * + * @private + */ + exports._loadHierarchySystem = function () { + this._loadMixin(HierarchicalLayoutMixin); + }; - this.lineTo(xe, ymb); - this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); - this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { - this.lineTo(x, ym); - }; + var keycharm = __webpack_require__(57); + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + /** + * Turn an element into an clickToUse element. + * When not active, the element has a transparent overlay. When the overlay is + * clicked, the mode is changed to active. + * When active, the element is displayed with a blue border around it, and + * the interactive contents of the element can be used. When clicked outside + * the element, the elements mode is changed to inactive. + * @param {Element} container + * @constructor + */ + function Activator(container) { + this.active = false; - /** - * Draw an arrow point (no line) - */ - CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { - // tail - var xt = x - length * Math.cos(angle); - var yt = y - length * Math.sin(angle); + this.dom = { + container: container + }; - // inner tail - // TODO: allow to customize different shapes - var xi = x - length * 0.9 * Math.cos(angle); - var yi = y - length * 0.9 * Math.sin(angle); + this.dom.overlay = document.createElement('div'); + this.dom.overlay.className = 'overlay'; - // left - var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); - var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); + this.dom.container.appendChild(this.dom.overlay); - // right - var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); - var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); + this.hammer = Hammer(this.dom.overlay, {prevent_default: false}); + this.hammer.on('tap', this._onTapOverlay.bind(this)); - this.beginPath(); - this.moveTo(x, y); - this.lineTo(xl, yl); - this.lineTo(xi, yi); - this.lineTo(xr, yr); - this.closePath(); - }; + // block all touch events (except tap) + var me = this; + var events = [ + 'touch', 'pinch', + 'doubletap', 'hold', + 'dragstart', 'drag', 'dragend', + 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox + ]; + events.forEach(function (event) { + me.hammer.on(event, function (event) { + event.stopPropagation(); + }); + }); - /** - * Sets up the dashedLine functionality for drawing - * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas - * @author David Jordan - * @date 2012-08-08 - */ - CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ - if (!dashArray) dashArray=[10,5]; - if (dashLength==0) dashLength = 0.001; // Hack for Safari - var dashCount = dashArray.length; - this.moveTo(x, y); - var dx = (x2-x), dy = (y2-y); - var slope = dy/dx; - var distRemaining = Math.sqrt( dx*dx + dy*dy ); - var dashIndex=0, draw=true; - while (distRemaining>=0.1){ - var dashLength = dashArray[dashIndex++%dashCount]; - if (dashLength > distRemaining) dashLength = distRemaining; - var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); - if (dx<0) xStep = -xStep; - x += xStep; - y += slope*xStep; - this[draw ? 'lineTo' : 'moveTo'](x,y); - distRemaining -= dashLength; - draw = !draw; + // attach a tap event to the window, in order to deactivate when clicking outside the timeline + this.windowHammer = Hammer(window, {prevent_default: false}); + this.windowHammer.on('tap', function (event) { + // deactivate when clicked outside the container + if (!_hasParent(event.target, container)) { + me.deactivate(); } - }; + }); - // TODO: add diamond shape - } + if (this.keycharm !== undefined) { + this.keycharm.destroy(); + } + this.keycharm = keycharm(); + // keycharm listener only bounded when active) + this.escListener = this.deactivate.bind(this); + } -/***/ }, -/* 54 */ -/***/ function(module, exports, __webpack_require__) { + // turn into an event emitter + Emitter(Activator.prototype); - var PhysicsMixin = __webpack_require__(66); - var ClusterMixin = __webpack_require__(60); - var SectorsMixin = __webpack_require__(61); - var SelectionMixin = __webpack_require__(62); - var ManipulationMixin = __webpack_require__(63); - var NavigationMixin = __webpack_require__(64); - var HierarchicalLayoutMixin = __webpack_require__(65); + // The currently active activator + Activator.current = null; /** - * Load a mixin into the network object - * - * @param {Object} sourceVariable | this object has to contain functions. - * @private + * Destroy the activator. Cleans up all created DOM and event listeners */ - exports._loadMixin = function (sourceVariable) { - for (var mixinFunction in sourceVariable) { - if (sourceVariable.hasOwnProperty(mixinFunction)) { - this[mixinFunction] = sourceVariable[mixinFunction]; - } - } - }; + Activator.prototype.destroy = function () { + this.deactivate(); + // remove dom + this.dom.overlay.parentNode.removeChild(this.dom.overlay); - /** - * removes a mixin from the network object. - * - * @param {Object} sourceVariable | this object has to contain functions. - * @private - */ - exports._clearMixin = function (sourceVariable) { - for (var mixinFunction in sourceVariable) { - if (sourceVariable.hasOwnProperty(mixinFunction)) { - this[mixinFunction] = undefined; - } - } + // cleanup hammer instances + this.hammer = null; + this.windowHammer = null; + // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory) }; - /** - * Mixin the physics system and initialize the parameters required. - * - * @private + * Activate the element + * Overlay is hidden, element is decorated with a blue shadow border */ - exports._loadPhysicsSystem = function () { - this._loadMixin(PhysicsMixin); - this._loadSelectedForceSolver(); - if (this.constants.configurePhysics == true) { - this._loadPhysicsConfiguration(); - } - else { - this._cleanupPhysicsConfiguration(); + Activator.prototype.activate = function () { + // we allow only one active activator at a time + if (Activator.current) { + Activator.current.deactivate(); } - }; + Activator.current = this; - - /** - * Mixin the cluster system and initialize the parameters required. - * - * @private - */ - exports._loadClusterSystem = function () { - this.clusterSession = 0; - this.hubThreshold = 5; - this._loadMixin(ClusterMixin); - }; - - - /** - * Mixin the sector system and initialize the parameters required - * - * @private - */ - exports._loadSectorSystem = function () { - this.sectors = {}; - this.activeSector = ["default"]; - this.sectors["active"] = {}; - this.sectors["active"]["default"] = {"nodes": {}, - "edges": {}, - "nodeIndices": [], - "formationScale": 1.0, - "drawingNode": undefined }; - this.sectors["frozen"] = {}; - this.sectors["support"] = {"nodes": {}, - "edges": {}, - "nodeIndices": [], - "formationScale": 1.0, - "drawingNode": undefined }; - - this.nodeIndices = this.sectors["active"]["default"]["nodeIndices"]; // the node indices list is used to speed up the computation of the repulsion fields - - this._loadMixin(SectorsMixin); - }; - - - /** - * Mixin the selection system and initialize the parameters required - * - * @private - */ - exports._loadSelectionSystem = function () { - this.selectionObj = {nodes: {}, edges: {}}; - - this._loadMixin(SelectionMixin); - }; - - - /** - * Mixin the navigationUI (User Interface) system and initialize the parameters required - * - * @private - */ - exports._loadManipulationSystem = function () { - // reset global variables -- these are used by the selection of nodes and edges. - this.blockConnectingEdgeSelection = false; - this.forceAppendSelection = false; - - if (this.constants.dataManipulation.enabled == true) { - // load the manipulator HTML elements. All styling done in css. - if (this.manipulationDiv === undefined) { - this.manipulationDiv = document.createElement('div'); - this.manipulationDiv.className = 'network-manipulationDiv'; - if (this.editMode == true) { - this.manipulationDiv.style.display = "block"; - } - else { - this.manipulationDiv.style.display = "none"; - } - this.frame.appendChild(this.manipulationDiv); - } - - if (this.editModeDiv === undefined) { - this.editModeDiv = document.createElement('div'); - this.editModeDiv.className = 'network-manipulation-editMode'; - if (this.editMode == true) { - this.editModeDiv.style.display = "none"; - } - else { - this.editModeDiv.style.display = "block"; - } - this.frame.appendChild(this.editModeDiv); - } - - if (this.closeDiv === undefined) { - this.closeDiv = document.createElement('div'); - this.closeDiv.className = 'network-manipulation-closeDiv'; - this.closeDiv.style.display = this.manipulationDiv.style.display; - this.frame.appendChild(this.closeDiv); - } - - // load the manipulation functions - this._loadMixin(ManipulationMixin); - - // create the manipulator toolbar - this._createManipulatorBar(); - } - else { - if (this.manipulationDiv !== undefined) { - // removes all the bindings and overloads - this._createManipulatorBar(); - - // remove the manipulation divs - this.frame.removeChild(this.manipulationDiv); - this.frame.removeChild(this.editModeDiv); - this.frame.removeChild(this.closeDiv); - - this.manipulationDiv = undefined; - this.editModeDiv = undefined; - this.closeDiv = undefined; - // remove the mixin functions - this._clearMixin(ManipulationMixin); - } - } - }; - - - /** - * Mixin the navigation (User Interface) system and initialize the parameters required - * - * @private - */ - exports._loadNavigationControls = function () { - this._loadMixin(NavigationMixin); - // the clean function removes the button divs, this is done to remove the bindings. - this._cleanNavigation(); - if (this.constants.navigation.enabled == true) { - this._loadNavigationElements(); - } - }; - - - /** - * Mixin the hierarchical layout system. - * - * @private - */ - exports._loadHierarchySystem = function () { - this._loadMixin(HierarchicalLayoutMixin); - }; - - -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { - - var keycharm = __webpack_require__(59); - var Emitter = __webpack_require__(56); - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); - - /** - * Turn an element into an clickToUse element. - * When not active, the element has a transparent overlay. When the overlay is - * clicked, the mode is changed to active. - * When active, the element is displayed with a blue border around it, and - * the interactive contents of the element can be used. When clicked outside - * the element, the elements mode is changed to inactive. - * @param {Element} container - * @constructor - */ - function Activator(container) { - this.active = false; - - this.dom = { - container: container - }; - - this.dom.overlay = document.createElement('div'); - this.dom.overlay.className = 'overlay'; - - this.dom.container.appendChild(this.dom.overlay); - - this.hammer = Hammer(this.dom.overlay, {prevent_default: false}); - this.hammer.on('tap', this._onTapOverlay.bind(this)); - - // block all touch events (except tap) - var me = this; - var events = [ - 'touch', 'pinch', - 'doubletap', 'hold', - 'dragstart', 'drag', 'dragend', - 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox - ]; - events.forEach(function (event) { - me.hammer.on(event, function (event) { - event.stopPropagation(); - }); - }); - - // attach a tap event to the window, in order to deactivate when clicking outside the timeline - this.windowHammer = Hammer(window, {prevent_default: false}); - this.windowHammer.on('tap', function (event) { - // deactivate when clicked outside the container - if (!_hasParent(event.target, container)) { - me.deactivate(); - } - }); - - if (this.keycharm !== undefined) { - this.keycharm.destroy(); - } - this.keycharm = keycharm(); - - // keycharm listener only bounded when active) - this.escListener = this.deactivate.bind(this); - } - - // turn into an event emitter - Emitter(Activator.prototype); - - // The currently active activator - Activator.current = null; - - /** - * Destroy the activator. Cleans up all created DOM and event listeners - */ - Activator.prototype.destroy = function () { - this.deactivate(); - - // remove dom - this.dom.overlay.parentNode.removeChild(this.dom.overlay); - - // cleanup hammer instances - this.hammer = null; - this.windowHammer = null; - // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory) - }; - - /** - * Activate the element - * Overlay is hidden, element is decorated with a blue shadow border - */ - Activator.prototype.activate = function () { - // we allow only one active activator at a time - if (Activator.current) { - Activator.current.deactivate(); - } - Activator.current = this; - - this.active = true; - this.dom.overlay.style.display = 'none'; - util.addClassName(this.dom.container, 'vis-active'); + this.active = true; + this.dom.overlay.style.display = 'none'; + util.addClassName(this.dom.container, 'vis-active'); this.emit('change'); this.emit('activate'); @@ -24146,5417 +24161,5310 @@ return /******/ (function(modules) { // webpackBootstrap /* 57 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.9.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com - - (function (undefined) { - /************************************ - Constants - ************************************/ + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; + /** + * Created by Alex on 11/6/2014. + */ - var moment, - VERSION = '2.9.0', - // the global-scope this is NOT the global object in Node.js - globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, - - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, - - // internal storage for locale config files - locales = {}, + // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 + // if the module has no dependencies, the above pattern can be simplified to + (function (root, factory) { + if (true) { + // AMD. Register as an anonymous module. + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals (root is window) + root.keycharm = factory(); + } + }(this, function () { - // extra moment internal properties (plugins register props here) - momentProperties = [], + function keycharm(options) { + var preventDefault = options && options.preventDefault || false; - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), + var container = options && options.container || window; - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + var _exportFunctions = {}; + var _bound = {keydown:{}, keyup:{}}; + var _keys = {}; + var i; - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + // a - z + for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} + // A - Z + for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} + // 0 - 9 + for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} + // F1 - F12 + for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} + // num0 - num9 + for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + // numpad misc + _keys['num*'] = {code:106, shift: false}; + _keys['num+'] = {code:107, shift: false}; + _keys['num-'] = {code:109, shift: false}; + _keys['num/'] = {code:111, shift: false}; + _keys['num.'] = {code:110, shift: false}; + // arrows + _keys['left'] = {code:37, shift: false}; + _keys['up'] = {code:38, shift: false}; + _keys['right'] = {code:39, shift: false}; + _keys['down'] = {code:40, shift: false}; + // extra keys + _keys['space'] = {code:32, shift: false}; + _keys['enter'] = {code:13, shift: false}; + _keys['shift'] = {code:16, shift: undefined}; + _keys['esc'] = {code:27, shift: false}; + _keys['backspace'] = {code:8, shift: false}; + _keys['tab'] = {code:9, shift: false}; + _keys['ctrl'] = {code:17, shift: false}; + _keys['alt'] = {code:18, shift: false}; + _keys['delete'] = {code:46, shift: false}; + _keys['pageup'] = {code:33, shift: false}; + _keys['pagedown'] = {code:34, shift: false}; + // symbols + _keys['='] = {code:187, shift: false}; + _keys['-'] = {code:189, shift: false}; + _keys[']'] = {code:221, shift: false}; + _keys['['] = {code:219, shift: false}; - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - // iso 8601 regex - // 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) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + var down = function(event) {handleEvent(event,'keydown');}; + var up = function(event) {handleEvent(event,'keyup');}; - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + // handle the actualy bound key with the event + var handleEvent = function(event,type) { + if (_bound[type][event.keyCode] !== undefined) { + var bound = _bound[type][event.keyCode]; + for (var i = 0; i < bound.length; i++) { + if (bound[i].shift === undefined) { + bound[i].fn(event); + } + else if (bound[i].shift == true && event.shiftKey == true) { + bound[i].fn(event); + } + else if (bound[i].shift == false && event.shiftKey == false) { + bound[i].fn(event); + } + } - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + if (preventDefault == true) { + event.preventDefault(); + } + } + }; - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], + // bind a key to a callback + _exportFunctions.bind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (_bound[type][_keys[key].code] === undefined) { + _bound[type][_keys[key].code] = []; + } + _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); + }; - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + // bind all keys to a call back (demo purposes) + _exportFunctions.bindAll = function(callback, type) { + if (type === undefined) { + type = 'keydown'; + } + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + _exportFunctions.bind(key,callback,type); + } + } + }; - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, + // get the key label from an event + _exportFunctions.getKey = function(event) { + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { + return key; + } + else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { + return key; + } + else if (event.keyCode == _keys[key].code && key == 'shift') { + return key; + } + } + } + return "unknown key, currently not supported"; + }; - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + // unbind either a specific callback from a key or all of them (by leaving callback undefined) + _exportFunctions.unbind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (callback !== undefined) { + var newBindings = []; + var bound = _bound[type][_keys[key].code]; + if (bound !== undefined) { + for (var i = 0; i < bound.length; i++) { + if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { + newBindings.push(_bound[type][_keys[key].code][i]); + } + } + } + _bound[type][_keys[key].code] = newBindings; + } + else { + _bound[type][_keys[key].code] = []; + } + }; - // format function strings - formatFunctions = {}, + // reset all bound variables. + _exportFunctions.reset = function() { + _bound = {keydown:{}, keyup:{}}; + }; - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, - - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), - - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, - - deprecations = {}, + // unbind all listeners and reset all variables. + _exportFunctions.destroy = function() { + _bound = {keydown:{}, keyup:{}}; + container.removeEventListener('keydown', down, true); + container.removeEventListener('keyup', up, true); + }; - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + // create listeners. + container.addEventListener('keydown',down,true); + container.addEventListener('keyup',up,true); - updateInProgress = false; + // return the public functions. + return _exportFunctions; + } - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } + return keycharm; + })); - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } +/***/ }, +/* 58 */ +/***/ function(module, exports, __webpack_require__) { - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; - } + (function(window, undefined) { + 'use strict'; - function monthDiff(a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } + /** + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` + * + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} + */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); + }; - return -(wholeMonthDiff + adjust); - } - - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); - } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; + /** + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} + */ + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // thie is not supposed to happen - return hour; - } - } + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', - /************************************ - Constructors - ************************************/ + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - function Locale() { - } + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - moment.updateOffset(this); - updateInProgress = false; - } + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' } + }; - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - this._data = {}; + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - this._locale = moment.localeData(); + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - this._bubble(); - } + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; - /************************************ - Helpers - ************************************/ + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; + /** + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} + */ + var EVENT_TYPES = {}; - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - return a; - } + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - function copyConfig(to, from) { - var i, prop, val; + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - return to; + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; } - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } + // find what eventtypes we add listeners to + Event.determineEventTypes(); - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + // Hammer is ready...! + Hammer.READY = true; + } - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; } + return dest; + }, - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, - return res; - } + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; + + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + // objects } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } + } } + }, - return res; - } + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } } - - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } - - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); + return false; } - } + }, - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } - - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; } + node = node.parentNode; } - return diffs + lengthDiff; - } + return false; + }, - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; + + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; } - return units; - } - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, - return normalizedInput; - } + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, - function makeList(field) { - var count, setter; + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } + return Math.atan2(y, x) * 180 / Math.PI; + }, - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); - if (typeof format === 'number') { - index = format; - format = undefined; - } + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } + return Math.sqrt((x * x) + (y * y)); + }, - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + } + return 1; + }, - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); } + return 0; + }, - return value; - } + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } + } + }, - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; + } - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + var falseFn = toggle && function() { + return false; + }; - m._pf.overflow = overflow; + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; } - } - - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; - - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; - } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; } - return m._isValid; - } + }, - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); } + }; - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } + /** + * @module hammer + */ + /** + * @class Event + * @static + */ + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; - } + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - // Return a moment from input, that is local/utc/utcOffset equivalent to - // model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); - } - } + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - /************************************ - Locale - ************************************/ + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - extend(Locale.prototype, { + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); - }, + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; + } - monthsParse : function (monthName, format, strict) { - var i, mom, regex; + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - }, - - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, - - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, - - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, - - weekdaysParse : function (weekdayName) { - var i, mom, regex; - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); } - }, - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection } - return output; - }, - - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); } - }, - - - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; - }, - - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, - - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + }; - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, - preparse : function (string) { - return string; - }, + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; - postformat : function (string) { - return string; - }, + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } - firstDayOfWeek : function () { - return this._week.dow; - }, + // detection has been started, we keep track of this, see above + this.started = true; - firstDayOfYear : function () { - return this._week.doy; - }, + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); } - }); - /************************************ - Formatting - ************************************/ + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; + handler.call(Detection, evData); - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); + evData.eventType = triggerType; + delete evData.changedLength; } - return input.replace(/\\/g, ''); - } - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; } - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } + return triggerType; + }, - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; } - format = expandFormat(format, m.localeData()); + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); } - return formatFunctions[format](m); - } + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } - function expandFormat(format, locale) { - var i = 5; + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; + return touchList; } - return format; - } + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; + } - /************************************ - Parsing - ************************************/ + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, + + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; - } + }; } + }; - function utcOffsetFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); - - return parts[0] === '+' ? minutes : -minutes; - } - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + /** + * @module hammer + * + * @class PointerEvent + * @static + */ + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); - } + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._meridiem = input; - // config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = utcOffsetFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); - } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; } - } + }, - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; + } - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + var pt = ev.pointerType, + types = {}; - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; + } + }; - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } + /** + * @module hammer + * + * @class Detection + * @static + */ + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + // data of the current Hammer.gesture detection session + current: null, - if (config._d) { - return; - } + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - currentDate = currentDateArray(config); + // when this becomes true, no gestures are fired + stopped: false, - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; } - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + this.stopped = false; - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + this.detect(eventData); + }, - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; } - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); + + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; } - if (config._nextDay) { - config._a[HOUR] = 24; + if(eventData.eventType == EVENT_END) { + this.stopDetect(); } - } - function dateFromObject(config) { - var normalizedInput; + return eventData; + }, - if (config._d) { - return; - } + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + // reset the current + this.current = null; + this.stopped = true; + }, - dateFromConfig(config); - } + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; } - } - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; } - config._a = []; - config._pf.empty = true; + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); - } - } + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); } - // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], - config._meridiem); - dateFromConfig(config); - checkOverflow(config); - } + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } + Utils.extend(ev, { + startEvent: startEv, - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - scoreToBeat, - i, - currentScore; + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } + return ev; + }, - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); - - if (!isValid(tempConfig)) { - continue; - } + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + // set its index + gesture.index = gesture.index || 1000; - tempConfig._pf.score = currentScore; + // add Hammer.gesture to the list + this.gestures.push(gesture); - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; } - } + if(a.index > b.index) { + return 1; + } + return 0; + }); - extend(config, bestMoment || tempConfig); + return this.gestures; } + }; - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } - } + /** + * @module hammer + */ - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } + /** + * create new hammer instance + * all methods should return the instance itself, so it is chainable. + * + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} + */ + Hammer.Instance = function(element, options) { + var self = this; - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); } - /************************************ - Relative Time - ************************************/ + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); - } + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - /************************************ - Week of Year - ************************************/ + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } + element.dispatchEvent(event); + return this; + }, - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); } - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } - - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + this.eventHandlers = []; - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; + return null; } + }; - /************************************ - Top Level Functions - ************************************/ - - function makeMoment(config) { - var input = config._i, - format = config._f, - res; - config._locale = config._locale || moment.localeData(config._l); + /** + * @module gestures + */ + /** + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Drag + * @static + */ + /** + * @event drag + * @param {Object} ev + */ + /** + * @event dragstart + * @param {Object} ev + */ + /** + * @event dragend + * @param {Object} ev + */ + /** + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev + */ - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + function dragGesture(ev, inst) { + var cur = Detection.current; - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; } - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - return res; - } + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - moment = function (input, format, locale, strict) { - var c; + var startCenter = cur.startEvent.center; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; - return makeMoment(c); - }; + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - moment.suppressDeprecationWarnings = false; + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); - - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } - moment.min = function () { - var args = [].slice.call(arguments, 0); + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - return pickBy('isBefore', args); - }; + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - moment.max = function () { - var args = [].slice.call(arguments, 0); + var isVertical = Utils.isVertical(ev.direction); - return pickBy('isAfter', args); - }; + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + case EVENT_END: + triggered = false; + break; } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + } - return makeMoment(c).utc(); - }; + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - ret = new Duration(duration); + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 } - - return ret; }; + })('drag'); - // version number - moment.version = VERSION; - - // default format - moment.defaultFormat = isoFormat; + /** + * @module gestures + */ + /** + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... + * + * @class Gesture + * @static + */ + /** + * @event gesture + * @param {Object} ev + */ + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); + } + }; - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; - - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + /** + * @param {String} name + */ + (function(name) { + var timer; - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); - } - ); + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } + // set the gesture so we can check in the timeout if it still is + current.name = name; - if (data) { - moment.duration._locale = moment._locale = data; - } - } + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; - return moment._locale._abbr; - }; + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); + case EVENT_RELEASE: + clearTimeout(timer); + break; + } + } - // backwards compat for now: also set the locale - moment.locale(name); + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture }; + })('hold'); - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); + /** + * @module gestures + */ + /** + * when a touch is being released from the page + * + * @class Release + * @static + */ + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); } - ); - - // returns locale data - moment.localeData = function (key) { - var locale; + } + }; - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + /** + * @module gestures + */ + /** + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Swipe + * @static + */ + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - if (!key) { - return moment._locale; - } + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - return chooseLocale(key); - }; + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; + } - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } + } } + }; - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; - - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + /** + * @module gestures + */ + /** + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ - return m; - }; + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - moment.isDate = isDate; + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - /************************************ - Moment Prototype - ************************************/ + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - extend(moment.fn = Moment.prototype, { + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; + } + } - clone : function () { - return moment(this); - }, + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - valueOf : function () { - return +this._d - ((this._offset || 0) * 60000); - }, + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - unix : function () { - return Math.floor(+this / 1000); - }, + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, + /** + * @module gestures + */ + /** + * when a touch is being touched at the page + * + * @class Touch + * @static + */ + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; + } - isValid : function () { - return isValid(this); - }, + if(inst.options.preventDefault) { + ev.preventDefault(); + } - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } + } + }; - return false; - }, + /** + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev + */ - parsingFlags : function () { - return extend({}, this._pf); - }, + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - invalidAt: function () { - return this._pf.overflow; - }, + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - utc : function (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - }, + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - local : function (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - if (keepLocalTime) { - this.subtract(this._dateUtcOffset(), 'm'); + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; } - } - return this; - }, - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + // we are transforming! + Detection.current.name = name; - add : createAdder(1, 'add'), + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - subtract : createAdder(-1, 'subtract'), + inst.trigger(name, ev); // basic transform event - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, - anchor, diff, output, daysAdjust; + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - units = normalizeUnits(units); + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; } - } else { - diff = this - that; - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + break; + } + } - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 }, - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're locat/utc/offset - // or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); - }, + handler: transformGesture + }; + })('transform'); - isLeapYear : function () { - return isLeapYear(this.year()); - }, + /** + * @module hammer + */ - isDST : function () { - return (this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset()); - }, + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, + })(window); - month : makeAccessor('Month', true), +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.8.4 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + (function (undefined) { + /************************************ + Constants + ************************************/ - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + var moment, + VERSION = '2.8.4', + // the global-scope this is NOT the global object in Node.js + globalScope = typeof global !== 'undefined' ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - return this; - }, + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + // internal storage for locale config files + locales = {}, - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, + // extra moment internal properties (plugins register props here) + momentProperties = [], - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module && module.exports), - isBetween: function (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - }, + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - }, - - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), - - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), - - zone : deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. ' + - 'https://github.com/moment/moment/issues/1779', - function (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } - - this.utcOffset(input, keepLocalTime); - - return this; - } else { - return -this.utcOffset(); - } - } - ), - - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - utcOffset : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = utcOffsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateUtcOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } - - return this; - } else { - return this._isUTC ? offset : this._dateUtcOffset(); - } - }, - - isLocal : function () { - return !this._isUTC; - }, - - isUtcOffset : function () { - return this._isUTC; - }, - - isUtc : function () { - return this._isUTC && this._offset === 0; - }, - - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, - - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, - - parseZone : function () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(utcOffsetFromString(this._i)); - } - return this; - }, - - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).utcOffset(); - } - - return (this.utcOffset() - input) % 60 === 0; - }, + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + // iso 8601 regex + // 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) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 }, - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' }, - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' }, - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + // format function strings + formatFunctions = {}, - set : function (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } - else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - } - return this; + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year }, - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), - - localeData : function () { - return this._locale; + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = -this.zone(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = -this.zone(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + x : function () { + return this.valueOf(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } }, - _dateUtcOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(this._d.getTimezoneOffset() / 15) * 15; - } - - }); + deprecations = {}, - function rawMonthSetter(mom, value) { - var dayOfMonth; + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); } + } - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); } - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); } } - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; } - }; + return fn.apply(this, arguments); + }, fn); } - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - // alias isUtc for dev-friendliness - moment.fn.isUTC = moment.fn.isUtc; /************************************ - Duration Prototype + Constructors ************************************/ - - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; + function Locale() { } - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); } - extend(moment.duration.fn = Duration.prototype, { - - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + this._data = {}; - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + this._locale = moment.localeData(); - hours = absRound(minutes / 60); - data.hours = hours % 24; + this._bubble(); + } - days += absRound(hours / 24); + /************************************ + Helpers + ************************************/ - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - data.days = days; - data.months = months; - data.years = years; - }, + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + return a; + } - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + function copyConfig(to, from) { + var i, prop, val; - return this; - }, + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } - weeks : function () { - return absRound(this.days() / 7); - }, + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + return to; + } - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - return this.localeData().postformat(output); - }, + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } - this._bubble(); + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - return this; - }, + return res; + } - subtract : function (input, val) { - var dur = moment.duration(input, val); + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + return res; + } - this._bubble(); + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); return this; - }, - - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + }; + } - as : function (units) { - var days, months; - units = normalizeUnits(units); + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - }, + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } + } - lang : moment.fn.lang, - locale : moment.fn.locale, + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; } - ), + } + return diffs + lengthDiff; + } - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } } + } - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, + return normalizedInput; + } - localeData : function () { - return this._locale; - }, + function makeList(field) { + var count, setter; - toJSON : function () { - return this.toISOString(); + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; } - }); - moment.duration.fn.toString = moment.duration.fn.toISOString; + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; + if (typeof format === 'number') { + index = format; + format = undefined; + } + + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; + + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } }; } - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } } + + return value; } - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - /************************************ - Default Locale - ************************************/ + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - /* EMBED_LOCALES */ + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 24 || + (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || + m._a[SECOND] !== 0 || + m._a[MILLISECOND] !== 0)) ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; - /************************************ - Exposing Moment - ************************************/ + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; + m._pf.overflow = overflow; } } - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } - - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); - } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) - -/***/ }, -/* 58 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; - (function(window, undefined) { - 'use strict'; + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; + } - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } - /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} - */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); - }; + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; - /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} - */ - Hammer.VERSION = '1.1.3'; + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} - */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', + // Return a moment from input, that is local/utc/zone equivalent to model. + function makeAs(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (moment.isMoment(input) || isDate(input) ? + +input : +moment(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + moment.updateOffset(res, false); + return res; + } else { + return moment(input).local(); + } + } - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + /************************************ + Locale + ************************************/ - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + extend(Locale.prototype, { - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' - } - }; + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + }, - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} - */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + monthsParse : function (monthName, format, strict) { + var i, mom, regex; - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} - */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = moment.utc([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + }, - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, - /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} - */ - var EVENT_TYPES = {}; + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' - */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' - */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + weekdaysParse : function (weekdayName) { + var i, mom, regex; - /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' - */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, - /** - * plugins namespace - * @property plugins - * @type {Object} - */ - Hammer.plugins = Hammer.plugins || {}; + _longDateFormat : { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} - */ - Hammer.gestures = Hammer.gestures || {}; + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private - */ - function setup() { - if(Hammer.READY) { - return; - } + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, - // find what eventtypes we add listeners to - Event.determineEventTypes(); + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom, [now]) : output; + }, - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - // Hammer is ready...! - Hammer.READY = true; - } + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - /** - * @module hammer - * - * @class Utils - * @static - */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; - } - return dest; - }, + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + _ordinalParse : /\d{1,2}/, - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + preparse : function (string) { + return string; + }, - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + postformat : function (string) { + return string; + }, - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, + + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); + + /************************************ + Formatting + ************************************/ + + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } + } + + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); } - }, - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, + format = expandFormat(format, m.localeData()); - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; - } + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } + + return formatFunctions[format](m); + } + + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + + /************************************ + Parsing + ************************************/ + + + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'x': + return parseTokenOffsetMs; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } + } + + function timezoneMinutesFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? -minutes : minutes; + } + + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; + + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt( + input.match(/\d{1,2}/)[0], 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } + + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._isPm = config._locale.isPM(input); + break; + // HOUR + case 'h' : // fall through to hh + case 'hh' : + config._pf.bigHour = true; + /* falls through */ + case 'H' : // fall through to HH + case 'HH' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX OFFSET (MILLISECONDS) + case 'x': + config._d = new Date(toInt(input)); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = timezoneMinutesFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; } - return false; - } - }, - - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, - - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); } - node = node.parentNode; - } - return false; - }, - - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; - - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); } + } - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); - - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, - - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - return Math.atan2(y, x) * 180 / Math.PI; - }, + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, - - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - return Math.sqrt((x * x) + (y * y)); - }, + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + if (config._d) { + return; } - return 0; - }, - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + currentDate = currentDateArray(config); - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); - } + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; } + + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); } - }, - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; } - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } - var falseFn = toggle && function() { - return false; - }; + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual zone can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm); } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; + + if (config._nextDay) { + config._a[HOUR] = 24; } - }, + } - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); + function dateFromObject(config) { + var normalizedInput; + + if (config._d) { + return; + } + + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day || normalizedInput.date, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; + + dateFromConfig(config); } - }; + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } - /** - * @module hammer - */ - /** - * @class Event - * @static - */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + config._a = []; + config._pf.empty = true; - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; + } + // handle am pm + if (config._isPm && config._a[HOUR] < 12) { + config._a[HOUR] += 12; + } + // if is 12 am, change hours to 0 + if (config._isPm === false && config._a[HOUR] === 12) { + config._a[HOUR] = 0; + } + dateFromConfig(config); + checkOverflow(config); + } - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + scoreToBeat, + i, + currentScore; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; } - }; + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + if (!isValid(tempConfig)) { + continue; + } - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + tempConfig._pf.score = currentScore; - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } } - // detection has been started, we keep track of this, see above - this.started = true; + extend(config, bestMoment || tempConfig); + } - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; } + } - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; - - handler.call(Detection, evData); - - evData.eventType = triggerType; - delete evData.changedLength; + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); } + } - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); - - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); } + return res; + } - return triggerType; - }, - - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; - } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; - } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; + moment.createFromInputFallback(config); } + } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } + + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); } + return date; + } - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); } - - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; - - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; } - identifiers.push(touch.identifier); - }); - - return touchList; + } } + return input; + } - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + /************************************ + Relative Time + ************************************/ - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); } - }; - /** - * @module hammer - * - * @class PointerEvent - * @static - */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + /************************************ + Week of Year + ************************************/ - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; - }, - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; + + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; } - }, - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; } - var pt = ev.pointerType, - types = {}; + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; } - }; + /************************************ + Top Level Functions + ************************************/ - /** - * @module hammer - * - * @class Detection - * @static - */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], + function makeMoment(config) { + var input = config._i, + format = config._f, + res; - // data of the current Hammer.gesture detection session - current: null, + config._locale = config._locale || moment.localeData(config._l); - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } - // when this becomes true, no gestures are fired - stopped: false, + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); } - this.stopped = false; + res = new Moment(config); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; + return res; + } - this.detect(eventData); - }, + moment = function (input, format, locale, strict) { + var c; - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); - - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + return makeMoment(c); + }; - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); + moment.suppressDeprecationWarnings = false; - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); } + ); - if(eventData.eventType == EVENT_END) { - this.stopDetect(); + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } } + return res; + } - return eventData; - }, + moment.min = function () { + var args = [].slice.call(arguments, 0); - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + return pickBy('isBefore', args); + }; - // reset the current - this.current = null; - this.stopped = true; - }, + moment.max = function () { + var args = [].slice.call(arguments, 0); - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + return pickBy('isAfter', args); + }; - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); - - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; - } + return makeMoment(c).utc(); + }; - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; } - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + ret = new Duration(duration); - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } - Utils.extend(ev, { - startEvent: startEv, + return ret; + }; - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + // version number + moment.version = VERSION; - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + // default format + moment.defaultFormat = isoFormat; - return ev; - }, + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; - } + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; - // set its index - gesture.index = gesture.index || 1000; + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - // add Hammer.gesture to the list - this.gestures.push(gesture); + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); } - if(a.index > b.index) { - return 1; + else { + data = moment.localeData(key); } - return 0; - }); - - return this.gestures; - } - }; + if (data) { + moment.duration._locale = moment._locale = data; + } + } - /** - * @module hammer - */ + return moment._locale._abbr; + }; - /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. - * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} - */ - Hammer.Instance = function(element, options) { - var self = this; + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + // backwards compat for now: also set the locale + moment.locale(name); - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + }; - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); + } + ); - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); + // returns locale data + moment.localeData = function (key) { + var locale; - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); - } + if (!key) { + return moment._locale; + } - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; } - }); - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + return chooseLocale(key); + }; - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; + + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } + + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; + + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } + + return m; + }; - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); - } - }); - return self; - }, + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + /************************************ + Moment Prototype + ************************************/ - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } - element.dispatchEvent(event); - return this; - }, + extend(moment.fn = Moment.prototype, { - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + clone : function () { + return moment(this); + }, - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + valueOf : function () { + return +this._d + ((this._offset || 0) * 60000); + }, - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + unix : function () { + return Math.floor(+this / 1000); + }, - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, - this.eventHandlers = []; + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, - return null; - } - }; + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, + isValid : function () { + return isValid(this); + }, - /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev - */ + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + return false; + }, - function dragGesture(ev, inst) { - var cur = Detection.current; + parsingFlags : function () { + return extend({}, this._pf); + }, - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + invalidAt: function () { + return this._pf.overflow; + }, - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + utc : function (keepLocalTime) { + return this.zone(0, keepLocalTime); + }, - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; + local : function (keepLocalTime) { + if (this._isUTC) { + this.zone(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.add(this._dateTzOffset(), 'm'); } + } + return this; + }, - var startCenter = cur.startEvent.center; + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + add : createAdder(1, 'add'), - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } + subtract : createAdder(-1, 'subtract'), + + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (this.zone() - that.zone()) * 6e4, + diff, output, daysAdjust; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month') { + // average number of days in the months in the given dates + diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 + // difference in months + output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); + // adjust by taking difference in days, average number of days + // and dst in the given months. + daysAdjust = (this - moment(this).startOf('month')) - + (that - moment(that).startOf('month')); + // same as above but with zones, to negate all dst + daysAdjust -= ((this.zone() - moment(this).startOf('month').zone()) - + (that.zone() - moment(that).startOf('month').zone())) * 6e4; + output += daysAdjust / diff; + if (units === 'year') { + output = output / 12; } + } else { + diff = (this - that); + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, + + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, + + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, + + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're zone'd or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, moment(now))); + }, - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + isLeapYear : function () { + return isLeapYear(this.year()); + }, - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } + isDST : function () { + return (this.zone() < this.clone().month(0).zone() || + this.zone() < this.clone().month(5).zone()); + }, - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + month : makeAccessor('Month', true), - var isVertical = Utils.isVertical(ev.direction); + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } - case EVENT_END: - triggered = false; - break; - } - } + return this; + }, - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, + endOf: function (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + isAfter: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return inputMs < +this.clone().startOf(units); + } + }, - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + isBefore: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return +this.clone().endOf(units) < inputMs; + } + }, - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + isSame: function (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + inputMs = +moment(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + }, - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 - } - }; - })('drag'); + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + zone : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = timezoneMinutesFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateTzOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.subtract(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(offset - input, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } + } + } else { + return this._isUTC ? offset : this._dateTzOffset(); + } + return this; + }, - /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... - * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev - */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); - } - }; + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, - /** - * @param {String} name - */ - (function(name) { - var timer; + parseZone : function () { + if (this._tzm) { + this.zone(this._tzm); + } else if (typeof this._i === 'string') { + this.zone(this._i); + } + return this; + }, - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).zone(); + } - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + return (this.zone() - input) % 60 === 0; + }, - // set the gesture so we can check in the timeout if it still is - current.name = name; + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - case EVENT_RELEASE: - clearTimeout(timer); - break; - } - } + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); }, - handler: holdGesture - }; - })('hold'); - /** - * @module gestures - */ - /** - * when a touch is being released from the page - * - * @class Release - * @static - */ - /** - * @event release - * @param {Object} ev - */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } - } - }; + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev - */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, + + set : function (units, value) { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + return this; + }, + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; } + }, - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); + lang : deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } } - } - } - }; - - /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ + ), - /** - * @param {String} name - */ - (function(name) { - var hasMoved = false; + localeData : function () { + return this._locale; + }, - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + _dateTzOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return Math.round(this._d.getTimezoneOffset() / 15) * 15; + } + }); - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + function rawMonthSetter(mom, value) { + var dayOfMonth; - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); } } - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; + } - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); + /************************************ + Duration Prototype + ************************************/ - /** - * @module gestures - */ - /** - * when a touch is being touched at the page - * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev - */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } + + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } + + extend(moment.duration.fn = Duration.prototype, { + + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - if(inst.options.preventDefault) { - ev.preventDefault(); - } + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } - } - }; + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; - /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. - * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev - */ - /** - * @event rotate - * @param {Object} ev - */ + hours = absRound(minutes / 60); + data.hours = hours % 24; - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + days += absRound(hours / 24); - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + data.days = days; + data.months = months; + data.years = years; + }, - // we are transforming! - Detection.current.name = name; + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); - inst.trigger(name, ev); // basic transform event + return this; + }, - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } + weeks : function () { + return absRound(this.days() / 7); + }, - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; - } - } + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 + return this.localeData().postformat(output); }, - handler: transformGesture - }; - })('transform'); + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); - /** - * @module hammer - */ + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } + this._bubble(); - })(window); + return this; + }, -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { + subtract : function (input, val) { + var dur = moment.duration(input, val); - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; - /** - * Created by Alex on 11/6/2014. - */ + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 - // if the module has no dependencies, the above pattern can be simplified to - (function (root, factory) { - if (true) { - // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals (root is window) - root.keycharm = factory(); - } - }(this, function () { + this._bubble(); - function keycharm(options) { - var preventDefault = options && options.preventDefault || false; + return this; + }, - var container = options && options.container || window; + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - var _exportFunctions = {}; - var _bound = {keydown:{}, keyup:{}}; - var _keys = {}; - var i; + as : function (units) { + var days, months; + units = normalizeUnits(units); - // a - z - for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} - // A - Z - for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} - // 0 - 9 - for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} - // F1 - F12 - for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} - // num0 - num9 - for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + }, - // numpad misc - _keys['num*'] = {code:106, shift: false}; - _keys['num+'] = {code:107, shift: false}; - _keys['num-'] = {code:109, shift: false}; - _keys['num/'] = {code:111, shift: false}; - _keys['num.'] = {code:110, shift: false}; - // arrows - _keys['left'] = {code:37, shift: false}; - _keys['up'] = {code:38, shift: false}; - _keys['right'] = {code:39, shift: false}; - _keys['down'] = {code:40, shift: false}; - // extra keys - _keys['space'] = {code:32, shift: false}; - _keys['enter'] = {code:13, shift: false}; - _keys['shift'] = {code:16, shift: undefined}; - _keys['esc'] = {code:27, shift: false}; - _keys['backspace'] = {code:8, shift: false}; - _keys['tab'] = {code:9, shift: false}; - _keys['ctrl'] = {code:17, shift: false}; - _keys['alt'] = {code:18, shift: false}; - _keys['delete'] = {code:46, shift: false}; - _keys['pageup'] = {code:33, shift: false}; - _keys['pagedown'] = {code:34, shift: false}; - // symbols - _keys['='] = {code:187, shift: false}; - _keys['-'] = {code:189, shift: false}; - _keys[']'] = {code:221, shift: false}; - _keys['['] = {code:219, shift: false}; + lang : moment.fn.lang, + locale : moment.fn.locale, + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - var down = function(event) {handleEvent(event,'keydown');}; - var up = function(event) {handleEvent(event,'keyup');}; + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } - // handle the actualy bound key with the event - var handleEvent = function(event,type) { - if (_bound[type][event.keyCode] !== undefined) { - var bound = _bound[type][event.keyCode]; - for (var i = 0; i < bound.length; i++) { - if (bound[i].shift === undefined) { - bound[i].fn(event); - } - else if (bound[i].shift == true && event.shiftKey == true) { - bound[i].fn(event); - } - else if (bound[i].shift == false && event.shiftKey == false) { - bound[i].fn(event); - } - } + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, - if (preventDefault == true) { - event.preventDefault(); + localeData : function () { + return this._locale; } - } - }; + }); - // bind a key to a callback - _exportFunctions.bind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (_bound[type][_keys[key].code] === undefined) { - _bound[type][_keys[key].code] = []; - } - _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); - }; + moment.duration.fn.toString = moment.duration.fn.toISOString; + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } - // bind all keys to a call back (demo purposes) - _exportFunctions.bindAll = function(callback, type) { - if (type === undefined) { - type = 'keydown'; - } - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - _exportFunctions.bind(key,callback,type); + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); } - } - }; + } - // get the key label from an event - _exportFunctions.getKey = function(event) { - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { - return key; - } - else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { - return key; - } - else if (event.keyCode == _keys[key].code && key == 'shift') { - return key; - } - } - } - return "unknown key, currently not supported"; + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); }; - - // unbind either a specific callback from a key or all of them (by leaving callback undefined) - _exportFunctions.unbind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (callback !== undefined) { - var newBindings = []; - var bound = _bound[type][_keys[key].code]; - if (bound !== undefined) { - for (var i = 0; i < bound.length; i++) { - if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { - newBindings.push(_bound[type][_keys[key].code][i]); - } - } - } - _bound[type][_keys[key].code] = newBindings; - } - else { - _bound[type][_keys[key].code] = []; - } + moment.duration.fn.asSeconds = function () { + return this.as('s'); }; - - // reset all bound variables. - _exportFunctions.reset = function() { - _bound = {keydown:{}, keyup:{}}; + moment.duration.fn.asMinutes = function () { + return this.as('m'); }; - - // unbind all listeners and reset all variables. - _exportFunctions.destroy = function() { - _bound = {keydown:{}, keyup:{}}; - container.removeEventListener('keydown', down, true); - container.removeEventListener('keyup', up, true); + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); }; - // create listeners. - container.addEventListener('keydown',down,true); - container.addEventListener('keyup',up,true); + /************************************ + Default Locale + ************************************/ - // return the public functions. - return _exportFunctions; - } - return keycharm; - })); + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + /* EMBED_LOCALES */ + + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); + } + }).call(this); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) /***/ }, /* 60 */ diff --git a/dist/vis.map b/dist/vis.map index 38f0d1eb..96153cd4 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","setAttributeNS","size","drawBar","width","height","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","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","slice","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","hide","show","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupIndex","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","_calculateHeight","offsetTop","offsetLeft","ii","repositionY","resetSubgroups","labelSet","setParent","orderSubgroups","_checkIfVisible","sortArray","sortField","removeFromDataSet","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","repositionX","initialPos","breakCondition","isVisible","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","box","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","selected","dragLeftItem","dragRightItem","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","onTop","itemSubgroup","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","existing","_new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","boundingBox","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","dispose","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","nodeUnderCursor","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popup","setPosition","setText","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","getBoundingBox","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","atan2","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","DEFAULT","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","centerX","centerY","_drawRawCircle","circle","clip","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","custom","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","boundFunction","edgeBeingEdited","selectedControlNode","_createAddNodeToolbar","_createAddEdgeToolbar","_editNode","_createEditEdgeToolbar","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","setAttributeNS","size","drawBar","width","height","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","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","slice","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","hide","show","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupIndex","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","_calculateHeight","offsetTop","offsetLeft","ii","repositionY","resetSubgroups","labelSet","setParent","orderSubgroups","_checkIfVisible","sortArray","sortField","removeFromDataSet","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","repositionX","initialPos","breakCondition","isVisible","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","box","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","selected","dragLeftItem","dragRightItem","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","onTop","itemSubgroup","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","existing","_new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","boundingBox","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","dispose","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","nodeUnderCursor","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popup","setPosition","setText","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","getBoundingBox","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","atan2","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","DEFAULT","_resolveRelativeUrl","url","img","load","brokenUrl","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","centerX","centerY","_drawRawCircle","circle","clip","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","meridiem","SS","SSS","SSSS","Z","zone","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateTzOffset","inputString","asFloat","daysAdjust","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","inputMs","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","boundFunction","edgeBeingEdited","selectedControlNode","_createAddNodeToolbar","_createAddEdgeToolbar","_editNode","_createEditEdgeToolbar","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index ee99eeb3..adac5488 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.8.1-SNAPSHOT - * @date 2015-01-14 + * @date 2015-01-15 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -24,16 +24,16 @@ */ "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(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.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(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(31),BackgroundItem:i(32),BoxItem:i(33),PointItem:i(34),RangeItem:i(35)},Component:i(20),CurrentTime:i(21),CustomTime:i(22),DataAxis:i(23),GraphGroup:i(24),Group:i(25),BackgroundGroup:i(26),ItemSet:i(27),Legend:i(28),LineGraph:i(29),TimeAxis:i(30)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(module,exports,__webpack_require__){var moment=__webpack_require__(44);exports.isNumber=function(t){return t instanceof Number||"number"==typeof t},exports.isString=function(t){return t instanceof String||"string"==typeof t},exports.isDate=function(t){if(t instanceof Date)return!0;if(exports.isString(t)){var e=ASPDateRegex.exec(t);if(e)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},exports.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},exports.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},exports.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},exports.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},exports.convert=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw new Error("Type must be a string");switch(e){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(moment.isMoment(t))return new Date(t.valueOf());if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])):moment(t).toDate();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"Moment":if(exports.isNumber(t))return moment(t);if(t instanceof Date)return moment(t.valueOf());if(moment.isMoment(t))return moment(t);if(exports.isString(t))return i=ASPDateRegex.exec(t),moment(i?Number(i[1]):t);throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"ISODate":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(moment.isMoment(t))return t.toDate().toISOString();if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ISODate");case"ASPDate":if(exports.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(exports.isString(t)){i=ASPDateRegex.exec(t);var s;return s=i?new Date(Number(i[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+e+'"')}};var ASPDateRegex=/^\/?Date\((\-?\d+)/i;exports.getType=function(t){var e=typeof 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":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},exports.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},exports.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},exports.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},exports.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},exports.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},exports.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},exports.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},exports.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},exports.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},exports.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},exports.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},exports.option={},exports.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},exports.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},exports.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},exports.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),exports.isString(t)?t:exports.isNumber(t)?t+"px":e||null},exports.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},exports.GiveDec=function(Hex){var Value;return Value="A"==Hex?10:"B"==Hex?11:"C"==Hex?12:"D"==Hex?13:"E"==Hex?14:"F"==Hex?15:eval(Hex)},exports.GiveHex=function(t){var e;return e=10==t?"A":11==t?"B":12==t?"C":13==t?"D":14==t?"E":15==t?"F":""+t},exports.parseColor=function(t){var e;if(exports.isString(t)){if(exports.isValidRGB(t)){var i=t.substr(4).substr(0,t.length-5).split(",");t=exports.RGBToHex(i[0],i[1],i[2])}if(exports.isValidHex(t)){var s=exports.hexToHSV(t),o={h:s.h,s:.45*s.s,v:Math.min(1,1.05*s.v)},n={h:s.h,s:Math.min(1,1.25*s.v),v:.6*s.v},r=exports.HSVToHex(n.h,n.h,n.v),a=exports.HSVToHex(o.h,o.s,o.v);e={background:t,border:r,highlight:{background:a,border:r},hover:{background:a,border:r}}}else e={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else e={},e.background=t.background||"white",e.border=t.border||e.background,exports.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border),exports.isString(t.hover)?e.hover={border:t.hover,background:t.hover}:(e.hover={},e.hover.background=t.hover&&t.hover.background||e.background,e.hover.border=t.hover&&t.hover.border||e.border);return e},exports.hexToRGB=function(t){t=t.replace("#","").toUpperCase();var e=exports.GiveDec(t.substring(0,1)),i=exports.GiveDec(t.substring(1,2)),s=exports.GiveDec(t.substring(2,3)),o=exports.GiveDec(t.substring(3,4)),n=exports.GiveDec(t.substring(4,5)),r=exports.GiveDec(t.substring(5,6)),a=16*e+i,h=16*s+o,i=16*n+r;return{r:a,g:h,b:i}},exports.RGBToHex=function(t,e,i){var s=exports.GiveHex(Math.floor(t/16)),o=exports.GiveHex(t%16),n=exports.GiveHex(Math.floor(e/16)),r=exports.GiveHex(e%16),a=exports.GiveHex(Math.floor(i/16)),h=exports.GiveHex(i%16),d=s+o+n+r+a+h;return"#"+d},exports.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var cssUtil={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};exports.addCssText=function(t,e){var i=cssUtil.split(t.style.cssText),s=cssUtil.split(e),o=exports.extend(i,s);t.style.cssText=cssUtil.join(o)},exports.removeCssText=function(t,e){var i=cssUtil.split(t.style.cssText),s=cssUtil.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=cssUtil.join(i)},exports.HSVToRGB=function(t,e,i){var s,o,n,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:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},exports.HSVToHex=function(t,e,i){var s=exports.HSVToRGB(t,e,i);return exports.RGBToHex(s.r,s.g,s.b)},exports.hexToHSV=function(t){var e=exports.hexToRGB(t);return exports.RGBToHSV(e.r,e.g,e.b)},exports.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},exports.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},exports.selectiveBridgeObject=function(t,e){if("object"==typeof e){for(var i=Object.create(e),s=0;s=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},exports.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},exports.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},exports.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?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.5>t?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.5>t?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.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},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?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&r.setAttributeNS(null,"style",s.group.options.drawPoints.styles),r.setAttributeNS(null,"class",s.className+" point"),r},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.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)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var M=this.yLabel;M.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(M,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+M.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),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-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.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)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.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()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.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},t.exports=s},function(t,e,i){function s(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:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.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 s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.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:{snap:null,toScreen:u._toScreen.bind(u),toGlobalScreen:u._toGlobalScreen.bind(u),toTime:u._toTime.bind(u),toGlobalTime:u._toGlobalTime.bind(u)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(30),l=i(21),c=i(22),p=i(27);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.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:{snap:null,toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(30),l=i(21),c=i(22),p=i(29);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(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 s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.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},s.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]):!1},s.prototype.getItemRange=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 s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(48),h=i(44),d=i(20),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(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"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){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}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){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},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.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:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step); -break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=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*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>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)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if("year"==this.scale){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("month"==this.scale)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if("day"==this.scale){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("weekday"==this.scale){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("hour"==this.scale){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if("minute"==this.scale){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if("second"==this.scale)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if("millisecond"==this.scale){var s=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/s)*s)}return e},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,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.switchedMonth=!1,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.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.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=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(20),r=i(44),a=i(47);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.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=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(20),a=i(44),h=i(47);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){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],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(20),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.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)},s.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 s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.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,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.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;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(20),d=i(25),l=i(26),c=i(33),p=i(34),u=i(35),m=i(32),f="__ungrouped__",g="__background__";s.prototype=new h,s.types={background:m,box:c,range:u,point:p},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new l(g,null,this);r.show(),this.groups[g]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(){this.groupIds=[],this.stackDirty=!0},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,v=t.axis+t.item.vertical;return this.groups[g].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,v),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[f];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[f];this.groups[g]}if(this.groupsData){if(i){i.hide(),delete this.groups[f];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new d(n,r,this),this.groups[f]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:f},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==f||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._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}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(20);s.prototype=new r,s.prototype.clear=function(){this.groups={},this.amountOfGroups=0},s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.svg.style.height="100%",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{if(this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position)this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom="";else{var i=this.body.domProps.center.height-this.body.domProps.centerContainer.height;this.dom.frame.style.bottom=4+i+Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""}0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var s="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(s+=this.groups[e].content+"
"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){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.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(20),d=i(23),l=i(24),c=i(28),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",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 d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.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 d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor 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="text major 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},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(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.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){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}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.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=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.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.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" 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}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(31);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.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.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).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._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),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)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),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=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"white",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],_new:[]},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=null,this.lockedOnNodeOffset=null,this.touchTime=0;var o=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(59),a=i(1),h=i(48),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(54),b=i(55),_=i(52);i(53),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.boundingBox.left&&(s=t.boundingBox.left),ot.boundingBox.bottom&&(e=t.boundingBox.bottom),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.'); +var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.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:{snap:null,toScreen:u._toScreen.bind(u),toGlobalScreen:u._toGlobalScreen.bind(u),toTime:u._toTime.bind(u),toGlobalTime:u._toGlobalTime.bind(u)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(30),l=i(21),c=i(22),p=i(27);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.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:{snap:null,toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(30),l=i(21),c=i(22),p=i(29);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(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 s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.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},s.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]):!1},s.prototype.getItemRange=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 s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(20),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(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"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){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}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){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},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.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:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step); +break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=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*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>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)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if("year"==this.scale){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("month"==this.scale)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if("day"==this.scale){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("weekday"==this.scale){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("hour"==this.scale){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if("minute"==this.scale){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if("second"==this.scale)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if("millisecond"==this.scale){var s=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/s)*s)}return e},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,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.switchedMonth=!1,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.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.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=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(20),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.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=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(20),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){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],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(20),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.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)},s.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 s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.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,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.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;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(20),d=i(25),l=i(26),c=i(33),p=i(34),u=i(35),m=i(32),f="__ungrouped__",g="__background__";s.prototype=new h,s.types={background:m,box:c,range:u,point:p},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new l(g,null,this);r.show(),this.groups[g]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(){this.groupIds=[],this.stackDirty=!0},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,v=t.axis+t.item.vertical;return this.groups[g].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,v),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[f];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[f];this.groups[g]}if(this.groupsData){if(i){i.hide(),delete this.groups[f];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new d(n,r,this),this.groups[f]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:f},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==f||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._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}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(20);s.prototype=new r,s.prototype.clear=function(){this.groups={},this.amountOfGroups=0},s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.svg.style.height="100%",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{if(this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position)this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom="";else{var i=this.body.domProps.center.height-this.body.domProps.centerContainer.height;this.dom.frame.style.bottom=4+i+Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""}0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var s="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(s+=this.groups[e].content+"
"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){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.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(20),d=i(23),l=i(24),c=i(28),p=i(52),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",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 d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.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 d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor 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="text major 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},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(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.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){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}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.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=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.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.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" 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}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(31);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.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.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).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._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),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)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),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=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"white",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],_new:[]},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=null,this.lockedOnNodeOffset=null,this.touchTime=0;var o=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(54),b=i(55),_=i(49);i(50),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.boundingBox.left&&(s=t.boundingBox.left),ot.boundingBox.bottom&&(e=t.boundingBox.bottom),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.'); if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",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),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)}var i=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",i._onTap.bind(i)),this.hammer.on("doubletap",i._onDoubleTap.bind(i)),this.hammer.on("hold",i._onHold.bind(i)),this.hammer.on("pinch",i._onPinch.bind(i)),this.hammer.on("touch",i._onTouch.bind(i)),this.hammer.on("dragstart",i._onDragStart.bind(i)),this.hammer.on("drag",i._onDrag.bind(i)),this.hammer.on("dragend",i._onDragEnd.bind(i)),this.hammer.on("mousewheel",i._onMouseWheel.bind(i)),this.hammer.on("DOMMouseScroll",i._onMouseWheel.bind(i)),this.hammer.on("mousemove",i._onMouseMoveTitle.bind(i)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",i._onRelease.bind(i)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof f&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj,o=!1;if(void 0==this.popupObj){var n=this.nodes,r=[];for(e in n)if(n.hasOwnProperty(e)){var a=n[e];a.isOverlappingWith(i)&&void 0!==a.getTitle()&&r.push(e)}r.length>0&&(this.popupObj=this.nodes[r[r.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var h=this.edges,d=[];for(e in h)if(h.hasOwnProperty(e)){var l=h[e];l.connected&&void 0!==l.getTitle()&&l.isOverlappingWith(i)&&d.push(e)}d.length>0&&(this.popupObj=this.edges[d[d.length-1]])}if(this.popupObj){if(this.popupObj!=s){var c=this;c.popup||(c.popup=new v(c.frame,c.constants.tooltip)),c.popup.setPosition(t.x-3,t.y-3),c.popup.setText(c.popupObj.getTitle()),c.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(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=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t,e){for(var i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(t){var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.width*this.pixelRatio,s=this.frame.canvas.height*this.pixelRatio;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth*this.pixelRatio),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight*this.pixelRatio)},1!=t&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),1!=t&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),1==t&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0));var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._redraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.dirtyLabel=!0,this.from=null,this.to=null,this.via=null,this.fromBackup=null,this.toBackup=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(40);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","fontStrokeWidth","fontStrokeColor","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor","labelAlignment"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.dirtyLabel=!0),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine; -break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.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"==s&&(t=i*n>o?this.from.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.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,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.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):(t.fillStyle=this.options.fontFill,t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height))}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):this.src=e},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e;e=0!=this.imageObj.width?this.y+this.height/2:this.y,this._label(t,this.label,this.x,e,void 0,"hanging")},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){this._resizeImage(t)},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth; -t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize),l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var m=this.options.fontSize*h,f=i-c/2,g=s-m/2;"hanging"==n&&(g+=.5*d,g+=4,l+=4),this.labelDimensions={top:g,left:f,width:c,height:m,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(f,g,c,m)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var p=0;h>p;p++)this.options.fontStrokeWidth&&t.strokeText(a[p],i,l),t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)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 v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(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 D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" "; -return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,D=0;M-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=M>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){var s=i(66),o=i(60),n=i(61),r=i(62),a=i(63),h=i(64),d=i(65);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics?this._loadPhysicsConfiguration():this._cleanupPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.frame.removeChild(this.manipulationDiv),this.frame.removeChild(this.editModeDiv),this.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=n(),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(59),r=i(56),a=i(45),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.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)},s.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")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.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 s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Le.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Ce.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return b(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){Mi[t]||(d(e),Mi[t]=!0)}function p(t,e){return function(i){return w(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&F(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&I(t[s])!==I(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function I(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function P(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function A(t){return R(t)?366:365}function R(t){return t%4===0&&t%100!==0||t%400===0}function F(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Pe]<1||t._a[Pe]>z(t._a[Ie],t._a[ze])?Pe:t._a[Ae]<0||t._a[Ae]>24||24===t._a[Ae]&&(0!==t._a[Re]||0!==t._a[Fe]||0!==t._a[He])?Ae:t._a[Re]<0||t._a[Re]>59?Re:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Ie>e||e>Pe)&&(e=Pe),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function U(t){var e,i,s=t.match(Ve);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function V(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=U(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+I(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(I(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=I(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Pe]=I(e));break;case"Do":null!=e&&(o[Pe]=I(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=I(e));break;case"YY":o[Ie]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Ie]=I(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Ae]=I(e);break;case"m":case"mm":o[Re]=I(e);break;case"s":case"ss":o[Fe]=I(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=I(1e3*("0."+e));break;case"x":i._d=new Date(I(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=I(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Ie],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Ie],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Ie]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Pe]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Ie],s[Ie]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Pe]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Ae]&&0===t._a[Re]&&0===t._a[Fe]&&0===t._a[He]&&(t._nextDay=!0,t._a[Ae]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Ae]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ve)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Ae]<=12&&(t._pf.bigHour=n),t._a[Ae]=f(t._locale,t._a[Ae],t._meridiem),$(t),F(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return I(this.milliseconds()/100)},SS:function(){return w(I(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(I(t/60),2)+":"+w(I(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(I(t/60),2)+w(I(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s; -if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:I(h[Pe])*i,h:I(h[Ae])*i,m:I(h[Re])*i,s:I(h[Fe])*i,ms:I(h[He])*i}):(h=Ue.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)L(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return I(t)+(I(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=V(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return R(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return P(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return P(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*I(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===I(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function S(t,e){return new S.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;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){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;ot&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t],delete this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=this.manipulationDiv,e=this.closeDiv,i=this.editModeDiv;1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1,this._redraw()),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,this.manipulationDOM={},1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDOM.addNodeSpan=document.createElement("span"),this.manipulationDOM.addNodeSpan.className="network-manipulationUI add",this.manipulationDOM.addNodeLabelSpan=document.createElement("span"),this.manipulationDOM.addNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addNodeLabelSpan.innerHTML=t.addNode,this.manipulationDOM.addNodeSpan.appendChild(this.manipulationDOM.addNodeLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.addEdgeSpan=document.createElement("span"),this.manipulationDOM.addEdgeSpan.className="network-manipulationUI connect",this.manipulationDOM.addEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.addEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addEdgeLabelSpan.innerHTML=t.addEdge,this.manipulationDOM.addEdgeSpan.appendChild(this.manipulationDOM.addEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.addNodeSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.addEdgeSpan),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?(this.manipulationDOM.seperatorLineDiv2=document.createElement("div"),this.manipulationDOM.seperatorLineDiv2.className="network-seperatorLine",this.manipulationDOM.editNodeSpan=document.createElement("span"),this.manipulationDOM.editNodeSpan.className="network-manipulationUI edit",this.manipulationDOM.editNodeLabelSpan=document.createElement("span"),this.manipulationDOM.editNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editNodeLabelSpan.innerHTML=t.editNode,this.manipulationDOM.editNodeSpan.appendChild(this.manipulationDOM.editNodeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv2),this.manipulationDiv.appendChild(this.manipulationDOM.editNodeSpan)):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.seperatorLineDiv3=document.createElement("div"),this.manipulationDOM.seperatorLineDiv3.className="network-seperatorLine",this.manipulationDOM.editEdgeSpan=document.createElement("span"),this.manipulationDOM.editEdgeSpan.className="network-manipulationUI edit",this.manipulationDOM.editEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.editEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editEdgeLabelSpan.innerHTML=t.editEdge,this.manipulationDOM.editEdgeSpan.appendChild(this.manipulationDOM.editEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv3),this.manipulationDiv.appendChild(this.manipulationDOM.editEdgeSpan)),0==this._selectionIsEmpty()&&(this.manipulationDOM.seperatorLineDiv4=document.createElement("div"),this.manipulationDOM.seperatorLineDiv4.className="network-seperatorLine",this.manipulationDOM.deleteSpan=document.createElement("span"),this.manipulationDOM.deleteSpan.className="network-manipulationUI delete",this.manipulationDOM.deleteLabelSpan=document.createElement("span"),this.manipulationDOM.deleteLabelSpan.className="network-manipulationLabel",this.manipulationDOM.deleteLabelSpan.innerHTML=t.del,this.manipulationDOM.deleteSpan.appendChild(this.manipulationDOM.deleteLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv4),this.manipulationDiv.appendChild(this.manipulationDOM.deleteSpan)),this.manipulationDOM.addNodeSpan.onclick=this._createAddNodeToolbar.bind(this),this.manipulationDOM.addEdgeSpan.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDOM.editNodeSpan.onclick=this._editNode.bind(this):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.editEdgeSpan.onclick=this._createEditEdgeToolbar.bind(this)),0==this._selectionIsEmpty()&&(this.manipulationDOM.deleteSpan.onclick=this._deleteSelected.bind(this)),this.closeDiv.onclick=this._toggleEditMode.bind(this);var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("span"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("span"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this.manipulationDOM.editModeSpan.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this);var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0,this.boundFunction&&this.off("select",this.boundFunction); -var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this);var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.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"==s&&(t=i*n>o?this.from.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.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,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.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):(t.fillStyle=this.options.fontFill,t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height))}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype._resolveRelativeUrl=function(t){var e=document.createElement("img");return e.src=t,t=e.src,e.src=null,t},e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):this.src===this._resolveRelativeUrl(e)?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):this.src=e},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e;e=0!=this.imageObj.width?this.y+this.height/2:this.y,this._label(t,this.label,this.x,e,void 0,"hanging")},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){this._resizeImage(t)},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s +}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize),l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var m=this.options.fontSize*h,f=i-c/2,g=s-m/2;"hanging"==n&&(g+=.5*d,g+=4,l+=4),this.labelDimensions={top:g,left:f,width:c,height:m,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(f,g,c,m)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var p=0;h>p;p++)this.options.fontStrokeWidth&&t.strokeText(a[p],i,l),t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)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 v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(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 D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTops;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){function s(t,e){this.groupId=t,this.options=e}var o=i(2),n=i(53);s.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,s=0;st[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,D=0;M-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=M>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;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){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;os;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return ke.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){De.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){xi[t]||(d(e),xi[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(){}function f(t,e){e!==!1&&A(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=E(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=De.localeData(),this._bubble()}function v(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function y(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),He.length>0)for(i in He)s=He[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&N(t[s])!==N(e[s]))&&r++;return r+n}function O(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=mi[t]||fi[e]||e}return t}function E(t){var e,i,s={};for(i in t)a(t,i)&&(e=O(i),e&&(s[e]=t[i]));return s}function k(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}De[t]=function(s,o){var r,a,h=De._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=De().utc().set(i,t);return h.call(De._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function N(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function L(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return pe(De([t,11,31+e-i]),e,i).week}function z(t){return P(t)?366:365}function P(t){return t%4===0&&t%100!==0||t%400===0}function A(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Le]<0||t._a[Le]>11?Le:t._a[Ie]<1||t._a[Ie]>L(t._a[Ne],t._a[Le])?Ie:t._a[ze]<0||t._a[ze]>24||24===t._a[ze]&&(0!==t._a[Pe]||0!==t._a[Ae]||0!==t._a[Re])?ze:t._a[Pe]<0||t._a[Pe]>59?Pe:t._a[Ae]<0||t._a[Ae]>59?Ae:t._a[Re]<0||t._a[Re]>999?Re:-1,t._pf._overflowDayOfYear&&(Ne>e||e>Ie)&&(e=Ie),t._pf.overflow=e)}function R(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=B(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&T(o,i,!0)>=e-1)break;e--}n++}return null}function B(t){var e=null;if(!Fe[t]&&Be)try{e=De.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),De.locale(e)}catch(i){}return Fe[t]}function Y(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(De.isMoment(t)||C(t)?+t:+De(t))-+i,i._d.setTime(+i._d+s),De.updateOffset(i,!1),i):De(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(je);for(e=0,i=s.length;i>e;e++)s[e]=_i[s[e]]?_i[s[e]]:W(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function j(t,e){return t.isValid()?(e=V(e,t.localeData()),gi[e]||(gi[e]=G(e)),gi[e](t)):t.localeData().invalidDate()}function V(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Ve.lastIndex=0;s>=0&&Ve.test(t);)t=t.replace(Ve,i),Ve.lastIndex=0,s-=1;return t}function U(t,e){var i,s=e._strict;switch(t){case"Q":return ii;case"DDDD":return oi;case"YYYY":case"GGGG":case"gggg":return s?ni:qe;case"Y":case"G":case"g":return ai;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ri:Ze;case"S":if(s)return ii;case"SS":if(s)return si;case"SSS":if(s)return oi;case"DDD":return Xe;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ke;case"a":case"A":return e._locale._meridiemParse;case"x":return ti;case"X":return ei;case"Z":case"ZZ":return $e;case"T":return Je;case"SSSS":return Qe;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?si:Ue;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ue;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match($e)||[],i=e[e.length-1]||[],s=(i+"").match(pi)||["-",0,0],o=+(60*s[1])+N(s[2]);return"+"===s[0]?-o:o}function q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Le]=3*(N(e)-1));break;case"M":case"MM":null!=e&&(o[Le]=N(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[Le]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ie]=N(e));break;case"Do":null!=e&&(o[Ie]=N(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=N(e));break;case"YY":o[Ne]=De.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Ne]=N(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[ze]=N(e);break;case"m":case"mm":o[Pe]=N(e);break;case"s":case"ss":o[Ae]=N(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Re]=N(1e3*("0."+e));break;case"x":i._d=new Date(N(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=N(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=De.parseTwoDigitYear(e)}}function Z(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Ne],pe(De(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Ne],pe(De(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=ue(i,s,o,a,n),t._a[Ne]=h.year,t._dayOfYear=h.dayOfYear}function Q(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ie]&&null==t._a[Le]&&Z(t),t._dayOfYear&&(o=r(t._a[Ne],s[Ne]),t._dayOfYear>z(o)&&(t._pf._overflowDayOfYear=!0),i=he(o,0,t._dayOfYear),t._a[Le]=i.getUTCMonth(),t._a[Ie]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[ze]&&0===t._a[Pe]&&0===t._a[Ae]&&0===t._a[Re]&&(t._nextDay=!0,t._a[ze]=0),t._d=(t._useUTC?he:ae).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm),t._nextDay&&(t._a[ze]=24)}}function K(t){var e;t._d||(e=E(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],Q(t))}function $(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function J(t){if(t._f===De.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=V(t._f,t._locale).match(je)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),_i[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[ze]<=12&&(t._pf.bigHour=n),t._isPm&&t._a[ze]<12&&(t._a[ze]+=12),t._isPm===!1&&12===t._a[ze]&&(t._a[ze]=0),Q(t),A(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));v(t,i||e)}function se(t){var e,i,s=t._i,o=hi.exec(s);if(o){for(t._pf.iso=!0,e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f=li[e][0]+(o[6]||" ");break}for(e=0,i=ci.length;i>e;e++)if(ci[e][1].exec(s)){t._f+=ci[e][0];break}s.match($e)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,De.createFromInputFallback(t))}function ne(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function he(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function de(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function le(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ce(t,e,i){var s=De.duration(t).abs(),o=Ee(s.as("s")),n=Ee(s.as("m")),r=Ee(s.as("h")),a=Ee(s.as("d")),h=Ee(s.as("M")),d=Ee(s.as("y")),l=o0,l[4]=i,le.apply({},l)}function pe(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=De(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ue(t,e,i,s,o){var n,r,a=he(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:z(t-1)+r}}function me(t){var e,i=t._i,s=t._f;return t._locale=t._locale||De.localeData(t._l),null===i||s===n&&""===i?De.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),De.isMoment(i)?new f(i,!0):(s?S(s)?ie(t):J(t):re(t),e=new f(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function fe(t,e){var i,s;if(1===e.length&&S(e[0])&&(e=e[0]),!e.length)return De();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return N(this.milliseconds()/100)},SS:function(){return _(N(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(N(t/60),2)+":"+_(N(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(N(t/60),2)+_(N(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},xi={},wi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];yi.length;)Ce=yi.pop(),_i[Ce+"o"]=u(_i[Ce],Ce);for(;bi.length;)Ce=bi.pop(),_i[Ce+Ce]=p(_i[Ce],2);_i.DDDD=p(_i.DDD,3),v(m.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=De.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=De([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return pe(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),De=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),me(o)},De.suppressDeprecationWarnings=!1,De.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),De.min=function(){var t=[].slice.call(arguments,0);return fe("isBefore",t)},De.max=function(){var t=[].slice.call(arguments,0);return fe("isAfter",t)},De.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),me(o).utc()},De.unix=function(t){return De(1e3*t)},De.duration=function(t,e){var i,s,o,n,r=t,h=null;return De.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=We.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:N(h[Ie])*i,h:N(h[ze])*i,m:N(h[Pe])*i,s:N(h[Ae])*i,ms:N(h[Re])*i}):(h=Ge.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(De(r.from),De(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),De.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},De.version=Te,De.defaultFormat=di,De.ISO_8601=function(){},De.momentProperties=He,De.updateOffset=function(){},De.relativeTimeThreshold=function(t,e){return vi[t]===n?!1:e===n?vi[t]:(vi[t]=e,!0)},De.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return De.locale(t,e)}),De.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?De.defineLocale(t,e):De.localeData(t),i&&(De.duration._locale=De._locale=i)),De._locale._abbr},De.defineLocale=function(t,e){return null!==e?(e.abbr=t,Fe[t]||(Fe[t]=new m),Fe[t].set(e),De.locale(t),Fe[t]):(delete Fe[t],null)},De.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return De.localeData(t)}),De.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return De._locale;if(!S(t)){if(e=B(t))return e;t=[t]}return H(t)},De.isMoment=function(t){return t instanceof f||null!=t&&a(t,"_isAMomentObject")},De.isDuration=function(t){return t instanceof g};for(Ce=wi.length-1;Ce>=0;--Ce)k(wi[Ce]);De.normalizeUnits=function(t){return O(t)},De.invalid=function(t){var e=De.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},De.parseZone=function(){return De.apply(null,arguments).parseZone()},De.parseTwoDigitYear=function(t){return N(t)+(N(t)>68?1900:2e3)},v(De.fn=f.prototype,{clone:function(){return De(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=De(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._dateTzOffset(),"m")),this},format:function(t){var e=j(this,t||De.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n,r=Y(t,this),a=6e4*(this.zone()-r.zone());return e=O(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),o=12*(this.year()-r.year())+(this.month()-r.month()),n=this-De(this).startOf("month")-(r-De(r).startOf("month")),n-=6e4*(this.zone()-De(this).startOf("month").zone()-(r.zone()-De(r).startOf("month").zone())),o+=n/s,"year"===e&&(o/=12)):(s=this-r,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),i?o:b(o)},from:function(t,e){return De.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(De(),t)},calendar:function(t){var e=t||De(),i=Y(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,De(e)))},isLeapYear:function(){return P(this.year())},isDST:function(){return this.zone()+t):(i=De.isMoment(t)?+t:+De(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=O("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=De.isMoment(t)?t:De(t),+t>+this):(i=De.isMoment(t)?+t:+De(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=De.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._dateTzOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateTzOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?D(this,De.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,De.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?De(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return L(this.year(),this.month())},dayOfYear:function(t){var e=Ee((De(this).startOf("day")-De(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=pe(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=pe(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=pe(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=O(t),this[t]()},set:function(t,e){return t=O(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){var e;return t===n?this._locale._abbr:(e=De.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),De.fn.millisecond=De.fn.milliseconds=be("Milliseconds",!1),De.fn.second=De.fn.seconds=be("Seconds",!1),De.fn.minute=De.fn.minutes=be("Minutes",!1),De.fn.hour=De.fn.hours=be("Hours",!0),De.fn.date=be("Date",!0),De.fn.dates=l("dates accessor is deprecated. Use date instead.",be("Date",!0)),De.fn.year=be("FullYear",!0),De.fn.years=l("years accessor is deprecated. Use year instead.",be("FullYear",!0)),De.fn.days=De.fn.day,De.fn.months=De.fn.month,De.fn.weeks=De.fn.week,De.fn.isoWeeks=De.fn.isoWeek,De.fn.quarters=De.fn.quarter,De.fn.toJSON=De.fn.toISOString,v(De.duration.fn=g.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(_e(o)),o-=b(xe(a)),n+=b(o/30),o%=30,a+=b(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*N(this._months/12)},humanize:function(t){var e=ce(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=De.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=De.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=O(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=O(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*_e(e),"month"===t?i:i/12;switch(e=this._days+Math.round(xe(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:De.fn.lang,locale:De.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale}}),De.duration.fn.toString=De.duration.fn.toISOString;for(Ce in ui)a(ui,Ce)&&we(Ce.toLowerCase());De.duration.fn.asMilliseconds=function(){return this.as("ms")},De.duration.fn.asSeconds=function(){return this.as("s")},De.duration.fn.asMinutes=function(){return this.as("m")},De.duration.fn.asHours=function(){return this.as("h")},De.duration.fn.asDays=function(){return this.as("d")},De.duration.fn.asWeeks=function(){return this.as("weeks")},De.duration.fn.asMonths=function(){return this.as("M")},De.duration.fn.asYears=function(){return this.as("y")},De.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===N(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Be?o.exports=De:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Oe.moment=Se),De}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t); +for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t],delete this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=this.manipulationDiv,e=this.closeDiv,i=this.editModeDiv;1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1,this._redraw()),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,this.manipulationDOM={},1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDOM.addNodeSpan=document.createElement("span"),this.manipulationDOM.addNodeSpan.className="network-manipulationUI add",this.manipulationDOM.addNodeLabelSpan=document.createElement("span"),this.manipulationDOM.addNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addNodeLabelSpan.innerHTML=t.addNode,this.manipulationDOM.addNodeSpan.appendChild(this.manipulationDOM.addNodeLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.addEdgeSpan=document.createElement("span"),this.manipulationDOM.addEdgeSpan.className="network-manipulationUI connect",this.manipulationDOM.addEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.addEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addEdgeLabelSpan.innerHTML=t.addEdge,this.manipulationDOM.addEdgeSpan.appendChild(this.manipulationDOM.addEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.addNodeSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.addEdgeSpan),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?(this.manipulationDOM.seperatorLineDiv2=document.createElement("div"),this.manipulationDOM.seperatorLineDiv2.className="network-seperatorLine",this.manipulationDOM.editNodeSpan=document.createElement("span"),this.manipulationDOM.editNodeSpan.className="network-manipulationUI edit",this.manipulationDOM.editNodeLabelSpan=document.createElement("span"),this.manipulationDOM.editNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editNodeLabelSpan.innerHTML=t.editNode,this.manipulationDOM.editNodeSpan.appendChild(this.manipulationDOM.editNodeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv2),this.manipulationDiv.appendChild(this.manipulationDOM.editNodeSpan)):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.seperatorLineDiv3=document.createElement("div"),this.manipulationDOM.seperatorLineDiv3.className="network-seperatorLine",this.manipulationDOM.editEdgeSpan=document.createElement("span"),this.manipulationDOM.editEdgeSpan.className="network-manipulationUI edit",this.manipulationDOM.editEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.editEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editEdgeLabelSpan.innerHTML=t.editEdge,this.manipulationDOM.editEdgeSpan.appendChild(this.manipulationDOM.editEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv3),this.manipulationDiv.appendChild(this.manipulationDOM.editEdgeSpan)),0==this._selectionIsEmpty()&&(this.manipulationDOM.seperatorLineDiv4=document.createElement("div"),this.manipulationDOM.seperatorLineDiv4.className="network-seperatorLine",this.manipulationDOM.deleteSpan=document.createElement("span"),this.manipulationDOM.deleteSpan.className="network-manipulationUI delete",this.manipulationDOM.deleteLabelSpan=document.createElement("span"),this.manipulationDOM.deleteLabelSpan.className="network-manipulationLabel",this.manipulationDOM.deleteLabelSpan.innerHTML=t.del,this.manipulationDOM.deleteSpan.appendChild(this.manipulationDOM.deleteLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv4),this.manipulationDiv.appendChild(this.manipulationDOM.deleteSpan)),this.manipulationDOM.addNodeSpan.onclick=this._createAddNodeToolbar.bind(this),this.manipulationDOM.addEdgeSpan.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDOM.editNodeSpan.onclick=this._editNode.bind(this):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.editEdgeSpan.onclick=this._createEditEdgeToolbar.bind(this)),0==this._selectionIsEmpty()&&(this.manipulationDOM.deleteSpan.onclick=this._deleteSelected.bind(this)),this.closeDiv.onclick=this._toggleEditMode.bind(this);var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("span"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("span"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this.manipulationDOM.editModeSpan.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this);var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0,this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this); +var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(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);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=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")},e._placeInRegion=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+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=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)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=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()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/lib/network/Images.js b/lib/network/Images.js index 9e6962d5..a7fddea0 100644 --- a/lib/network/Images.js +++ b/lib/network/Images.js @@ -7,6 +7,14 @@ function Images() { this.callback = undefined; } +Images.prototype._resolveRelativeUrl = function(url){ + var img = document.createElement('img'); + img.src = url; // set string url + url = img.src; // get qualified url + img.src = null; // no server request + return url; +} + /** * Set an onload callback function. This will be called each time an image * is loaded @@ -52,6 +60,13 @@ Images.prototype.load = function(url, brokenUrl) { me.callback(this); } } + else if (this.src === me._resolveRelativeUrl(brokenUrl)){ + console.error("Could not load brokenImage:", brokenUrl); + delete this.src; + if (me.callback) { + me.callback(this); + } + } else { this.src = brokenUrl; }