diff --git a/HISTORY.md b/HISTORY.md index 41eed1c1..c8fcf0af 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -19,7 +19,6 @@ http://visjs.org ### Graph2D -- Added 'slots' for groups when using barCharts. - Added 'allowOverlap' option for barCharts. - Added two examples showing the two additions above. - Added 'customRange' for the Y axis and an example showing how it works. diff --git a/dist/vis.js b/dist/vis.js index 490e51f0..e9c8fede 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -6079,7 +6079,7 @@ return /******/ (function(modules) { // webpackBootstrap var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(15); - var Core = __webpack_require__(42); + var Core = __webpack_require__(43); var TimeAxis = __webpack_require__(27); var CurrentTime = __webpack_require__(19); var CustomTime = __webpack_require__(20); @@ -6367,7 +6367,7 @@ return /******/ (function(modules) { // webpackBootstrap var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(15); - var Core = __webpack_require__(42); + var Core = __webpack_require__(43); var TimeAxis = __webpack_require__(27); var CurrentTime = __webpack_require__(19); var CustomTime = __webpack_require__(20); @@ -6879,7 +6879,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(43); + var hammerUtil = __webpack_require__(44); var moment = __webpack_require__(40); var Component = __webpack_require__(18); @@ -8071,7 +8071,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var Component = __webpack_require__(18); var moment = __webpack_require__(40); - var locales = __webpack_require__(44); + var locales = __webpack_require__(42); /** * A current time bar @@ -8219,7 +8219,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var Component = __webpack_require__(18); var moment = __webpack_require__(40); - var locales = __webpack_require__(44); + var locales = __webpack_require__(42); /** * A custom time bar @@ -8933,7 +8933,7 @@ return /******/ (function(modules) { // webpackBootstrap */ function GraphGroup (group, groupId, options, groupsUsingDefaultStyles) { this.id = groupId; - var fields = ['sampling','style','sort','yAxisOrientation','barChart','drawPoints','shaded','catmullRom','slots'] + var fields = ['sampling','style','sort','yAxisOrientation','barChart','drawPoints','shaded','catmullRom'] this.options = util.selectiveBridgeObject(fields,options); this.usingDefaultStyle = group.className === undefined; this.groupsUsingDefaultStyles = groupsUsingDefaultStyles; @@ -8964,7 +8964,7 @@ return /******/ (function(modules) { // webpackBootstrap GraphGroup.prototype.setOptions = function(options) { if (options !== undefined) { - var fields = ['sampling','style','sort','yAxisOrientation','barChart','slots']; + var fields = ['sampling','style','sort','yAxisOrientation','barChart']; util.selectiveDeepExtend(fields, this.options, options); util.mergeOptions(this.options, options,'catmullRom'); @@ -11133,7 +11133,7 @@ return /******/ (function(modules) { // webpackBootstrap style: 'line', // line, bar barChart: { width: 50, - allowOverlap: true, + handleOverlap: 'overlap', align: 'center' // left, center, right }, catmullRom: { @@ -11649,79 +11649,36 @@ return /******/ (function(modules) { // webpackBootstrap LineGraph.prototype._updateGraph = function () { // reset the svg elements DOMutil.prepareElements(this.svgElements); - if (this.width != 0 && this.itemsData != null) { - var group, groupData, preprocessedGroup, i; - var preprocessedGroupData = []; - var processedGroupData = []; - var groupRanges = []; + var group, i; + var preprocessedGroupData = {}; + var processedGroupData = {}; + var groupRanges = {}; var changeCalled = false; // getting group Ids var groupIds = []; for (var groupId in this.groups) { if (this.groups.hasOwnProperty(groupId)) { - groupIds.push(groupId); + group = this.groups[groupId]; + if (group.visible == true) { + groupIds.push(groupId); + } } } - - // this is the range of the SVG canvas - var minDate = this.body.util.toGlobalTime(- this.body.domProps.root.width); - var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width); - - // first select and preprocess the data from the datasets. - // the groups have their preselection of data, we now loop over this data to see - // what data we need to draw. Sorted data is much faster. - // more optimization is possible by doing the sampling before and using the binary search - // to find the end date to determine the increment. if (groupIds.length > 0) { + // this is the range of the SVG canvas + var minDate = this.body.util.toGlobalTime(- this.body.domProps.root.width); + var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width); + var groupsData = {}; + // fill groups data + this._getRelevantData(groupIds, groupsData, minDate, maxDate); + // we transform the X coordinates to detect collisions for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.visible == true) { - groupData = []; - // optimization for sorted data - if (group.options.sort == true) { - var guess = Math.max(0,util.binarySearchGeneric(group.itemsData, minDate, 'x', 'before')); - - for (var j = guess; j < group.itemsData.length; j++) { - var item = group.itemsData[j]; - if (item !== undefined) { - if (item.x > maxDate) { - groupData.push(item); - break; - } - else { - groupData.push(item); - } - } - } - } - else { - for (var j = 0; j < group.itemsData.length; j++) { - var item = group.itemsData[j]; - if (item !== undefined) { - if (item.x > minDate && item.x < maxDate) { - groupData.push(item); - } - } - } - } - // preprocess, split into ranges and data - if (groupData.length > 0) { - preprocessedGroup = this._preprocessData(groupData, group); - groupRanges.push({min: preprocessedGroup.min, max: preprocessedGroup.max}); - preprocessedGroupData.push(preprocessedGroup.data); - } - else { - groupRanges.push({}); - preprocessedGroupData.push([]); - } - } - else { - groupRanges.push({}); - preprocessedGroupData.push([]); - } + preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); } + // now all needed data has been collected we start the processing. + this._getYRanges(groupIds, preprocessedGroupData, groupRanges); // update the Y axis first, we use this data to draw at the correct Y points // changeCalled is required to clean the SVG on a change emit. @@ -11732,24 +11689,21 @@ return /******/ (function(modules) { // webpackBootstrap return; } - // with the yAxis scaled correctly, use this to get the Y values of the points. + // With the yAxis scaled correctly, use this to get the Y values of the points. for (i = 0; i < groupIds.length; i++) { group = this.groups[groupIds[i]]; - processedGroupData.push(this._convertYvalues(preprocessedGroupData[i],group)) + processedGroupData[groupIds[i]] = this._convertYcoordinates(groupsData[groupIds[i]], group); } + // draw the groups for (i = 0; i < groupIds.length; i++) { group = this.groups[groupIds[i]]; - if (group.visible == true) { - if (group.options.style == 'line') { - this._drawLineGraph(processedGroupData[i], group); - } - else { - this._drawBarGraph (processedGroupData[i], group); - } + if (group.options.style == 'line') { + this._drawLineGraph(processedGroupData[groupIds[i]], group); } } + this._drawBarGraphs(groupIds, processedGroupData); } } @@ -11757,6 +11711,174 @@ return /******/ (function(modules) { // webpackBootstrap DOMutil.cleanupElements(this.svgElements); }; + + LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { + // first select and preprocess the data from the datasets. + // the groups have their preselection of data, we now loop over this data to see + // what data we need to draw. Sorted data is much faster. + // more optimization is possible by doing the sampling before and using the binary search + // to find the end date to determine the increment. + var group; + if (groupIds.length > 0) { + for (var i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + groupsData[groupIds[i]] = []; + var dataContainer = groupsData[groupIds[i]]; + // optimization for sorted data + if (group.options.sort == true) { + var guess = Math.max(0, util.binarySearchGeneric(group.itemsData, minDate, 'x', 'before')); + for (var j = guess; j < group.itemsData.length; j++) { + var item = group.itemsData[j]; + if (item !== undefined) { + if (item.x > maxDate) { + dataContainer.push(item); + break; + } + else { + dataContainer.push(item); + } + } + } + } + else { + for (var j = 0; j < group.itemsData.length; j++) { + var item = group.itemsData[j]; + if (item !== undefined) { + if (item.x > minDate && item.x < maxDate) { + dataContainer.push(item); + } + } + } + } + } + } + + this._applySampling(groupIds, groupsData); + }; + + LineGraph.prototype._applySampling = function (groupIds, groupsData) { + var group; + if (groupIds.length > 0) { + for (var i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.sampling == true) { + var dataContainer = groupsData[groupIds[i]]; + var increment = 1; + var amountOfPoints = dataContainer.length; + + // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop + // of width changing of the yAxis. + var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x); + var pointsPerPixel = amountOfPoints / xDistance; + increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel))); + + var sampledData = []; + for (var j = 0; j < amountOfPoints; j += increment) { + sampledData.push(dataContainer[j]); + + } + groupsData[groupIds[i]] = sampledData; + } + } + } + }; + + LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { + var groupData, group; + var barCombinedDataLeft = []; + var barCombinedDataRight = []; + var barCombinedData; + if (groupIds.length > 0) { + for (var i = 0; i < groupIds.length; i++) { + groupData = groupsData[groupIds[i]]; + group = this.groups[groupIds[i]]; + if (group.options.style == 'line' || group.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; + } + groupRanges[groupIds[i]] = {min: yMin, max: yMax, yAxisOrientation: group.options.yAxisOrientation}; + } + else if (group.options.style == 'bar') { + if (group.options.yAxisOrientation == 'left') { + barCombinedData = barCombinedDataLeft; + } + else { + barCombinedData = barCombinedDataRight; + } + + groupRanges[groupIds[i]] = {min: 0, max: 0, yAxisOrientation: group.options.yAxisOrientation, ignore: true}; + + // combine data + for (var j = 0; j < groupData.length; j++) { + barCombinedData.push({ + x: groupData[j].x, + y: groupData[j].y, + groupId: groupIds[i] + }); + } + } + } + if (barCombinedDataLeft.length > 0) { + // sort by time and by group + barCombinedDataLeft.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; + } + }) + var intersections = {}; + this._getDataIntersections(intersections, barCombinedDataLeft); + groupRanges["__barchartLeft"] = this._getStackedBarYRange(intersections, barCombinedDataLeft); + groupRanges["__barchartLeft"].yAxisOrientation = "left"; + groupIds.push("__barchartLeft"); + } + if (barCombinedDataRight.length > 0) { + // sort by time and by group + barCombinedDataRight.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; + } + }) + var intersections = {}; + this._getDataIntersections(intersections, barCombinedDataRight); + groupRanges["__barchartRight"] = this._getStackedBarYRange(intersections, barCombinedDataRight); + groupRanges["__barchartRight"].yAxisOrientation = "right"; + groupIds.push("__barchartRight"); + } + } + }; + + LineGraph.prototype._getStackedBarYRange = function (intersections, combinedData) { + var key; + var yMin = combinedData[0].y; + var yMax = combinedData[0].y; + for (var i = 0; i < combinedData.length; i++) { + key = combinedData[i].x; + if (intersections[key] === undefined) { + yMin = yMin > combinedData[i].y ? combinedData[i].y : yMin; + yMax = yMax < combinedData[i].y ? combinedData[i].y : yMax; + } + else { + intersections[key].accumulated += combinedData[i].y; + } + } + for (var xpos in intersections) { + if (intersections.hasOwnProperty(xpos)) { + yMin = yMin > intersections[xpos].accumulated ? intersections[xpos].accumulated : yMin; + yMax = yMax < intersections[xpos].accumulated ? intersections[xpos].accumulated : yMax; + } + } + + return {min: yMin, max: yMax}; + }; + + /** * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden. * @param {array} groupIds @@ -11767,22 +11889,15 @@ return /******/ (function(modules) { // webpackBootstrap var yAxisLeftUsed = false; var yAxisRightUsed = false; var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal; - var orientation = 'left'; // if groups are present if (groupIds.length > 0) { for (var i = 0; i < groupIds.length; i++) { - orientation = 'left'; - var group = this.groups[groupIds[i]]; - if (group.visible == true) { - if (group.options.yAxisOrientation == 'right') { - orientation = 'right'; - } + if (groupRanges[groupIds[i]].ignore !== true) { + minVal = groupRanges[groupIds[i]].min; + maxVal = groupRanges[groupIds[i]].max; - minVal = groupRanges[i].min; - maxVal = groupRanges[i].max; - - if (orientation == 'left') { + if (groupRanges[groupIds[i]].yAxisOrientation == 'left') { yAxisLeftUsed = true; minLeft = minLeft > minVal ? minVal : minLeft; maxLeft = maxLeft < maxVal ? maxVal : maxLeft; @@ -11794,6 +11909,7 @@ return /******/ (function(modules) { // webpackBootstrap } } } + if (yAxisLeftUsed == true) { this.yAxisLeft.setRange(minLeft, maxLeft); } @@ -11827,6 +11943,15 @@ return /******/ (function(modules) { // webpackBootstrap else { changeCalled = this.yAxisRight.redraw() || changeCalled; } + + // clean the accumulated lists + if (groupIds.indexOf("__barchartLeft") != -1) { + groupIds.splice(groupIds.indexOf("__barchartLeft"),1); + } + if (groupIds.indexOf("__barchartRight") != -1) { + groupIds.splice(groupIds.indexOf("__barchartRight"),1); + } + return changeCalled; }; @@ -11861,90 +11986,136 @@ return /******/ (function(modules) { // webpackBootstrap * @param datapoints * @param group */ - LineGraph.prototype._drawBarGraph = function (dataset, group) { - if (dataset != null) { - if (dataset.length > 0) { - var coreDistance; - var minWidth = 0.1 * group.options.barChart.width; - var offset = 0; + LineGraph.prototype._drawBarGraphs = function (groupIds, processedGroupData) { + var combinedData = []; + var intersections = {}; + var coreDistance; + var key; + var group; + var i,j; + var barPoints = 0; + + // combine all barchart data + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.style == 'bar') { + if (group.visible == true) { + for (j = 0; j < processedGroupData[groupIds[i]].length; j++) { + combinedData.push({ + x: processedGroupData[groupIds[i]][j].x, + y: processedGroupData[groupIds[i]][j].y, + groupId: groupIds[i] + }); + barPoints += 1; + } + } + } + } - // check for intersections - var intersections = {}; + if (barPoints == 0) {return;} - for (var i = 0; i < dataset.length; i++) { - if (i+1 < dataset.length) {coreDistance = Math.abs(dataset[i+1].x - dataset[i].x);} - if (i > 0) {coreDistance = Math.min(coreDistance,Math.abs(dataset[i-1].x - dataset[i].x));} - if (coreDistance == 0) { - if (intersections[dataset[i].x] === undefined) { - intersections[dataset[i].x] = {amount:0, resolved:0}; - } - intersections[dataset[i].x].amount += 1; - } + // sort by time and by group + combinedData.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; + } + }); + + // get intersections + this._getDataIntersections(intersections, combinedData); + + // plot barchart + for (i = 0; i < combinedData.length; i++) { + group = this.groups[combinedData[i].groupId]; + var minWidth = 0.1 * group.options.barChart.width; + + key = combinedData[i].x; + var heightOffset = 0; + if (intersections[key] === undefined) { + if (i+1 < combinedData.length) {coreDistance = Math.abs(combinedData[i+1].x - key);} + if (i > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[i-1].x - key));} + var drawData = this._getSafeDrawData(coreDistance, group, minWidth); + } + else { + var nextKey = i + (intersections[key].amount - intersections[key].resolved); + var prevKey = i - (intersections[key].resolved + 1); + if (nextKey < combinedData.length) {coreDistance = Math.abs(combinedData[nextKey].x - key);} + if (prevKey > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[prevKey].x - key));} + var drawData = this._getSafeDrawData(coreDistance, group, minWidth); + intersections[key].resolved += 1; + + if (group.options.barChart.handleOverlap == 'stack') { + heightOffset = intersections[key].accumulated; + intersections[key].accumulated += group.zeroPosition - combinedData[i].y; } + else if (group.options.barChart.handleOverlap == 'sideBySide') { + drawData.width = drawData.width / intersections[key].amount; + drawData.offset += (intersections[key].resolved) * drawData.width - (0.5*drawData.width * (intersections[key].amount+1)); + if (group.options.barChart.align == 'left') {offset -= 0.5*drawData.width;} + else if (group.options.barChart.align == 'right') {offset += 0.5*drawData.width;} + } + } + DOMutil.drawBar(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].y, group.className + ' bar', this.svgElements, this.svg); + // draw points + if (group.options.drawPoints.enabled == true) { + DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, group, this.svgElements, this.svg); + } + } + }; - // plot the bargraph - var key; - for (var i = 0; i < dataset.length; i++) { - key = dataset[i].x; - if (intersections[key] === undefined) { - if (i+1 < dataset.length) {coreDistance = Math.abs(dataset[i+1].x - key);} - if (i > 0) {coreDistance = Math.min(coreDistance,Math.abs(dataset[i-1].x - key));} - var drawData = this._getSafeDrawData(coreDistance, group, minWidth); - } - else { - var nextKey = i + (intersections[key].amount - intersections[key].resolved); - var prevKey = i - (intersections[key].resolved + 1); - if (nextKey < dataset.length) {coreDistance = Math.abs(dataset[nextKey].x - key);} - if (prevKey > 0) {coreDistance = Math.min(coreDistance,Math.abs(dataset[prevKey].x - key));} - var drawData = this._getSafeDrawData(coreDistance, group, minWidth); - intersections[key].resolved += 1; - - if (group.options.barChart.allowOverlap == false) { - drawData.width = drawData.width / intersections[key].amount; - drawData.offset += (intersections[key].resolved) * drawData.width - (0.5*drawData.width * (intersections[key].amount+1)); - if (group.options.barChart.align == 'left') {offset -= 0.5*drawData.width;} - else if (group.options.barChart.align == 'right') {offset += 0.5*drawData.width;} - } - } - DOMutil.drawBar(dataset[i].x + drawData.offset, dataset[i].y, drawData.width, group.zeroPosition - dataset[i].y, group.className + ' bar', this.svgElements, this.svg); - // draw points - if (group.options.drawPoints.enabled == true) { - DOMutil.drawPoint(dataset[i].x + drawData.offset, dataset[i].y, group, this.svgElements, this.svg); - } + LineGraph.prototype._getDataIntersections = function (intersections, combinedData) { + // get intersections + var coreDistance; + for (var i = 0; i < combinedData.length; i++) { + if (i + 1 < combinedData.length) { + coreDistance = Math.abs(combinedData[i + 1].x - combinedData[i].x); + } + if (i > 0) { + coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].x - combinedData[i].x)); + } + if (coreDistance == 0) { + if (intersections[combinedData[i].x] === undefined) { + intersections[combinedData[i].x] = {amount: 0, resolved: 0, accumulated: 0}; } + intersections[combinedData[i].x].amount += 1; } } }; + //LineGraph.prototype._accumulate = function (intersections, combinedData) { + + + LineGraph.prototype._getSafeDrawData = function (coreDistance, group, minWidth) { var width, offset; if (coreDistance < group.options.barChart.width && coreDistance > 0) { width = coreDistance < minWidth ? minWidth : coreDistance; offset = 0; // recalculate offset with the new width; - if (group.options.slots) { // recalculate the shared width and offset if these options are set. - width = (width / group.options.slots.total); - offset = group.options.slots.slot * width - (0.5*width * (group.options.slots.total+1)); + if (group.options.barChart.align == 'left') { + offset -= 0.5 * coreDistance; + } + else if (group.options.barChart.align == 'right') { + offset += 0.5 * coreDistance; } - if (group.options.barChart.align == 'left') {offset -= 0.5*coreDistance;} - else if (group.options.barChart.align == 'right') {offset += 0.5*coreDistance;} } else { // no collisions, plot with default settings width = group.options.barChart.width; offset = 0; - if (group.options.slots) { - // if the groups are sharing the same points, this allows them to be plotted side by side - width = width / group.options.slots.total; - offset = group.options.slots.slot * width - (0.5*width * (group.options.slots.total+1)); + if (group.options.barChart.align == 'left') { + offset -= 0.5 * group.options.barChart.width; + } + else if (group.options.barChart.align == 'right') { + offset += 0.5 * group.options.barChart.width; } - if (group.options.barChart.align == 'left') {offset -= 0.5*group.options.barChart.width;} - else if (group.options.barChart.align == 'right') {offset += 0.5*group.options.barChart.width;} } return {width: width, offset: offset}; - } + }; /** @@ -12019,69 +12190,52 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {Array} * @private */ - LineGraph.prototype._preprocessData = function (datapoints, group) { + LineGraph.prototype._convertXcoordinates = function (datapoints) { var extractedData = []; var xValue, yValue; var toScreen = this.body.util.toScreen; - var increment = 1; - var amountOfPoints = datapoints.length; - - var yMin = datapoints[0].y; - var yMax = datapoints[0].y; - - // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop - // of width changing of the yAxis. - if (group.options.sampling == true) { - var xDistance = this.body.util.toGlobalScreen(datapoints[datapoints.length-1].x) - this.body.util.toGlobalScreen(datapoints[0].x); - var pointsPerPixel = amountOfPoints/xDistance; - increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1,Math.round(pointsPerPixel))); - } - - for (var i = 0; i < amountOfPoints; i += increment) { + for (var i = 0; i < datapoints.length; i++) { xValue = toScreen(datapoints[i].x) + this.width - 1; yValue = datapoints[i].y; extractedData.push({x: xValue, y: yValue}); - yMin = yMin > yValue ? yValue : yMin; - yMax = yMax < yValue ? yValue : yMax; } - // extractedData.sort(function (a,b) {return a.x - b.x;}); - return {min: yMin, max: yMax, data: extractedData}; + return extractedData; }; + + /** - * This uses the DataAxis object to generate the correct Y coordinate on the SVG window. It uses the - * util function toScreen to get the x coordinate from the timestamp. + * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the + * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for + * the yAxis. * * @param datapoints - * @param options * @returns {Array} * @private */ - LineGraph.prototype._convertYvalues = function (datapoints, group) { + LineGraph.prototype._convertYcoordinates = function (datapoints, group) { var extractedData = []; var xValue, yValue; + var toScreen = this.body.util.toScreen; var axis = this.yAxisLeft; var svgHeight = Number(this.svg.style.height.replace("px","")); - if (group.options.yAxisOrientation == 'right') { axis = this.yAxisRight; } for (var i = 0; i < datapoints.length; i++) { - xValue = datapoints[i].x; + xValue = toScreen(datapoints[i].x) + this.width - 1; yValue = Math.round(axis.convertValue(datapoints[i].y)); extractedData.push({x: xValue, y: yValue}); } group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); - // extractedData.sort(function (a,b) {return a.x - b.x;}); return extractedData; }; - /** * This uses an uniform parametrization of the CatmullRom algorithm: * "On the Parameterization of Catmull-Rom Curves" by Cem Yuksel et al. @@ -13547,9 +13701,9 @@ return /******/ (function(modules) { // webpackBootstrap var Emitter = __webpack_require__(48); var Hammer = __webpack_require__(41); - var mousetrap = __webpack_require__(51); + var mousetrap = __webpack_require__(49); var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(43); + var hammerUtil = __webpack_require__(44); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var dotparser = __webpack_require__(38); @@ -16730,18 +16884,15 @@ return /******/ (function(modules) { // webpackBootstrap } else { var x, y, dx, dy; - var radius = this.physics.springLength / 4; + var radius = 0.25 * this.physics.springLength; var node = this.from; - if (!node.width) { - node.resize(ctx); - } if (node.width > node.height) { - x = node.x + node.width / 2; + x = node.x + 0.5 * node.width; y = node.y - radius; } else { x = node.x + radius; - y = node.y - node.height / 2; + y = node.y - 0.5 * node.height; } dx = x - x3; dy = y - y3; @@ -19104,7 +19255,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__(50); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(51); /***/ }, @@ -19114,7 +19265,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(49); + module.exports = window['Hammer'] || __webpack_require__(50); } else { module.exports = function () { @@ -19125,6 +19276,27 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 42 */ +/***/ 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']; + + +/***/ }, +/* 43 */ /***/ function(module, exports, __webpack_require__) { var Emitter = __webpack_require__(48); @@ -19792,7 +19964,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 43 */ +/* 44 */ /***/ function(module, exports, __webpack_require__) { var Hammer = __webpack_require__(41); @@ -19825,27 +19997,6 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 44 */ -/***/ 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']; - - /***/ }, /* 45 */ /***/ function(module, exports, __webpack_require__) { @@ -20496,5788 +20647,5590 @@ return /******/ (function(modules) { // webpackBootstrap /* 49 */ /***/ 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(window, undefined) { - 'use strict'; - /** - * @main - * @module hammer + * Copyright 2012 Craig Campbell * - * @class Hammer - * @static - */ - - /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Mousetrap is a simple keyboard shortcut library for Javascript with + * no external dependencies + * + * @version 1.1.2 + * @url craig.is/killing/mice */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); - }; - /** - * 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', - - /** - * 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', - - /** - * 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', - - /** - * 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', - - /** - * 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)' - } - }; - - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; - - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} - */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - - /** - * 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; - - /** - * 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 = {}; - - /** - * 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'; - - /** - * 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'; - - /** - * 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 the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; - - /** - * plugins namespace - * @property plugins - * @type {Object} - */ - Hammer.plugins = Hammer.plugins || {}; - - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} - */ - Hammer.gestures = Hammer.gestures || {}; - - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private - */ - function setup() { - if(Hammer.READY) { - return; - } - - // find what eventtypes we add listeners to - Event.determineEventTypes(); - - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); - - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - - // Hammer is ready...! - Hammer.READY = true; - } - - /** - * @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; - }, + /** + * mapping of special keycodes to their corresponding keys + * + * everything in this dictionary cannot use keypress events + * so it has to be here to map to the correct keycodes for + * keyup/keydown events + * + * @type {Object} + */ + var _MAP = { + 8: 'backspace', + 9: 'tab', + 13: 'enter', + 16: 'shift', + 17: 'ctrl', + 18: 'alt', + 20: 'capslock', + 27: 'esc', + 32: 'space', + 33: 'pageup', + 34: 'pagedown', + 35: 'end', + 36: 'home', + 37: 'left', + 38: 'up', + 39: 'right', + 40: 'down', + 45: 'ins', + 46: 'del', + 91: 'meta', + 93: 'meta', + 224: 'meta' + }, - /** - * 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); - }, + /** + * mapping for special characters so they can support + * + * this dictionary is only used incase you want to bind a + * keyup or keydown event to one of these keys + * + * @type {Object} + */ + _KEYCODE_MAP = { + 106: '*', + 107: '+', + 109: '-', + 110: '.', + 111 : '/', + 186: ';', + 187: '=', + 188: ',', + 189: '-', + 190: '.', + 191: '/', + 192: '`', + 219: '[', + 220: '\\', + 221: ']', + 222: '\'' + }, - /** - * 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); - }, + /** + * this is a mapping of keys that require shift on a US keypad + * back to the non shift equivelents + * + * this is so you can use keyup events with these keys + * + * note that this will only work reliably on US keyboards + * + * @type {Object} + */ + _SHIFT_MAP = { + '~': '`', + '!': '1', + '@': '2', + '#': '3', + '$': '4', + '%': '5', + '^': '6', + '&': '7', + '*': '8', + '(': '9', + ')': '0', + '_': '-', + '+': '=', + ':': ';', + '\"': '\'', + '<': ',', + '>': '.', + '?': '/', + '|': '\\' + }, - /** - * 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; + /** + * this is a list of special strings you can use to map + * to modifier keys when you specify your keyboard shortcuts + * + * @type {Object} + */ + _SPECIAL_ALIASES = { + 'option': 'alt', + 'command': 'meta', + 'return': 'enter', + 'escape': 'esc' + }, - // 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 { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - } - }, + /** + * variable to store the flipped version of _MAP from above + * needed to check if we should use keypress or not when no action + * is specified + * + * @type {Object|undefined} + */ + _REVERSE_MAP, - /** - * 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; - }, + /** + * a list of all the callbacks setup via Mousetrap.bind() + * + * @type {Object} + */ + _callbacks = {}, - /** - * 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; - } - } - return false; - } - }, + /** + * direct map of string combinations to callbacks used for trigger() + * + * @type {Object} + */ + _direct_map = {}, - /** - * 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); - }, + /** + * keeps track of what level each sequence is at since multiple + * sequences can start out with the same sequence + * + * @type {Object} + */ + _sequence_levels = {}, - /** - * 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 false; - }, + /** + * variable to store the setTimeout call + * + * @type {null|number} + */ + _reset_timer, - /** - * 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; + /** + * temporary state where we will ignore the next keyup + * + * @type {boolean|string} + */ + _ignore_next_keyup = false, - // 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 - }; - } + /** + * are we currently inside of a sequence? + * type of action ("keyup" or "keydown" or "keypress") or false + * + * @type {boolean|string} + */ + _inside_sequence = false; - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + /** + * loop through the f keys, f1 to f19 and add them to the map + * programatically + */ + for (var i = 1; i < 20; ++i) { + _MAP[111 + i] = 'f' + i; + } - 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 - }; - }, + /** + * loop through to map numbers on the numeric keypad + */ + for (i = 0; i <= 9; ++i) { + _MAP[i + 96] = i; + } - /** - * 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 - }; - }, + /** + * cross browser add event method + * + * @param {Element|HTMLDocument} object + * @param {string} type + * @param {Function} callback + * @returns void + */ + function _addEvent(object, type, callback) { + if (object.addEventListener) { + return object.addEventListener(type, callback, false); + } - /** - * 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; + object.attachEvent('on' + type, callback); + } - return Math.atan2(y, x) * 180 / Math.PI; - }, + /** + * takes the event and returns the key character + * + * @param {Event} e + * @return {string} + */ + function _characterFromEvent(e) { - /** - * 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); + // for keypress events we should return the character as is + if (e.type == 'keypress') { + return String.fromCharCode(e.which); + } - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, + // for non keypress events the special maps are needed + if (_MAP[e.which]) { + return _MAP[e.which]; + } - /** - * 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 (_KEYCODE_MAP[e.which]) { + return _KEYCODE_MAP[e.which]; + } - return Math.sqrt((x * x) + (y * y)); - }, + // if it is not in the special map + return String.fromCharCode(e.which).toLowerCase(); + } - /** - * 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; - }, + /** + * should we stop this event before firing off callbacks + * + * @param {Event} e + * @return {boolean} + */ + function _stop(e) { + var element = e.target || e.srcElement, + tag_name = element.tagName; - /** - * 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; - }, + // if the element has the class "mousetrap" then no need to stop + if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) { + return false; + } - /** - * 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; - }, + // stop for input, select, and textarea + return tag_name == 'INPUT' || tag_name == 'SELECT' || tag_name == 'TEXTAREA' || (element.contentEditable && element.contentEditable == 'true'); + } - /** - * 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); + /** + * checks if two arrays are equal + * + * @param {Array} modifiers1 + * @param {Array} modifiers2 + * @returns {boolean} + */ + function _modifiersMatch(modifiers1, modifiers2) { + return modifiers1.sort().join(',') === modifiers2.sort().join(','); + } - 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); - } + /** + * resets all sequence counters except for the ones passed in + * + * @param {Object} do_not_reset + * @returns void + */ + function _resetSequences(do_not_reset) { + do_not_reset = do_not_reset || {}; - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; - } - } - }, + var active_sequences = false, + key; - /** - * 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; - } + for (key in _sequence_levels) { + if (do_not_reset[key]) { + active_sequences = true; + continue; + } + _sequence_levels[key] = 0; + } - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + if (!active_sequences) { + _inside_sequence = false; + } + } + + /** + * finds all callbacks that match based on the keycode, modifiers, + * and action + * + * @param {string} character + * @param {Array} modifiers + * @param {string} action + * @param {boolean=} remove - should we remove any matches + * @param {string=} combination + * @returns {Array} + */ + function _getMatches(character, modifiers, action, remove, combination) { + var i, + callback, + matches = []; - var falseFn = toggle && function() { - return false; - }; + // if there are no events related to this keycode + if (!_callbacks[character]) { + return []; + } - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; - } - }, + // if a modifier key is coming up on its own we should allow it + if (action == 'keyup' && _isModifier(character)) { + modifiers = [character]; + } - /** - * 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(); - }); - } - }; + // loop through all callbacks for the key that was pressed + // and see if any of them match + for (i = 0; i < _callbacks[character].length; ++i) { + callback = _callbacks[character][i]; + // if this is a sequence but it is not at the right level + // then move onto the next match + if (callback.seq && _sequence_levels[callback.seq] != callback.level) { + continue; + } - /** - * @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, + // if the action we are looking for doesn't match the action we got + // then we should keep going + if (action != callback.action) { + continue; + } - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + // if this is a keypress event that means that we need to only + // look at the character, otherwise check the modifiers as + // well + if (action == 'keypress' || _modifiersMatch(modifiers, callback.modifiers)) { - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + // remove is used so if you change your mind and call bind a + // second time with a new function the first one is overwritten + if (remove && callback.combo == combination) { + _callbacks[character].splice(i, 1); + } - /** - * 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); - }); - }, + matches.push(callback); + } + } - /** - * 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); - }); - }, + return matches; + } - /** - * 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; + /** + * takes a key event and figures out what the modifiers are + * + * @param {Event} e + * @returns {Array} + */ + function _eventModifiers(e) { + var modifiers = []; - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + if (e.shiftKey) { + modifiers.push('shift'); + } - // 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; + if (e.altKey) { + modifiers.push('alt'); + } - // 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; - } + if (e.ctrlKey) { + modifiers.push('ctrl'); + } - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + if (e.metaKey) { + modifiers.push('meta'); + } - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + return modifiers; + } - // ...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 - } + /** + * actually calls the callback function + * + * if your callback function returns false this will use the jquery + * convention - prevent default and stop propogation on the event + * + * @param {Function} callback + * @param {Event} e + * @returns void + */ + function _fireCallback(callback, e) { + if (callback(e) === false) { + if (e.preventDefault) { + e.preventDefault(); + } - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + if (e.stopPropagation) { + e.stopPropagation(); + } - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + e.returnValue = false; + e.cancelBubble = true; + } + } - /** - * 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; + /** + * handles a character key event + * + * @param {string} character + * @param {Event} e + * @returns void + */ + function _handleCharacter(character, e) { - // 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; + // if this event should not happen stop here + if (_stop(e)) { + return; + } - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + var callbacks = _getMatches(character, _eventModifiers(e), e.type), + i, + do_not_reset = {}, + processed_sequence_callback = false; - // 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; - } + // loop through matching callbacks for this key event + for (i = 0; i < callbacks.length; ++i) { - // detection has been started, we keep track of this, see above - this.started = true; + // fire for all sequence callbacks + // this is because if for example you have multiple sequences + // bound such as "g i" and "g t" they both need to fire the + // callback for matching g cause otherwise you can only ever + // match the first one + if (callbacks[i].seq) { + processed_sequence_callback = true; - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + // keep a list of which sequences were matches for later + do_not_reset[callbacks[i].seq] = 1; + _fireCallback(callbacks[i].callback, e); + continue; + } - // 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 there were no sequence matches but we are still here + // that means this is a regular match so we should fire that + if (!processed_sequence_callback && !_inside_sequence) { + _fireCallback(callbacks[i].callback, e); + } + } - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + // if you are inside of a sequence and the key you are pressing + // is not a modifier key then we should reset all sequences + // that were not matched by this key event + if (e.type == _inside_sequence && !_isModifier(character)) { + _resetSequences(do_not_reset); + } + } - handler.call(Detection, evData); + /** + * handles a keydown event + * + * @param {Event} e + * @returns void + */ + function _handleKey(e) { - evData.eventType = triggerType; - delete evData.changedLength; - } + // normalize e.which for key events + // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion + e.which = typeof e.which == "number" ? e.which : e.keyCode; - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + var character = _characterFromEvent(e); - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; - } + // no character found then stop + if (!character) { + return; + } - return triggerType; - }, + if (e.type == 'keyup' && _ignore_next_keyup == character) { + _ignore_next_keyup = false; + return; + } - /** - * 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' - ]; - } + _handleCharacter(character, e); + } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + /** + * determines if the keycode specified is a modifier key or not + * + * @param {string} key + * @returns {boolean} + */ + function _isModifier(key) { + return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta'; + } - /** - * 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(); - } + /** + * called to set a 1 second timeout on the specified sequence + * + * this is so after each key press in the sequence you have 1 second + * to press the next key before you have to start over + * + * @returns void + */ + function _resetSequenceTimer() { + clearTimeout(_reset_timer); + _reset_timer = setTimeout(_resetSequences, 1000); + } - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } + /** + * reverses the map lookup so that we can look for specific keys + * to see what can and can't use keypress + * + * @return {Object} + */ + function _getReverseMap() { + if (!_REVERSE_MAP) { + _REVERSE_MAP = {}; + for (var key in _MAP) { - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; + // pull out the numeric keypad from here cause keypress should + // be able to detect the keys from the character + if (key > 95 && key < 112) { + continue; + } - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); + if (_MAP.hasOwnProperty(key)) { + _REVERSE_MAP[_MAP[key]] = key; + } + } + } + return _REVERSE_MAP; + } - return touchList; - } + /** + * picks the best action based on the key combination + * + * @param {string} key - character for key + * @param {Array} modifiers + * @param {string=} action passed in + */ + function _pickBestAction(key, modifiers, action) { - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + // if no action was picked in we should try to pick the one + // that we think would work best for this key + if (!action) { + action = _getReverseMap()[key] ? 'keydown' : 'keypress'; + } - /** - * 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; - } + // modifier keys don't work as expected with keypress, + // switch to keydown + if (action == 'keypress' && modifiers.length) { + action = 'keydown'; + } - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + return action; + } + + /** + * binds a key sequence to an event + * + * @param {string} combo - combo specified in bind call + * @param {Array} keys + * @param {Function} callback + * @param {string=} action + * @returns void + */ + function _bindSequence(combo, keys, callback, action) { - /** - * 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(); - }, + // start off by adding a sequence level record for this combination + // and setting the level to 0 + _sequence_levels[combo] = 0; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + // if there is no action pick the best one for the first key + // in the sequence + if (!action) { + action = _pickBestAction(keys[0], []); + } - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; - } - }; + /** + * callback to increase the sequence level for this sequence and reset + * all other sequences that were active + * + * @param {Event} e + * @returns void + */ + var _increaseSequence = function(e) { + _inside_sequence = action; + ++_sequence_levels[combo]; + _resetSequenceTimer(); + }, + /** + * wraps the specified callback inside of another function in order + * to reset all sequence counters as soon as this sequence is done + * + * @param {Event} e + * @returns void + */ + _callbackAndReset = function(e) { + _fireCallback(callback, e); - /** - * @module hammer - * - * @class PointerEvent - * @static - */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + // we should ignore the next key up if the action is key down + // or keypress. this is so if you finish a sequence and + // release the key the final key will not trigger a keyup + if (action !== 'keyup') { + _ignore_next_keyup = _characterFromEvent(e); + } - /** - * 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; - }, + // weird race condition if a sequence ends with the key + // another sequence begins with + setTimeout(_resetSequences, 10); + }, + i; - /** - * 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; - } - }, + // loop through keys one at a time and bind the appropriate callback + // function. for any key leading up to the final one it should + // increase the sequence. after the final, it should reset all sequences + for (i = 0; i < keys.length; ++i) { + _bindSingle(keys[i], i < keys.length - 1 ? _increaseSequence : _callbackAndReset, action, combo, i); + } + } - /** - * 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; - } + /** + * binds a single keyboard combination + * + * @param {string} combination + * @param {Function} callback + * @param {string=} action + * @param {string=} sequence_name - name of sequence if part of sequence + * @param {number=} level - what part of the sequence the command is + * @returns void + */ + function _bindSingle(combination, callback, action, sequence_name, level) { - var pt = ev.pointerType, - types = {}; + // make sure multiple spaces in a row become a single space + combination = combination.replace(/\s+/g, ' '); - 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]; - }, + var sequence = combination.split(' '), + i, + key, + keys, + modifiers = []; - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; - } - }; + // if this pattern is a sequence of keys then run through this method + // to reprocess each pattern one key at a time + if (sequence.length > 1) { + return _bindSequence(combination, sequence, callback, action); + } + // take the keys from this pattern and figure out what the actual + // pattern is all about + keys = combination === '+' ? ['+'] : combination.split('+'); - /** - * @module hammer - * - * @class Detection - * @static - */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], + for (i = 0; i < keys.length; ++i) { + key = keys[i]; - // data of the current Hammer.gesture detection session - current: null, + // normalize key names + if (_SPECIAL_ALIASES[key]) { + key = _SPECIAL_ALIASES[key]; + } - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + // if this is not a keypress event then we should + // be smart about using shift keys + // this will only work for US keyboards however + if (action && action != 'keypress' && _SHIFT_MAP[key]) { + key = _SHIFT_MAP[key]; + modifiers.push('shift'); + } - // when this becomes true, no gestures are fired - stopped: false, + // if this key is a modifier then add it to the list of modifiers + if (_isModifier(key)) { + modifiers.push(key); + } + } - /** - * 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; - } + // depending on what the key combination is + // we will try to pick the best event for it + action = _pickBestAction(key, modifiers, action); - this.stopped = false; + // make sure to initialize array if this is the first time + // a callback is added for this key + if (!_callbacks[key]) { + _callbacks[key] = []; + } - // 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 - }; + // remove an existing match if there is one + _getMatches(key, modifiers, action, !sequence_name, combination); - this.detect(eventData); - }, + // add this call back to the array + // if it is a sequence put it at the beginning + // if not put it at the end + // + // this is important because the way these are processed expects + // the sequence ones to come first + _callbacks[key][sequence_name ? 'unshift' : 'push']({ + callback: callback, + modifiers: modifiers, + action: action, + seq: sequence_name, + level: level, + combo: combination + }); + } + + /** + * binds multiple combinations to the same callback + * + * @param {Array} combinations + * @param {Function} callback + * @param {string|undefined} action + * @returns void + */ + function _bindMultiple(combinations, callback, action) { + for (var i = 0; i < combinations.length; ++i) { + _bindSingle(combinations[i], callback, action); + } + } - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; - } + // start! + _addEvent(document, 'keypress', _handleKey); + _addEvent(document, 'keydown', _handleKey); + _addEvent(document, 'keyup', _handleKey); - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); + var mousetrap = { - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + /** + * binds an event to mousetrap + * + * can be a single key, a combination of keys separated with +, + * a comma separated list of keys, an array of keys, or + * a sequence of keys separated by spaces + * + * be sure to list the modifier keys first to make sure that the + * correct key ends up getting bound (the last key in the pattern) + * + * @param {string|Array} keys + * @param {Function} callback + * @param {string=} action - 'keypress', 'keydown', or 'keyup' + * @returns void + */ + bind: function(keys, callback, action) { + _bindMultiple(keys instanceof Array ? keys : [keys], callback, action); + _direct_map[keys + ':' + action] = callback; + return this; + }, - // 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); + /** + * unbinds an event to mousetrap + * + * the unbinding sets the callback function of the specified key combo + * to an empty function and deletes the corresponding key in the + * _direct_map dict. + * + * the keycombo+action has to be exactly the same as + * it was defined in the bind method + * + * TODO: actually remove this from the _callbacks dictionary instead + * of binding an empty function + * + * @param {string|Array} keys + * @param {string} action + * @returns void + */ + unbind: function(keys, action) { + if (_direct_map[keys + ':' + action]) { + delete _direct_map[keys + ':' + action]; + this.bind(keys, function() {}, action); + } + return this; + }, - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; - } + /** + * triggers an event that has already been bound + * + * @param {string} keys + * @param {string=} action + * @returns void + */ + trigger: function(keys, action) { + _direct_map[keys + ':' + action](); + return this; + }, - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } + /** + * resets the library back to its initial state. this is useful + * if you want to clear out the current keyboard shortcuts and bind + * new ones - for example if you switch to another page + * + * @returns void + */ + reset: function() { + _callbacks = {}; + _direct_map = {}; + return this; + } + }; - return eventData; - }, + module.exports = mousetrap; - /** - * 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); - // reset the current - this.current = null; - this.stopped = true; - }, - /** - * 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; +/***/ }, +/* 50 */ +/***/ function(module, exports, __webpack_require__) { - 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; - } + 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 */ - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; - } + (function(window, undefined) { + 'use strict'; - 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); + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; - } + /** + * 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 || {}); + }; - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, + /** + * 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 = { /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev + * 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} */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; - - // 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 - }); - }); - } - - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; - - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + 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', - Utils.extend(ev, { - startEvent: startEv, + /** + * 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', - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + /** + * 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', - 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) - }); + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - return ev; - }, + /** + * 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', - /** - * 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; - } + /** + * 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)' + } + }; - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - // set its index - gesture.index = gesture.index || 1000; + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - // add Hammer.gesture to the list - this.gestures.push(gesture); + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - // 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; - }); + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - return this.gestures; - } - }; + /** + * 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; + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; /** - * @module hammer + * 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 = {}; /** - * 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} + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' */ - Hammer.Instance = function(element, options) { - var self = this; + 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'; - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + /** + * 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'; - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + /** + * 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'; - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - /** - * 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; - }); + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - // 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); + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; } - /** - * 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); - } + // find what eventtypes we add listeners to + Event.determineEventTypes(); + + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); }); + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + + // Hammer is ready...! + Hammer.READY = true; + } + + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} + * 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 */ - this.eventHandlers = []; - }; + 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; + }, - Hammer.Instance.prototype = { /** - * bind events to the instance + * simple addEventListener wrapper * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space + * @param {HTMLElement} element + * @param {String} type * @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; + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); }, /** - * unbind events to the instance + * simple removeEventListener wrapper * @method off - * @chainable - * @param {String} gestures + * @param {HTMLElement} element + * @param {String} type * @param {Function} handler */ - off: function offEvent(gestures, handler) { - var self = this; - - 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; + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); }, /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] + * 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 */ - 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; + each: function each(obj, iterator, context) { + var i, len; - // 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; + // 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 { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } + } } - - element.dispatchEvent(event); - return this; }, /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found */ - enable: function enable(state) { - this.enabled = state; - return this; + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; }, /** - * dispose this hammer instance - * @method dispose - * @return {Null} + * 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 */ - dispose: function dispose() { - var i, eh; - - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); - - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); + 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; + } + } + return false; } + }, - this.eventHandlers = []; - - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - - return null; - } - }; - - - /** - * @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 - */ + /** + * 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); + }, - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + /** + * 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 false; + }, - function dragGesture(ev, inst) { - var cur = Detection.current; + /** + * 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; - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; + // 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 + }; } - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; - - 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; - } - - var startCenter = cur.startEvent.center; + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - // 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 { + 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 + }; + }, - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + /** + * 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 + }; + }, - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + /** + * 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; - // 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; - } - } + return Math.atan2(y, x) * 180 / Math.PI; + }, - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + /** + * 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); - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - var isVertical = Utils.isVertical(ev.direction); + /** + * 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; - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + return Math.sqrt((x * x) + (y * y)); + }, - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + /** + * 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; + }, - case EVENT_END: - triggered = false; - break; + /** + * 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; + }, - 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, + /** + * 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; + }, - /** - * 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, + /** + * 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); - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + 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); + } - /** - * 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, + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } + } + }, + + /** + * 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; + } - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - /** - * 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, + var falseFn = toggle && function() { + return false; + }; - /** - * 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 + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; } - }; - })('drag'); + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; + } + }, - /** - * @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); + /** + * 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(); + }); } }; + /** - * @module gestures + * @module hammer */ /** - * Touch stays at the same place for x time - * - * @class Hold + * @class Event * @static */ - /** - * @event hold - * @param {Object} ev - */ + 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, - /** - * @param {String} name - */ - (function(name) { - var timer; + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + /** + * 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); + }); + }, - // set the gesture so we can check in the timeout if it still is - current.name = name; + /** + * 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); + }); + }, - // 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; + /** + * 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; - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - case EVENT_RELEASE: - clearTimeout(timer); - break; - } - } + // 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; - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, + // 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; + } + + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } + + // ...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(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; + + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, + + /** + * 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; - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); + // 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; - /** - * @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); + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); } - } - }; - /** - * @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, + // 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; + } - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + // detection has been started, we keep track of this, see above + this.started = true; - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + // 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); + } - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } + handler.call(Detection, evData); - // 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); - } + evData.eventType = triggerType; + delete evData.changedLength; } - } - }; - /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - /** - * @param {String} name - */ - (function(name) { - var hasMoved = false; + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + return triggerType; + }, - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + /** + * 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' + ]; + } - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - 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; + /** + * 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(); + } - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } + 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); } - break; + identifiers.push(touch.identifier); + }); + + return touchList; } - } - 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, + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + /** + * 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, /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true + * prevent the browser default actions + * mostly used to disable scrolling of the browser */ - tapAlways: true, + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 + * stop bubbling the event up to its parents */ - doubleTapDistance: 20, + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} */ - doubleTapInterval: 300 - } - }; - })('tap'); - - /** - * @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; - } - - if(inst.options.preventDefault) { - ev.preventDefault(); - } - - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } + stopDetect: function() { + return Detection.stopDetect(); + } + }; } }; + /** - * @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. + * @module hammer * - * @class Transform + * @class PointerEvent * @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 - */ - - /** - * @param {String} name - */ - (function(name) { - var triggered = false; - - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; - - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } - - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); - - // 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; - } - - // we are transforming! - Detection.current.name = name; - - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } - - inst.trigger(name, ev); // basic transform event + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } + /** + * 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; + }, - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + /** + * 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; + } + }, - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + /** + * 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; } - } - 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, + var pt = ev.pointerType, + types = {}; - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + 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]; + }, + + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; + } + }; - handler: transformGesture - }; - })('transform'); /** * @module hammer + * + * @class Detection + * @static */ + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - // 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; - } - - })(window); - -/***/ }, -/* 50 */ -/***/ function(module, exports, __webpack_require__) { + // data of the current Hammer.gesture detection session + current: null, - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.8.1 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - (function (undefined) { - /************************************ - Constants - ************************************/ + // when this becomes true, no gestures are fired + stopped: false, - var moment, - VERSION = '2.8.1', - // the global-scope this is NOT the global object in Node.js - globalScope = typeof global !== 'undefined' ? global : this, - oldGlobalMoment, - round = Math.round, - i, + /** + * 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; + } - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + this.stopped = false; - // internal storage for locale config files - locales = {}, + // 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 + }; - // extra moment internal properties (plugins register props here) - momentProperties = [], + this.detect(eventData); + }, - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module.exports), + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; + } - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - // 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)$/, + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - // 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|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, + // 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); - // 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) - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - parseTokenOrdinal = /\d{1,2}/, + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; + } - //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 + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - // 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)?)?$/, + return eventData; + }, - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + /** + * 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); - 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}/] - ], + // reset the current + this.current = null; + this.stopped = true; + }, - // 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/] - ], + /** + * 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; - // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + 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; + } - // 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 - }, + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; + } - 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' - }, + 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); - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - // format function strings - formatFunctions = {}, + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - // 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 - }, + /** + * 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; - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + // 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 + }); + }); + } - 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.unix(); - }, - Q : function () { - return this.quarter(); - } - }, + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - deprecations = {}, + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; + Utils.extend(ev, { + startEvent: startEv, - // 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'); - } - } + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - 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 - }; - } + 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) + }); + + return ev; + }, - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn("Deprecation warning: " + msg); + /** + * 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; } - } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } + // set its index + gesture.index = gesture.index || 1000; - 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 Hammer.gesture to the list + this.gestures.push(gesture); - 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); + // 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; + }); + + return this.gestures; } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + }; - /************************************ - Constructors - ************************************/ + /** + * @module hammer + */ - function Locale() { - } + /** + * 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 prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - } + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - // 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; + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - // 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; + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - this._data = {}; + /** + * 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; + }); - this._locale = moment.localeData(); + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - this._bubble(); + // 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); } - /************************************ - Helpers - ************************************/ + /** + * 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 = []; + }; + + 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; + }, + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - function extend(a, b) { - for (var i in b) { - if (b.hasOwnProperty(i)) { - a[i] = b[i]; + 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; + }, + + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; } - if (b.hasOwnProperty('toString')) { - a.toString = b.toString; + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; + + // 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; } - if (b.hasOwnProperty('valueOf')) { - a.valueOf = b.valueOf; + element.dispatchEvent(event); + return this; + }, + + /** + * 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; + + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); + + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); } - return a; + this.eventHandlers = []; + + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + + return null; } + }; - function copyConfig(to, from) { - var i, prop, val; - 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; - } + /** + * @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 (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - return to; - } + function dragGesture(ev, inst) { + var cur = Detection.current; - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; } - } - // 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; + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } + 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; + } - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + var startCenter = cur.startEvent.center; - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } + // 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; - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - return res; - } + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - 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; - } + // 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; + } + } - return res; - } + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - // 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; - } + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } + var isVertical = Utils.isVertical(ev.direction); - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - 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); + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + + case EVENT_END: + triggered = false; + break; } } - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + 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, - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + /** + * 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, - // 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; - } + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } + /** + * 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, + + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + /** + * 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, - for (prop in inputObject) { - if (inputObject.hasOwnProperty(prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } + /** + * 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'); - return normalizedInput; + /** + * @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); } + }; - function makeList(field) { - var count, setter; + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } + /** + * @param {String} name + */ + (function(name) { + var timer; - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - if (typeof format === 'number') { - index = format; - format = undefined; - } + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + // set the gesture so we can check in the timeout if it still is + current.name = name; - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } + // 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; - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } + case EVENT_RELEASE: + clearTimeout(timer); + break; } - - return value; - } - - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } - - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; } - 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] > 23 ? 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; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); - m._pf.overflow = overflow; + /** + * @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); } } + }; + + /** + * @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, - 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; + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0; - } - } - return m._isValid; - } + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - // 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; + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - 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--; + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; } - i++; - } - return null; - } - 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) { } + // 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); + } } - return locales[name]; - } - - // Return a moment from input, that is local/utc/zone equivalent to model. - function makeAs(input, model) { - return model._isUTC ? moment(input).zone(model._offset || 0) : - moment(input).local(); } + }; - /************************************ - Locale - ************************************/ - + /** + * @module gestures + */ + /** + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ - extend(Locale.prototype, { + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - }, + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - monthsParse : function (monthName) { - var i, mom, regex; + 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; - if (!this._monthsParse) { - this._monthsParse = []; - } + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - if (!this._monthsParse[i]) { - mom = moment.utc([2000, i]); - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._monthsParse[i].test(monthName)) { - return i; + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } } - } - }, - - _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()]; - }, + break; + } + } - weekdaysParse : function (weekdayName) { - var i, mom, regex; + 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, - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - 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; - } - } - }, + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - _longDateFormat : { - 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; - }, + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - 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'); - }, + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, + /** + * @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, - _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) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom) : output; - }, + /** + * 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; + } - _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' - }, + if(inst.options.preventDefault) { + ev.preventDefault(); + } - 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); - }, + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } + } + }; - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + /** + * @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 + */ - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - preparse : function (string) { - return string; - }, + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - postformat : function (string) { - return string; - }, + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - _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. - }, + // 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; + } - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; - } - }); + // we are transforming! + Detection.current.name = name; - /************************************ - Formatting - ************************************/ + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } + inst.trigger(name, ev); // basic transform event - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; } - - 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(); - } + 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, - format = expandFormat(format, m.localeData()); + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } + handler: transformGesture + }; + })('transform'); - return formatFunctions[format](m); - } + /** + * @module hammer + */ - function expandFormat(format, locale) { - var i = 5; + // 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; + } - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } + })(window); - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } +/***/ }, +/* 51 */ +/***/ function(module, exports, __webpack_require__) { - return format; - } + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.7.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com + (function (undefined) { /************************************ - Parsing + Constants ************************************/ + var moment, + VERSION = "2.7.0", + // the global-scope this is NOT the global object in Node.js + globalScope = typeof global !== 'undefined' ? global : this, + oldGlobalMoment, + round = Math.round, + i, - // 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 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 parseTokenOrdinal; - 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; - } + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + // internal storage for language config files + languages = {}, + + // moment internal properties + momentProperties = { + _isAMomentObject: null, + _i : null, + _f : null, + _l : null, + _strict : null, + _tzm : null, + _isUTC : null, + _offset : null, // optional. Combine with _isUTC + _pf : null, + _lang : null // optional + }, - 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); - // 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, 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); - } + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module.exports), - 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; - // 24 HOUR - case 'H' : // fall through to hh - case 'HH' : // fall through to hh - 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 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; - } - 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); - } - } + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + // 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)$/, - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + // 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|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, - // 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; + // 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) + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + parseTokenOrdinal = /\d{1,2}/, - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + //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 - 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); + // 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)?)?$/, - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - // 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; + 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 (config._d) { - return; - } + // 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/] + ], - currentDate = currentDateArray(config); + // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + // 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 + }, - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + 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' + }, - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + // format function strings + formatFunctions = {}, - // 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]; - } + // default relative time thresholds + relativeTimeThresholds = { + s: 45, //seconds to minutes + m: 45, //minutes to hours + h: 22, //hours to days + dd: 25, //days to month (month == 1) + dm: 45, //days to months (months > 1) + dy: 345 //days to year + }, - // 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]; - } + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - 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); - } - } + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.lang().monthsShort(this, format); + }, + MMMM : function (format) { + return this.lang().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.lang().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.lang().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.lang().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.lang().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.lang().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.unix(); + }, + Q : function () { + return this.quarter(); + } + }, - function dateFromObject(config) { - var normalizedInput; + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; - if (config._d) { - return; + // 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"); } - - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day, - 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()]; - } + 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 + }; } - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } - - config._a = []; - config._pf.empty = true; - - // 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; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - 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); + function deprecate(msg, fn) { + var firstTime = true; + function printMsg() { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn("Deprecation warning: " + msg); } } - - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } - - // 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); + return extend(function () { + if (firstTime) { + printMsg(); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); } - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; } - - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + function ordinalizeToken(func, period) { + return function (a) { + return this.lang().ordinal(func.call(this, a), period); + }; } - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + 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); - scoreToBeat, - i, - currentScore; - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } + /************************************ + Constructors + ************************************/ - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + function Language() { - if (!isValid(tempConfig)) { - continue; - } + } - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + // Moment prototype object + function Moment(config) { + checkOverflow(config); + extend(this, config); + } - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + // 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; - tempConfig._pf.score = currentScore; + // 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; - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + this._data = {}; - extend(config, bestMoment || tempConfig); + this._bubble(); } - // 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'; + /************************************ + Helpers + ************************************/ + + + function extend(a, b) { + for (var i in b) { + if (b.hasOwnProperty(i)) { + a[i] = b[i]; } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; } - } - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); + if (b.hasOwnProperty("toString")) { + a.toString = b.toString; } - } - 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 = input.slice(0); - 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); + if (b.hasOwnProperty("valueOf")) { + a.valueOf = b.valueOf; } - } - 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); + return a; + } - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); + function cloneMoment(m) { + var result = {}, i; + for (i in m) { + if (m.hasOwnProperty(i) && momentProperties.hasOwnProperty(i)) { + result[i] = m[i]; + } } - return date; + + return result; } - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); } - return date; } - 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; - } - } + // 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; + + while (output.length < targetLength) { + output = '0' + output; } - return input; + return (sign ? (forceSign ? '+' : '') : '-') + output; } - /************************************ - Relative Time - ************************************/ - + // helper function for _.addTime and _.subtractTime + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - // 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); + 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); + } } - 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')), + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - 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]; + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); + // 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; } + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - /************************************ - Week of Year - ************************************/ + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + for (prop in inputObject) { + if (inputObject.hasOwnProperty(prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - // 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; + return normalizedInput; + } + function makeList(field) { + var count, setter; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; } - - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; } - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } + moment[field] = function (format, index) { + var i, getter, + method = moment.fn._lang[field], + results = []; - //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; + if (typeof format === 'number') { + index = format; + format = undefined; + } - 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; + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment.fn._lang, m, format || ''); + }; - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } }; } - /************************************ - Top Level Functions - ************************************/ - - function makeMoment(config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || moment.localeData(config._l); - - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); } else { - makeDateFromStringAndFormat(config); + value = Math.ceil(coercedNumber); } - } else { - makeDateFromInput(config); } - return new Moment(config); + return value; } - moment = function (input, format, locale, strict) { - var c; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - 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(); + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - return makeMoment(c); - }; + 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] > 23 ? 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; - moment.suppressDeprecationWarnings = false; + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } - 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); + m._pf.overflow = overflow; } - ); + } - // 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]; + 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; } } - return res; + return m._isValid; } - moment.min = function () { - var args = [].slice.call(arguments, 0); + function normalizeLanguage(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } - return pickBy('isBefore', args); - }; + // Return a moment from input, that is local/utc/zone equivalent to model. + function makeAs(input, model) { + return model._isUTC ? moment(input).zone(model._offset || 0) : + moment(input).local(); + } - moment.max = function () { - var args = [].slice.call(arguments, 0); + /************************************ + Languages + ************************************/ - return pickBy('isAfter', args); - }; - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + extend(Language.prototype, { - 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(); + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + }, - return makeMoment(c).utc(); - }; + _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + months : function (m) { + return this._months[m.month()]; + }, - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; + monthsParse : function (monthName) { + var i, mom, regex; - 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; + if (!this._monthsParse) { + this._monthsParse = []; } - } 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; - } + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + if (!this._monthsParse[i]) { + mom = moment.utc([2000, i]); + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._monthsParse[i].test(monthName)) { + return i; + } + } + }, - ret = new Duration(duration); + _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, - if (moment.isDuration(input) && input.hasOwnProperty('_locale')) { - ret._locale = input._locale; - } + _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - return ret; - }; + _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - // version number - moment.version = VERSION; + weekdaysParse : function (weekdayName) { + var i, mom, regex; - // default format - moment.defaultFormat = isoFormat; + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + 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 that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + _longDateFormat : { + 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; + }, - // 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 () {}; + 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'); + }, - // 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; - }; + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, - moment.lang = deprecate( - "moment.lang is deprecated. Use moment.locale instead.", - function (key, value) { - return moment.locale(key, value); - } - ); + _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) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom) : output; + }, - // 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); - } + _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); + }, - if (data) { - moment.duration._locale = moment._locale = data; - } - } + ordinal : function (number) { + return this._ordinal.replace("%d", number); + }, + _ordinal : "%d", - return moment._locale._abbr; - }; + preparse : function (string) { + return string; + }, - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); + postformat : function (string) { + return string; + }, - // backwards compat for now: also set the locale - moment.locale(name); + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; + _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; } - }; + }); - moment.langData = deprecate( - "moment.langData is deprecated. Use moment.localeData instead.", - function (key) { - return moment.localeData(key); + // Loads a language definition into the `languages` cache. The function + // takes a key and optionally values. If not in the browser and no values + // are provided, it will load the language file module. As a convenience, + // this function also returns the language values. + function loadLang(key, values) { + values.abbr = key; + if (!languages[key]) { + languages[key] = new Language(); } - ); + languages[key].set(values); + return languages[key]; + } - // returns locale data - moment.localeData = function (key) { - var locale; + // Remove a language from the `languages` cache. Mostly useful in tests. + function unloadLang(key) { + delete languages[key]; + } - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + // Determines which language definition to use and returns it. + // + // With no parameters, it will return the global language. If you + // pass in a language key, such as 'en', it will return the + // definition for 'en', so long as 'en' has already been loaded using + // moment.lang. + function getLangDefinition(key) { + var i = 0, j, lang, next, split, + get = function (k) { + if (!languages[k] && hasModule) { + try { + __webpack_require__(59)("./" + k); + } catch (e) { } + } + return languages[k]; + }; if (!key) { - return moment._locale; + return moment.fn._lang; } if (!isArray(key)) { //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; + lang = get(key); + if (lang) { + return lang; } key = [key]; } - return chooseLocale(key); - }; + //pick the language 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 + while (i < key.length) { + split = normalizeLanguage(key[i]).split('-'); + j = split.length; + next = normalizeLanguage(key[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + lang = get(split.slice(0, j).join('-')); + if (lang) { + return lang; + } + 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 moment.fn._lang; + } - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && obj.hasOwnProperty('_isAMomentObject')); - }; + /************************************ + Formatting + ************************************/ - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ""); + } + return input.replace(/\\/g, ""); } - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } } - return m; - }; - - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; - - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - /************************************ - Moment Prototype - ************************************/ + 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) { - extend(moment.fn = Moment.prototype, { + if (!m.isValid()) { + return m.lang().invalidDate(); + } - clone : function () { - return moment(this); - }, + format = expandFormat(format, m.lang()); - valueOf : function () { - return +this._d + ((this._offset || 0) * 60000); - }, + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } - unix : function () { - return Math.floor(+this / 1000); - }, + return formatFunctions[format](m); + } - toString : function () { - return this.clone().locale('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); - }, + function expandFormat(format, lang) { + var i = 5; - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + function replaceLongDateFormatTokens(input) { + return lang.longDateFormat(input) || input; + } - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - 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]'); - } - }, + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + return format; + } - isValid : function () { - return isValid(this); - }, - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + /************************************ + Parsing + ************************************/ - return false; - }, - parsingFlags : function () { - return extend({}, this._pf); - }, + // 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 getLangDefinition(config._l)._meridiemParse; + 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 parseTokenOrdinal; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), "i")); + return a; + } + } - invalidAt: function () { - return this._pf.overflow; - }, + 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]); - utc : function (keepLocalTime) { - return this.zone(0, keepLocalTime); - }, + return parts[0] === '+' ? -minutes : minutes; + } - local : function (keepLocalTime) { - if (this._isUTC) { - this.zone(0, keepLocalTime); - this._isUTC = false; + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; - if (keepLocalTime) { - this.add(this._d.getTimezoneOffset(), 'm'); - } + 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 = getLangDefinition(config._l).monthsParse(input); + // 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, 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); } - return this; - }, - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + 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 = getLangDefinition(config._l).isPM(input); + break; + // 24 HOUR + case 'H' : // fall through to hh + case 'HH' : // fall through to hh + 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 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 = getLangDefinition(config._l).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); + } + } - add : createAdder(1, 'add'), + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, lang; - subtract : createAdder(-1, 'subtract'), + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (this.zone() - that.zone()) * 6e4, - diff, output; + // 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 { + lang = getLangDefinition(config._l); + dow = lang._week.dow; + doy = lang._week.doy; - units = normalizeUnits(units); + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - 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. - output += ((this - moment(this).startOf('month')) - - (that - moment(that).startOf('month'))) / diff; - // same as above but with zones, to negate all dst - output -= ((this.zone() - moment(this).startOf('month').zone()) - - (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff; - if (units === 'year') { - output = output / 12; + 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 { - 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; + // default to begining of week + weekday = dow; } - return asFloat ? output : absRound(output); - }, + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + // 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; - 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)); - }, + if (config._d) { + return; + } - isLeapYear : function () { - return isLeapYear(this.year()); - }, + currentDate = currentDateArray(config); - isDST : function () { - return (this.zone() < this.clone().month(0).zone() || - this.zone() < this.clone().month(5).zone()); - }, + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } - 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; + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; } - }, - month : makeAccessor('Month', true), + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } - 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 */ - } + // 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]; + } - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + // 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]; + } - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + 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); + } + } - return this; - }, + function dateFromObject(config) { + var normalizedInput; - endOf: function (units) { - units = normalizeUnits(units); - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + if (config._d) { + return; + } - isAfter: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) > +moment(input).startOf(units); - }, + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - isBefore: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) < +moment(input).startOf(units); - }, + dateFromConfig(config); + } - isSame: function (input, units) { - units = units || 'ms'; - return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); - }, + 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()]; + } + } - 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; - } - ), + // date from string and format string + function makeDateFromStringAndFormat(config) { - 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; - } - ), + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } - // 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._d.getTimezoneOffset(); - } - 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._d.getTimezoneOffset(); - } - return this; - }, + config._a = []; + config._pf.empty = true; - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var lang = getLangDefinition(config._l), + string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + tokens = expandFormat(config._f, lang).match(formattingTokens) || []; - parseZone : function () { - if (this._tzm) { - this.zone(this._tzm); - } else if (typeof this._i === 'string') { - this.zone(this._i); + 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; } - return this; - }, - - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; + // 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 { - input = moment(input).zone(); + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); } + } - return (this.zone() - input) % 60 === 0; - }, + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + // 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; + } - 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'); - }, + dateFromConfig(config); + checkOverflow(config); + } - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } - 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'); - }, + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + scoreToBeat, + i, + currentScore; - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = extend({}, config); + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - 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); - }, + if (!isValid(tempConfig)) { + continue; + } - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + tempConfig._pf.score = currentScore; - set : function (units, value) { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; } - 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) { - if (key === undefined) { - return this._locale._abbr; - } else { - this._locale = moment.localeData(key); - return this; - } - }, + extend(config, bestMoment || tempConfig); + } - lang : deprecate( - "moment().lang() is deprecated. Use moment().localeData() instead.", - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - this._locale = moment.localeData(key); - return this; + // 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; + } + } - localeData : function () { - return this._locale; + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); } - }); + } - function rawMonthSetter(mom, value) { - var dayOfMonth; + function makeDateFromInput(config) { + var input = config._i, + matched = aspNetJsonRegex.exec(input); - // 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; - } + if (input === undefined) { + config._d = new Date(); + } else if (matched) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = input.slice(0); + dateFromConfig(config); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); } - - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; } - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + 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); + + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); } + return date; } - 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 parseWeekday(input, language) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); } - }; + else { + input = language.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; } - 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)); + /************************************ + Relative Time + ************************************/ - // 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; - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) { + return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function relativeTime(milliseconds, withoutSuffix, lang) { + var seconds = round(Math.abs(milliseconds) / 1000), + minutes = round(seconds / 60), + hours = round(minutes / 60), + days = round(hours / 24), + years = round(days / 365), + 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.dd && ['dd', days] || + days <= relativeTimeThresholds.dm && ['M'] || + days < relativeTimeThresholds.dy && ['MM', round(days / 30)] || + years === 1 && ['y'] || ['yy', years]; + args[2] = withoutSuffix; + args[3] = milliseconds > 0; + args[4] = lang; + return substituteTimeAgo.apply({}, args); + } + /************************************ - Duration Prototype + Week of Year ************************************/ - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; - } + // 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; + } + + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + adjustedMoment = moment(mom).add('d', daysToDayOfWeek); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; } - extend(moment.duration.fn = Duration.prototype, { + //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; - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + 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 + }; + } - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + /************************************ + Top Level Functions + ************************************/ - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + function makeMoment(config) { + var input = config._i, + format = config._f; - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } - hours = absRound(minutes / 60); - data.hours = hours % 24; + if (typeof input === 'string') { + config._i = input = getLangDefinition().preparse(input); + } - days += absRound(hours / 24); + if (moment.isMoment(input)) { + config = cloneMoment(input); - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + config._d = new Date(+input._d); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + return new Moment(config); + } - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + moment = function (input, format, lang, strict) { + var c; - data.days = days; - data.months = months; - data.years = years; - }, + if (typeof(lang) === "boolean") { + strict = lang; + lang = 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 = lang; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + return makeMoment(c); + }; - 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); + moment.suppressDeprecationWarnings = false; - return this; - }, + 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); + }); - weeks : function () { - return absRound(this.days() / 7); - }, + // 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; + } - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + moment.min = function () { + var args = [].slice.call(arguments, 0); - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + return pickBy('isBefore', args); + }; - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } + moment.max = function () { + var args = [].slice.call(arguments, 0); - return this.localeData().postformat(output); - }, + return pickBy('isAfter', args); + }; - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + // creating with utc + moment.utc = function (input, format, lang, strict) { + var c; - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + if (typeof(lang) === "boolean") { + strict = lang; + lang = 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 = lang; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); - this._bubble(); + return makeMoment(c).utc(); + }; - return this; - }, + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; - subtract : function (input, val) { - var dur = moment.duration(input, val); + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso; - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + 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]) + }; + } - this._bubble(); + ret = new Duration(duration); - return this; - }, + if (moment.isDuration(input) && input.hasOwnProperty('_lang')) { + ret._lang = input._lang; + } - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + return ret; + }; - as : function (units) { - var days, months; - units = normalizeUnits(units); + // version number + moment.version = VERSION; - days = this._days + this._milliseconds / 864e5; - if (units === 'month' || units === 'year') { - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - days += yearsToDays(this._months / 12); - switch (units) { - case 'week': return days / 7; - case 'day': return days; - case 'hour': return days * 24; - case 'minute': return days * 24 * 60; - case 'second': return days * 24 * 60 * 60; - case 'millisecond': return days * 24 * 60 * 60 * 1000; - default: throw new Error('Unknown unit ' + units); - } - } - }, + // default format + moment.defaultFormat = isoFormat; - lang : moment.fn.lang, - locale : moment.fn.locale, + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; - toIsoString : deprecate( - "toIsoString() is deprecated. Please use toISOString() instead " + - "(notice the capitals)", - function () { - return this.toISOString(); - } - ), + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - 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); + // 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 () {}; - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function(threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - 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' : ''); - }, + // This function will load languages and then set the global language. If + // no arguments are passed in, it will simply return the current global + // language key. + moment.lang = function (key, values) { + var r; + if (!key) { + return moment.fn._lang._abbr; + } + if (values) { + loadLang(normalizeLanguage(key), values); + } else if (values === null) { + unloadLang(key); + key = 'en'; + } else if (!languages[key]) { + getLangDefinition(key); + } + r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key); + return r._abbr; + }; - localeData : function () { - return this._locale; + // returns language data + moment.langData = function (key) { + if (key && key._lang && key._lang._abbr) { + key = key._lang._abbr; } - }); + return getLangDefinition(key); + }; + + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && obj.hasOwnProperty('_isAMomentObject')); + }; + + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); } - for (i in unitMillisecondFactors) { - if (unitMillisecondFactors.hasOwnProperty(i)) { - makeDurationGetter(i.toLowerCase()); + 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; } - } - 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'); + return m; }; - moment.duration.fn.asMonths = function () { - return this.as('M'); + + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); }; - moment.duration.fn.asYears = function () { - return this.as('y'); + + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); }; /************************************ - Default Locale + Moment Prototype ************************************/ - // Set default locale, other locale will inherit from English. - moment.locale('en', { - 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 */ + extend(moment.fn = Moment.prototype, { - /************************************ - Exposing Moment - ************************************/ + clone : function () { + return moment(this); + }, - 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; - } - } + valueOf : function () { + return +this._d + ((this._offset || 0) * 60000); + }, - // 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; - } + unix : function () { + return Math.floor(+this / 1000); + }, - 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__(63)(module))) + toString : function () { + return this.clone().lang('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); + }, -/***/ }, -/* 51 */ -/***/ function(module, exports, __webpack_require__) { + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - /** - * Copyright 2012 Craig Campbell - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Mousetrap is a simple keyboard shortcut library for Javascript with - * no external dependencies - * - * @version 1.1.2 - * @url craig.is/killing/mice - */ + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + 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]'); + } + }, - /** - * mapping of special keycodes to their corresponding keys - * - * everything in this dictionary cannot use keypress events - * so it has to be here to map to the correct keycodes for - * keyup/keydown events - * - * @type {Object} - */ - var _MAP = { - 8: 'backspace', - 9: 'tab', - 13: 'enter', - 16: 'shift', - 17: 'ctrl', - 18: 'alt', - 20: 'capslock', - 27: 'esc', - 32: 'space', - 33: 'pageup', - 34: 'pagedown', - 35: 'end', - 36: 'home', - 37: 'left', - 38: 'up', - 39: 'right', - 40: 'down', - 45: 'ins', - 46: 'del', - 91: 'meta', - 93: 'meta', - 224: 'meta' - }, + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, - /** - * mapping for special characters so they can support - * - * this dictionary is only used incase you want to bind a - * keyup or keydown event to one of these keys - * - * @type {Object} - */ - _KEYCODE_MAP = { - 106: '*', - 107: '+', - 109: '-', - 110: '.', - 111 : '/', - 186: ';', - 187: '=', - 188: ',', - 189: '-', - 190: '.', - 191: '/', - 192: '`', - 219: '[', - 220: '\\', - 221: ']', - 222: '\'' - }, + isValid : function () { + return isValid(this); + }, - /** - * this is a mapping of keys that require shift on a US keypad - * back to the non shift equivelents - * - * this is so you can use keyup events with these keys - * - * note that this will only work reliably on US keyboards - * - * @type {Object} - */ - _SHIFT_MAP = { - '~': '`', - '!': '1', - '@': '2', - '#': '3', - '$': '4', - '%': '5', - '^': '6', - '&': '7', - '*': '8', - '(': '9', - ')': '0', - '_': '-', - '+': '=', - ':': ';', - '\"': '\'', - '<': ',', - '>': '.', - '?': '/', - '|': '\\' - }, + isDSTShifted : function () { - /** - * this is a list of special strings you can use to map - * to modifier keys when you specify your keyboard shortcuts - * - * @type {Object} - */ - _SPECIAL_ALIASES = { - 'option': 'alt', - 'command': 'meta', - 'return': 'enter', - 'escape': 'esc' - }, + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } - /** - * variable to store the flipped version of _MAP from above - * needed to check if we should use keypress or not when no action - * is specified - * - * @type {Object|undefined} - */ - _REVERSE_MAP, + return false; + }, - /** - * a list of all the callbacks setup via Mousetrap.bind() - * - * @type {Object} - */ - _callbacks = {}, + parsingFlags : function () { + return extend({}, this._pf); + }, - /** - * direct map of string combinations to callbacks used for trigger() - * - * @type {Object} - */ - _direct_map = {}, + invalidAt: function () { + return this._pf.overflow; + }, - /** - * keeps track of what level each sequence is at since multiple - * sequences can start out with the same sequence - * - * @type {Object} - */ - _sequence_levels = {}, + utc : function () { + return this.zone(0); + }, - /** - * variable to store the setTimeout call - * - * @type {null|number} - */ - _reset_timer, + local : function () { + this.zone(0); + this._isUTC = false; + return this; + }, - /** - * temporary state where we will ignore the next keyup - * - * @type {boolean|string} - */ - _ignore_next_keyup = false, + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.lang().postformat(output); + }, - /** - * are we currently inside of a sequence? - * type of action ("keyup" or "keydown" or "keypress") or false - * - * @type {boolean|string} - */ - _inside_sequence = false; + add : function (input, val) { + var dur; + // switch args to support add('s', 1) and add(1, 's') + if (typeof input === 'string' && typeof val === 'string') { + dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); + } else if (typeof input === 'string') { + dur = moment.duration(+val, input); + } else { + dur = moment.duration(input, val); + } + addOrSubtractDurationFromMoment(this, dur, 1); + return this; + }, - /** - * loop through the f keys, f1 to f19 and add them to the map - * programatically - */ - for (var i = 1; i < 20; ++i) { - _MAP[111 + i] = 'f' + i; - } + subtract : function (input, val) { + var dur; + // switch args to support subtract('s', 1) and subtract(1, 's') + if (typeof input === 'string' && typeof val === 'string') { + dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); + } else if (typeof input === 'string') { + dur = moment.duration(+val, input); + } else { + dur = moment.duration(input, val); + } + addOrSubtractDurationFromMoment(this, dur, -1); + return this; + }, - /** - * loop through to map numbers on the numeric keypad - */ - for (i = 0; i <= 9; ++i) { - _MAP[i + 96] = i; - } + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (this.zone() - that.zone()) * 6e4, + diff, output; - /** - * cross browser add event method - * - * @param {Element|HTMLDocument} object - * @param {string} type - * @param {Function} callback - * @returns void - */ - function _addEvent(object, type, callback) { - if (object.addEventListener) { - return object.addEventListener(type, callback, false); - } + units = normalizeUnits(units); - object.attachEvent('on' + type, callback); - } + 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. + output += ((this - moment(this).startOf('month')) - + (that - moment(that).startOf('month'))) / diff; + // same as above but with zones, to negate all dst + output -= ((this.zone() - moment(this).startOf('month').zone()) - + (that.zone() - moment(that).startOf('month').zone())) * 6e4 / 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); + }, - /** - * takes the event and returns the key character - * - * @param {Event} e - * @return {string} - */ - function _characterFromEvent(e) { + from : function (time, withoutSuffix) { + return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix); + }, - // for keypress events we should return the character as is - if (e.type == 'keypress') { - return String.fromCharCode(e.which); - } + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, - // for non keypress events the special maps are needed - if (_MAP[e.which]) { - return _MAP[e.which]; - } + 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.lang().calendar(format, this)); + }, - if (_KEYCODE_MAP[e.which]) { - return _KEYCODE_MAP[e.which]; - } + isLeapYear : function () { + return isLeapYear(this.year()); + }, - // if it is not in the special map - return String.fromCharCode(e.which).toLowerCase(); - } + isDST : function () { + return (this.zone() < this.clone().month(0).zone() || + this.zone() < this.clone().month(5).zone()); + }, - /** - * should we stop this event before firing off callbacks - * - * @param {Event} e - * @return {boolean} - */ - function _stop(e) { - var element = e.target || e.srcElement, - tag_name = element.tagName; + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.lang()); + return this.add({ d : input - day }); + } else { + return day; + } + }, - // if the element has the class "mousetrap" then no need to stop - if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) { - return false; - } + month : makeAccessor('Month', true), - // stop for input, select, and textarea - return tag_name == 'INPUT' || tag_name == 'SELECT' || tag_name == 'TEXTAREA' || (element.contentEditable && element.contentEditable == 'true'); - } + 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 */ + } - /** - * checks if two arrays are equal - * - * @param {Array} modifiers1 - * @param {Array} modifiers2 - * @returns {boolean} - */ - function _modifiersMatch(modifiers1, modifiers2) { - return modifiers1.sort().join(',') === modifiers2.sort().join(','); - } + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } - /** - * resets all sequence counters except for the ones passed in - * - * @param {Object} do_not_reset - * @returns void - */ - function _resetSequences(do_not_reset) { - do_not_reset = do_not_reset || {}; + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } - var active_sequences = false, - key; + return this; + }, - for (key in _sequence_levels) { - if (do_not_reset[key]) { - active_sequences = true; - continue; - } - _sequence_levels[key] = 0; - } + endOf: function (units) { + units = normalizeUnits(units); + return this.startOf(units).add((units === 'isoWeek' ? 'week' : units), 1).subtract('ms', 1); + }, - if (!active_sequences) { - _inside_sequence = false; - } - } + isAfter: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) > +moment(input).startOf(units); + }, - /** - * finds all callbacks that match based on the keycode, modifiers, - * and action - * - * @param {string} character - * @param {Array} modifiers - * @param {string} action - * @param {boolean=} remove - should we remove any matches - * @param {string=} combination - * @returns {Array} - */ - function _getMatches(character, modifiers, action, remove, combination) { - var i, - callback, - matches = []; + isBefore: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) < +moment(input).startOf(units); + }, - // if there are no events related to this keycode - if (!_callbacks[character]) { - return []; - } + isSame: function (input, units) { + units = units || 'ms'; + return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); + }, - // if a modifier key is coming up on its own we should allow it - if (action == 'keyup' && _isModifier(character)) { - modifiers = [character]; - } + 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; + } + ), - // loop through all callbacks for the key that was pressed - // and see if any of them match - for (i = 0; i < _callbacks[character].length; ++i) { - callback = _callbacks[character][i]; + 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; + } + ), - // if this is a sequence but it is not at the right level - // then move onto the next match - if (callback.seq && _sequence_levels[callback.seq] != callback.level) { - continue; - } + // keepTime = 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, keepTime) { + var offset = this._offset || 0; + if (input != null) { + if (typeof input === "string") { + input = timezoneMinutesFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + this._offset = input; + this._isUTC = true; + if (offset !== input) { + if (!keepTime || 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._d.getTimezoneOffset(); + } + return this; + }, - // if the action we are looking for doesn't match the action we got - // then we should keep going - if (action != callback.action) { - continue; - } + zoneAbbr : function () { + return this._isUTC ? "UTC" : ""; + }, - // if this is a keypress event that means that we need to only - // look at the character, otherwise check the modifiers as - // well - if (action == 'keypress' || _modifiersMatch(modifiers, callback.modifiers)) { + zoneName : function () { + return this._isUTC ? "Coordinated Universal Time" : ""; + }, - // remove is used so if you change your mind and call bind a - // second time with a new function the first one is overwritten - if (remove && callback.combo == combination) { - _callbacks[character].splice(i, 1); - } + parseZone : function () { + if (this._tzm) { + this.zone(this._tzm); + } else if (typeof this._i === 'string') { + this.zone(this._i); + } + return this; + }, - matches.push(callback); - } - } + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).zone(); + } - return matches; - } + return (this.zone() - input) % 60 === 0; + }, - /** - * takes a key event and figures out what the modifiers are - * - * @param {Event} e - * @returns {Array} - */ - function _eventModifiers(e) { - var modifiers = []; + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - if (e.shiftKey) { - modifiers.push('shift'); - } + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); + }, - if (e.altKey) { - modifiers.push('alt'); - } + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - if (e.ctrlKey) { - modifiers.push('ctrl'); - } + weekYear : function (input) { + var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year; + return input == null ? year : this.add("y", (input - year)); + }, - if (e.metaKey) { - modifiers.push('meta'); - } + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add("y", (input - year)); + }, - return modifiers; - } + week : function (input) { + var week = this.lang().week(this); + return input == null ? week : this.add("d", (input - week) * 7); + }, - /** - * actually calls the callback function - * - * if your callback function returns false this will use the jquery - * convention - prevent default and stop propogation on the event - * - * @param {Function} callback - * @param {Event} e - * @returns void - */ - function _fireCallback(callback, e) { - if (callback(e) === false) { - if (e.preventDefault) { - e.preventDefault(); - } + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add("d", (input - week) * 7); + }, - if (e.stopPropagation) { - e.stopPropagation(); - } + weekday : function (input) { + var weekday = (this.day() + 7 - this.lang()._week.dow) % 7; + return input == null ? weekday : this.add("d", input - weekday); + }, - e.returnValue = false; - e.cancelBubble = true; - } - } + 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); + }, - /** - * handles a character key event - * - * @param {string} character - * @param {Event} e - * @returns void - */ - function _handleCharacter(character, e) { + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, - // if this event should not happen stop here - if (_stop(e)) { - return; - } + weeksInYear : function () { + var weekInfo = this._lang._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, - var callbacks = _getMatches(character, _eventModifiers(e), e.type), - i, - do_not_reset = {}, - processed_sequence_callback = false; + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, - // loop through matching callbacks for this key event - for (i = 0; i < callbacks.length; ++i) { + set : function (units, value) { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + return this; + }, - // fire for all sequence callbacks - // this is because if for example you have multiple sequences - // bound such as "g i" and "g t" they both need to fire the - // callback for matching g cause otherwise you can only ever - // match the first one - if (callbacks[i].seq) { - processed_sequence_callback = true; + // If passed a language key, it will set the language for this + // instance. Otherwise, it will return the language configuration + // variables for this instance. + lang : function (key) { + if (key === undefined) { + return this._lang; + } else { + this._lang = getLangDefinition(key); + return this; + } + } + }); - // keep a list of which sequences were matches for later - do_not_reset[callbacks[i].seq] = 1; - _fireCallback(callbacks[i].callback, e); - continue; - } + function rawMonthSetter(mom, value) { + var dayOfMonth; - // if there were no sequence matches but we are still here - // that means this is a regular match so we should fire that - if (!processed_sequence_callback && !_inside_sequence) { - _fireCallback(callbacks[i].callback, e); - } - } + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.lang().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } - // if you are inside of a sequence and the key you are pressing - // is not a modifier key then we should reset all sequences - // that were not matched by this key event - if (e.type == _inside_sequence && !_isModifier(character)) { - _resetSequences(do_not_reset); - } - } + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - /** - * handles a keydown event - * - * @param {Event} e - * @returns void - */ - function _handleKey(e) { + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - // normalize e.which for key events - // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion - e.which = typeof e.which == "number" ? e.which : e.keyCode; + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } - var character = _characterFromEvent(e); + 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); + } + }; + } - // no character found then stop - if (!character) { - return; - } + 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)); - if (e.type == 'keyup' && _ignore_next_keyup == character) { - _ignore_next_keyup = false; - return; - } + // 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; - _handleCharacter(character, e); - } + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - /** - * determines if the keycode specified is a modifier key or not - * - * @param {string} key - * @returns {boolean} - */ - function _isModifier(key) { - return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta'; - } + /************************************ + Duration Prototype + ************************************/ - /** - * called to set a 1 second timeout on the specified sequence - * - * this is so after each key press in the sequence you have 1 second - * to press the next key before you have to start over - * - * @returns void - */ - function _resetSequenceTimer() { - clearTimeout(_reset_timer); - _reset_timer = setTimeout(_resetSequences, 1000); - } - /** - * reverses the map lookup so that we can look for specific keys - * to see what can and can't use keypress - * - * @return {Object} - */ - function _getReverseMap() { - if (!_REVERSE_MAP) { - _REVERSE_MAP = {}; - for (var key in _MAP) { + extend(moment.duration.fn = Duration.prototype, { - // pull out the numeric keypad from here cause keypress should - // be able to detect the keys from the character - if (key > 95 && key < 112) { - continue; - } + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years; - if (_MAP.hasOwnProperty(key)) { - _REVERSE_MAP[_MAP[key]] = key; - } - } - } - return _REVERSE_MAP; - } + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - /** - * picks the best action based on the key combination - * - * @param {string} key - character for key - * @param {Array} modifiers - * @param {string=} action passed in - */ - function _pickBestAction(key, modifiers, action) { + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; - // if no action was picked in we should try to pick the one - // that we think would work best for this key - if (!action) { - action = _getReverseMap()[key] ? 'keydown' : 'keypress'; - } + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; - // modifier keys don't work as expected with keypress, - // switch to keydown - if (action == 'keypress' && modifiers.length) { - action = 'keydown'; - } + hours = absRound(minutes / 60); + data.hours = hours % 24; - return action; - } + days += absRound(hours / 24); + data.days = days % 30; - /** - * binds a key sequence to an event - * - * @param {string} combo - combo specified in bind call - * @param {Array} keys - * @param {Function} callback - * @param {string=} action - * @returns void - */ - function _bindSequence(combo, keys, callback, action) { + months += absRound(days / 30); + data.months = months % 12; - // start off by adding a sequence level record for this combination - // and setting the level to 0 - _sequence_levels[combo] = 0; + years = absRound(months / 12); + data.years = years; + }, - // if there is no action pick the best one for the first key - // in the sequence - if (!action) { - action = _pickBestAction(keys[0], []); - } + weeks : function () { + return absRound(this.days() / 7); + }, - /** - * callback to increase the sequence level for this sequence and reset - * all other sequences that were active - * - * @param {Event} e - * @returns void - */ - var _increaseSequence = function(e) { - _inside_sequence = action; - ++_sequence_levels[combo]; - _resetSequenceTimer(); - }, + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, - /** - * wraps the specified callback inside of another function in order - * to reset all sequence counters as soon as this sequence is done - * - * @param {Event} e - * @returns void - */ - _callbackAndReset = function(e) { - _fireCallback(callback, e); + humanize : function (withSuffix) { + var difference = +this, + output = relativeTime(difference, !withSuffix, this.lang()); - // we should ignore the next key up if the action is key down - // or keypress. this is so if you finish a sequence and - // release the key the final key will not trigger a keyup - if (action !== 'keyup') { - _ignore_next_keyup = _characterFromEvent(e); - } + if (withSuffix) { + output = this.lang().pastFuture(difference, output); + } - // weird race condition if a sequence ends with the key - // another sequence begins with - setTimeout(_resetSequences, 10); - }, - i; + return this.lang().postformat(output); + }, - // loop through keys one at a time and bind the appropriate callback - // function. for any key leading up to the final one it should - // increase the sequence. after the final, it should reset all sequences - for (i = 0; i < keys.length; ++i) { - _bindSingle(keys[i], i < keys.length - 1 ? _increaseSequence : _callbackAndReset, action, combo, i); - } - } + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); - /** - * binds a single keyboard combination - * - * @param {string} combination - * @param {Function} callback - * @param {string=} action - * @param {string=} sequence_name - name of sequence if part of sequence - * @param {number=} level - what part of the sequence the command is - * @returns void - */ - function _bindSingle(combination, callback, action, sequence_name, level) { + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - // make sure multiple spaces in a row become a single space - combination = combination.replace(/\s+/g, ' '); + this._bubble(); - var sequence = combination.split(' '), - i, - key, - keys, - modifiers = []; + return this; + }, - // if this pattern is a sequence of keys then run through this method - // to reprocess each pattern one key at a time - if (sequence.length > 1) { - return _bindSequence(combination, sequence, callback, action); - } + subtract : function (input, val) { + var dur = moment.duration(input, val); - // take the keys from this pattern and figure out what the actual - // pattern is all about - keys = combination === '+' ? ['+'] : combination.split('+'); + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; + this._bubble(); - // normalize key names - if (_SPECIAL_ALIASES[key]) { - key = _SPECIAL_ALIASES[key]; - } + return this; + }, - // if this is not a keypress event then we should - // be smart about using shift keys - // this will only work for US keyboards however - if (action && action != 'keypress' && _SHIFT_MAP[key]) { - key = _SHIFT_MAP[key]; - modifiers.push('shift'); - } + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - // if this key is a modifier then add it to the list of modifiers - if (_isModifier(key)) { - modifiers.push(key); - } - } + as : function (units) { + units = normalizeUnits(units); + return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's'](); + }, - // depending on what the key combination is - // we will try to pick the best event for it - action = _pickBestAction(key, modifiers, action); + lang : moment.fn.lang, - // make sure to initialize array if this is the first time - // a callback is added for this key - if (!_callbacks[key]) { - _callbacks[key] = []; - } + 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); - // remove an existing match if there is one - _getMatches(key, modifiers, action, !sequence_name, combination); + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } - // add this call back to the array - // if it is a sequence put it at the beginning - // if not put it at the end - // - // this is important because the way these are processed expects - // the sequence ones to come first - _callbacks[key][sequence_name ? 'unshift' : 'push']({ - callback: callback, - modifiers: modifiers, - action: action, - seq: sequence_name, - level: level, - combo: combination - }); - } + 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' : ''); + } + }); - /** - * binds multiple combinations to the same callback - * - * @param {Array} combinations - * @param {Function} callback - * @param {string|undefined} action - * @returns void - */ - function _bindMultiple(combinations, callback, action) { - for (var i = 0; i < combinations.length; ++i) { - _bindSingle(combinations[i], callback, action); - } - } + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } - // start! - _addEvent(document, 'keypress', _handleKey); - _addEvent(document, 'keydown', _handleKey); - _addEvent(document, 'keyup', _handleKey); + function makeDurationAsGetter(name, factor) { + moment.duration.fn['as' + name] = function () { + return +this / factor; + }; + } - var mousetrap = { + for (i in unitMillisecondFactors) { + if (unitMillisecondFactors.hasOwnProperty(i)) { + makeDurationAsGetter(i, unitMillisecondFactors[i]); + makeDurationGetter(i.toLowerCase()); + } + } - /** - * binds an event to mousetrap - * - * can be a single key, a combination of keys separated with +, - * a comma separated list of keys, an array of keys, or - * a sequence of keys separated by spaces - * - * be sure to list the modifier keys first to make sure that the - * correct key ends up getting bound (the last key in the pattern) - * - * @param {string|Array} keys - * @param {Function} callback - * @param {string=} action - 'keypress', 'keydown', or 'keyup' - * @returns void - */ - bind: function(keys, callback, action) { - _bindMultiple(keys instanceof Array ? keys : [keys], callback, action); - _direct_map[keys + ':' + action] = callback; - return this; - }, + makeDurationAsGetter('Weeks', 6048e5); + moment.duration.fn.asMonths = function () { + return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12; + }; - /** - * unbinds an event to mousetrap - * - * the unbinding sets the callback function of the specified key combo - * to an empty function and deletes the corresponding key in the - * _direct_map dict. - * - * the keycombo+action has to be exactly the same as - * it was defined in the bind method - * - * TODO: actually remove this from the _callbacks dictionary instead - * of binding an empty function - * - * @param {string|Array} keys - * @param {string} action - * @returns void - */ - unbind: function(keys, action) { - if (_direct_map[keys + ':' + action]) { - delete _direct_map[keys + ':' + action]; - this.bind(keys, function() {}, action); - } - return this; - }, - /** - * triggers an event that has already been bound - * - * @param {string} keys - * @param {string=} action - * @returns void - */ - trigger: function(keys, action) { - _direct_map[keys + ':' + action](); - return this; - }, + /************************************ + Default Lang + ************************************/ - /** - * resets the library back to its initial state. this is useful - * if you want to clear out the current keyboard shortcuts and bind - * new ones - for example if you switch to another page - * - * @returns void - */ - reset: function() { - _callbacks = {}; - _direct_map = {}; - return this; - } - }; - module.exports = mousetrap; + // Set default language, other languages will inherit from English. + moment.lang('en', { + 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_LANGUAGES */ + + /************************************ + 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__(63)(module))) /***/ }, /* 52 */ @@ -30480,11 +30433,17 @@ return /******/ (function(modules) { // webpackBootstrap /* 59 */ /***/ function(module, exports, __webpack_require__) { + var map = {}; function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.resolve = webpackContext; - webpackContext.keys = function() { return []; }; + return __webpack_require__(webpackContextResolve(req)); + }; + function webpackContextResolve(req) { + return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }()); + }; + webpackContext.keys = function webpackContextKeys() { + return Object.keys(map); + }; + webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; @@ -31134,4 +31093,4 @@ return /******/ (function(modules) { // webpackBootstrap /***/ } /******/ ]) -}); +}) diff --git a/dist/vis.map b/dist/vis.map index 3ef11135..204dbe3a 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","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","ItemBox","ItemPoint","ItemRange","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","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","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","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","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","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","setOptions","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","sortNumber","obj","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","end","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","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","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","clientX","targetTouches","clientY","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","LN10","step1","pow","step2","step5","toPrecision","getStep","coreProp","Core","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setItems","_initAutoResize","component","newDataSet","initialLoad","fit","setWindow","setGroups","groups","setSelection","getSelection","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","minimumStep","containerHeight","customRange","current","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","touch","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","changed","_applyRange","newStart","newEnd","getRange","conversion","allowDragging","gesture","deltaX","deltaY","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","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","date","year","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","time","currentTimeTimer","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","dragging","stopPropagation","svg","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","backgroundHorizontal","changeCalled","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","visibleItems","byStart","byEnd","inner","foreground","marker","visibility","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","_moveToGroup","oldGroup","UNGROUPED","box","_updateUngrouped","centerContainer","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","itemData","_removeItem","groupData","groupOptions","oldGroupId","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","groupFromTarget","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","allowOverlap","dataAxis","legend","lastStart","rangePerPixelInv","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","preprocessedGroup","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_preprocessData","_updateYAxis","_convertYvalues","_drawLineGraph","_drawBarGraph","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","intersections","amount","resolved","drawData","_getSafeDrawData","nextKey","prevKey","slots","total","slot","svgHeight","_catmullRom","_linear","dFill","_drawPoints","datapoints","xValue","yValue","extractedData","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","lang","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","insertBefore","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","itemSetHeight","marginLeft","baseClassName","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fixed","fontColor","fontSize","fontFace","level","highlightColor","edges","widthSelectionMultiplier","hoverWidth","fontFill","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","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","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","_centerNetwork","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_createKeyBinds","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","manipulationDiv","navigationDivs","oldNodesData","_updateSelection","angle","_resetLevels","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","iterations","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","checkMovement","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_doInAllActiveSectors","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","requiredScale","canvasCenter","distanceFromCenter","networkConstants","fromId","toId","widthSelected","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","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","img","Image","onload","imagelist","grouplist","dynamicEdges","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","borderWidthSelected","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","lineCount","yLine","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","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","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","attributes","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","link","editNode","back","addDescription","linkDescription","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","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_RESULT__","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","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getScale","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","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","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","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","_d","Duration","duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_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","method","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","DATE","_overflowDayOfYear","isValid","_isValid","getTime","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","zone","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","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parts","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","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","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","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","defaultFormat","relativeTimeThreshold","threshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","getTimezoneOffset","inputString","asFloat","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","dates","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","require","noGlobal","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","unbind","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","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","nodeIds","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","smooth","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivActions","_stopMovement","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","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","supportNodes","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","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","centerX","centerY","_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","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","ItemBox","ItemPoint","ItemRange","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","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","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","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","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","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","setOptions","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","sortNumber","obj","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","end","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","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","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","clientX","targetTouches","clientY","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","LN10","step1","pow","step2","step5","toPrecision","getStep","coreProp","Core","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setItems","_initAutoResize","component","newDataSet","initialLoad","fit","setWindow","setGroups","groups","setSelection","getSelection","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","minimumStep","containerHeight","customRange","current","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","touch","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","changed","_applyRange","newStart","newEnd","getRange","conversion","allowDragging","gesture","deltaX","deltaY","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","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","date","year","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","time","currentTimeTimer","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","dragging","stopPropagation","svg","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","backgroundHorizontal","changeCalled","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","visibleItems","byStart","byEnd","inner","foreground","marker","visibility","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","_moveToGroup","oldGroup","UNGROUPED","box","_updateUngrouped","centerContainer","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","itemData","_removeItem","groupData","groupOptions","oldGroupId","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","groupFromTarget","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","lastStart","rangePerPixelInv","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_getRelevantData","_convertXcoordinates","_getYRanges","_updateYAxis","_convertYcoordinates","_drawLineGraph","_drawBarGraphs","dataContainer","_applySampling","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedData","barCombinedDataLeft","barCombinedDataRight","ignore","intersections","_getDataIntersections","_getStackedBarYRange","combinedData","accumulated","xpos","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","barPoints","heightOffset","drawData","_getSafeDrawData","nextKey","amount","resolved","prevKey","svgHeight","_catmullRom","_linear","dFill","_drawPoints","datapoints","xValue","yValue","extractedData","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","lang","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","insertBefore","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","itemSetHeight","marginLeft","baseClassName","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fixed","fontColor","fontSize","fontFace","level","highlightColor","edges","widthSelectionMultiplier","hoverWidth","fontFill","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","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","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","_centerNetwork","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_createKeyBinds","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","manipulationDiv","navigationDivs","oldNodesData","_updateSelection","angle","_resetLevels","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","iterations","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","checkMovement","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_doInAllActiveSectors","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","requiredScale","canvasCenter","distanceFromCenter","networkConstants","fromId","toId","widthSelected","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","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","img","Image","onload","imagelist","grouplist","dynamicEdges","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","borderWidthSelected","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","lineCount","yLine","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","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","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","attributes","gNode","custom","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","link","editNode","back","addDescription","linkDescription","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","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","unbind","trigger","__WEBPACK_AMD_DEFINE_RESULT__","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","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getScale","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","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","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","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","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","deprecate","msg","printMsg","suppressDeprecationWarnings","warn","firstTime","padToken","func","leftZeroFill","ordinalizeToken","period","ordinal","Language","Moment","config","checkOverflow","Duration","duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_bubble","cloneMoment","momentProperties","absRound","number","targetLength","forceSign","output","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","_d","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","_lang","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","_pf","DATE","_overflowDayOfYear","isValid","_isValid","getTime","_strict","normalizeLanguage","makeAs","model","_isUTC","zone","_offset","local","loadLang","abbr","languages","unloadLang","getLangDefinition","k","hasModule","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_l","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parts","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","_tzm","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","_i","getUTCFullYear","makeDateFromStringAndFormat","_f","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","language","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","relativeTimeThresholds","dd","dm","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","res","dayOfMonth","unit","makeAccessor","keepTime","makeDurationGetter","makeDurationAsGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","_isAMomentObject","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","val","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","_abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","inputString","dur","asFloat","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isAfter","isBefore","isSame","getTimezoneOffset","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","dates","isoWeeks","toJSON","withSuffix","difference","toIsoString","asSeconds","asMonths","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","_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","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","nodeIds","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","smooth","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivActions","_stopMovement","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","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","supportNodes","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","webpackContextResolve","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","centerX","centerY","_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.css b/dist/vis.min.css index 54148cbe..e2d0bf66 100755 --- a/dist/vis.min.css +++ b/dist/vis.min.css @@ -1 +1 @@ -.vis.timeline.root{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right,.vis.timeline .vispanel.top{border:1px #bfbfbf}.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.top{border-left-style:solid;border-right-style:solid}.vis.timeline .background{overflow:hidden}.vis.timeline .vispanel>.content{position:relative}.vis.timeline .vispanel .shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis.timeline .vispanel .shadow.top{top:-1px;left:0}.vis.timeline .vispanel .shadow.bottom{bottom:-1px;left:0}.vis.timeline .labelset{position:relative;width:100%;overflow:hidden;box-sizing:border-box}.vis.timeline .labelset .vlabel{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .labelset .vlabel:last-child{border-bottom:none}.vis.timeline .labelset .vlabel .inner{display:inline-block;padding:5px}.vis.timeline .labelset .vlabel .inner.hidden{padding:0}.vis.timeline .itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis.timeline .itemset .background,.vis.timeline .itemset .foreground{position:absolute;width:100%;height:100%}.vis.timeline .axis{position:absolute;width:100%;height:0;left:1px;z-index:1}.vis.timeline .foreground .group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .foreground .group:last-child{border-bottom:none}.vis.timeline .item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block;padding:5px}.vis.timeline .item.selected{border-color:#FFC200;background-color:#FFF785;z-index:999}.vis.timeline .editable .item.selected{cursor:move}.vis.timeline .item.point.selected{background-color:#FFF785}.vis.timeline .item.box{text-align:center;border-style:solid;border-radius:2px}.vis.timeline .item.point{background:0 0}.vis.timeline .item.dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis.timeline .item.range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis.timeline .item.range .content{position:relative;display:inline-block;overflow:hidden;max-width:100%}.vis.timeline .item.line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis.timeline .item .content{white-space:nowrap;overflow:hidden}.vis.timeline .item .delete{background:url(img/timeline/delete.png) top center no-repeat;position:absolute;width:24px;height:24px;top:0;right:-24px;cursor:pointer}.vis.timeline .item.range .drag-left{position:absolute;width:24px;height:100%;top:0;left:-4px;cursor:w-resize;z-index:10000}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize;z-index:10001}.vis.timeline .timeaxis{position:relative;overflow:hidden}.vis.timeline .timeaxis.foreground{top:0;left:0;width:100%}.vis.timeline .timeaxis.background{position:absolute;top:0;left:0;width:100%;height:100%}.vis.timeline .timeaxis .text{position:absolute;color:#4d4d4d;padding:3px;white-space:nowrap}.vis.timeline .timeaxis .text.measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis.timeline .timeaxis .grid.vertical{position:absolute;width:0;border-right:1px solid}.vis.timeline .timeaxis .grid.minor{border-color:#e5e5e5}.vis.timeline .timeaxis .grid.major{border-color:#bfbfbf}.vis.timeline .currenttime{background-color:#FF7F6E;width:2px;z-index:1}.vis.timeline .customtime{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis.timeline .vispanel.background.horizontal .grid.horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis.timeline .vispanel.background.horizontal .grid.minor{border-color:#e5e5e5}.vis.timeline .vispanel.background.horizontal .grid.major{border-color:#bfbfbf}.vis.timeline .dataaxis .yAxis.major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis.timeline .dataaxis .yAxis.major.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis.timeline .dataaxis .yAxis.minor.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .legend{background-color:rgba(247,252,255,.65);padding:5px;border-color:#b3b3b3;border-style:solid;border-width:1px;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis.timeline .legendText{white-space:nowrap;display:inline-block}.vis.timeline .graphGroup0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis.timeline .graphGroup1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis.timeline .graphGroup2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis.timeline .graphGroup3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis.timeline .graphGroup4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis.timeline .graphGroup5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis.timeline .graphGroup6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis.timeline .graphGroup7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis.timeline .graphGroup8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis.timeline .graphGroup9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis.timeline .fill{fill-opacity:.1;stroke:none}.vis.timeline .bar{fill-opacity:.5;stroke-width:1px}.vis.timeline .point{stroke-width:2px;fill-opacity:1}.vis.timeline .legendBackground{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis.timeline .outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis.timeline .iconFill{fill-opacity:.3;stroke:none}div.network-manipulationDiv{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0);width:600px;height:30px;z-index:10;position:absolute}div.network-manipulation-editMode{height:30px;z-index:10;position:absolute;margin-top:20px}div.network-manipulation-closeDiv{height:30px;width:30px;z-index:11;position:absolute;margin-top:3px;margin-left:590px;background-position:0 0;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}span.network-manipulationUI{font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:-14px 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}span.network-manipulationUI:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}span.network-manipulationUI:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}span.network-manipulationUI.back{background-image:url(img/network/backIcon.png)}span.network-manipulationUI.none:hover{box-shadow:1px 1px 8px transparent;cursor:default}span.network-manipulationUI.none:active{box-shadow:1px 1px 8px transparent}span.network-manipulationUI.none{padding:0}span.network-manipulationUI.notification{margin:2px;font-weight:700}span.network-manipulationUI.add{background-image:url(img/network/addNodeIcon.png)}span.network-manipulationUI.edit{background-image:url(img/network/editIcon.png)}span.network-manipulationUI.edit.editmode{background-color:#fcfcfc;border-style:solid;border-width:1px;border-color:#ccc}span.network-manipulationUI.connect{background-image:url(img/network/connectIcon.png)}span.network-manipulationUI.delete{background-image:url(img/network/deleteIcon.png)}span.network-manipulationLabel{margin:0 0 0 23px;line-height:25px}div.network-seperatorLine{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.network-navigation{width:34px;height:34px;z-index:10;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-navigation:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.network-navigation:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.network-navigation.up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.network-navigation.down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.network-navigation.left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.network-navigation.right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.network-navigation.zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.network-navigation.zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.network-navigation.zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px} \ No newline at end of file +.vis.timeline.root{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right,.vis.timeline .vispanel.top{border:1px #bfbfbf}.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.top{border-left-style:solid;border-right-style:solid}.vis.timeline .background{overflow:hidden}.vis.timeline .vispanel>.content{position:relative}.vis.timeline .vispanel .shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis.timeline .vispanel .shadow.top{top:-1px;left:0}.vis.timeline .vispanel .shadow.bottom{bottom:-1px;left:0}.vis.timeline .labelset{position:relative;width:100%;overflow:hidden;box-sizing:border-box}.vis.timeline .labelset .vlabel{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .labelset .vlabel:last-child{border-bottom:none}.vis.timeline .labelset .vlabel .inner{display:inline-block;padding:5px}.vis.timeline .labelset .vlabel .inner.hidden{padding:0}.vis.timeline .itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis.timeline .itemset .background,.vis.timeline .itemset .foreground{position:absolute;width:100%;height:100%}.vis.timeline .axis{position:absolute;width:100%;height:0;left:1px;z-index:1}.vis.timeline .foreground .group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .foreground .group:last-child{border-bottom:none}.vis.timeline .item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block;padding:5px}.vis.timeline .item.selected{border-color:#FFC200;background-color:#FFF785;z-index:999}.vis.timeline .editable .item.selected{cursor:move}.vis.timeline .item.point.selected{background-color:#FFF785}.vis.timeline .item.box{text-align:center;border-style:solid;border-radius:2px}.vis.timeline .item.point{background:0 0}.vis.timeline .item.dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis.timeline .item.range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis.timeline .item.range .content{position:relative;display:inline-block;overflow:hidden;max-width:100%}.vis.timeline .item.line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis.timeline .item .content{white-space:nowrap;overflow:hidden}.vis.timeline .item .delete{background:url(img/timeline/delete.png) no-repeat top center;position:absolute;width:24px;height:24px;top:0;right:-24px;cursor:pointer}.vis.timeline .item.range .drag-left{position:absolute;width:24px;height:100%;top:0;left:-4px;cursor:w-resize;z-index:10000}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize;z-index:10001}.vis.timeline .timeaxis{position:relative;overflow:hidden}.vis.timeline .timeaxis.foreground{top:0;left:0;width:100%}.vis.timeline .timeaxis.background{position:absolute;top:0;left:0;width:100%;height:100%}.vis.timeline .timeaxis .text{position:absolute;color:#4d4d4d;padding:3px;white-space:nowrap}.vis.timeline .timeaxis .text.measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis.timeline .timeaxis .grid.vertical{position:absolute;width:0;border-right:1px solid}.vis.timeline .timeaxis .grid.minor{border-color:#e5e5e5}.vis.timeline .timeaxis .grid.major{border-color:#bfbfbf}.vis.timeline .currenttime{background-color:#FF7F6E;width:2px;z-index:1}.vis.timeline .customtime{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis.timeline .vispanel.background.horizontal .grid.horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis.timeline .vispanel.background.horizontal .grid.minor{border-color:#e5e5e5}.vis.timeline .vispanel.background.horizontal .grid.major{border-color:#bfbfbf}.vis.timeline .dataaxis .yAxis.major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis.timeline .dataaxis .yAxis.major.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis.timeline .dataaxis .yAxis.minor.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .legend{background-color:rgba(247,252,255,.65);padding:5px;border-color:#b3b3b3;border-style:solid;border-width:1px;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis.timeline .legendText{white-space:nowrap;display:inline-block}.vis.timeline .graphGroup0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis.timeline .graphGroup1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis.timeline .graphGroup2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis.timeline .graphGroup3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis.timeline .graphGroup4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis.timeline .graphGroup5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis.timeline .graphGroup6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis.timeline .graphGroup7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis.timeline .graphGroup8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis.timeline .graphGroup9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis.timeline .fill{fill-opacity:.1;stroke:none}.vis.timeline .bar{fill-opacity:.5;stroke-width:1px}.vis.timeline .point{stroke-width:2px;fill-opacity:1}.vis.timeline .legendBackground{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis.timeline .outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis.timeline .iconFill{fill-opacity:.3;stroke:none}div.network-manipulationDiv{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0);width:600px;height:30px;z-index:10;position:absolute}div.network-manipulation-editMode{height:30px;z-index:10;position:absolute;margin-top:20px}div.network-manipulation-closeDiv{height:30px;width:30px;z-index:11;position:absolute;margin-top:3px;margin-left:590px;background-position:0 0;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}span.network-manipulationUI{font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:-14px 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}span.network-manipulationUI:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}span.network-manipulationUI:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}span.network-manipulationUI.back{background-image:url(img/network/backIcon.png)}span.network-manipulationUI.none:hover{box-shadow:1px 1px 8px transparent;cursor:default}span.network-manipulationUI.none:active{box-shadow:1px 1px 8px transparent}span.network-manipulationUI.none{padding:0}span.network-manipulationUI.notification{margin:2px;font-weight:700}span.network-manipulationUI.add{background-image:url(img/network/addNodeIcon.png)}span.network-manipulationUI.edit{background-image:url(img/network/editIcon.png)}span.network-manipulationUI.edit.editmode{background-color:#fcfcfc;border-style:solid;border-width:1px;border-color:#ccc}span.network-manipulationUI.connect{background-image:url(img/network/connectIcon.png)}span.network-manipulationUI.delete{background-image:url(img/network/deleteIcon.png)}span.network-manipulationLabel{margin:0 0 0 23px;line-height:25px}div.network-seperatorLine{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.network-navigation{width:34px;height:34px;z-index:10;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-navigation:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.network-navigation:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.network-navigation.up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.network-navigation.down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.network-navigation.left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.network-navigation.right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.network-navigation.zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.network-navigation.zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.network-navigation.zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index cd4dbaf7..cc0e8a4a 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -22,16 +22,16 @@ * License for the specific language governing permissions and limitations under * the License. */ -!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.Graph3d=i(5),e.graph3d={Camera:i(6),Filter:i(7),Point2d:i(8),Point3d:i(9),Slider:i(10),StepNumber:i(11)},e.Timeline=i(12),e.Graph2d=i(13),e.timeline={DataStep:i(14),Range:i(15),stack:i(16),TimeStep:i(17),components:{items:{Item:i(28),ItemBox:i(29),ItemPoint:i(30),ItemRange:i(31)},Component:i(18),CurrentTime:i(19),CustomTime:i(20),DataAxis:i(21),GraphGroup:i(22),Group:i(23),ItemSet:i(24),Legend:i(25),LineGraph:i(26),TimeAxis:i(27)}},e.Network=i(32),e.network={Edge:i(33),Groups:i(34),Images:i(35),Node:i(36),Popup:i(37),dotparser:i(38),gephiParser:i(39)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(40),e.hammer=i(41)},function(module,exports,__webpack_require__){var moment=__webpack_require__(40);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":t instanceof Array?"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(t instanceof Array)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}},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;sa;)o=void 0===s?n[u][i]:n[u][i][s],n[u].isVisible(e)?h=!0:(o=r&&console.log("BinarySearch too many iterations. Aborting.")}return u},exports.binarySearchGeneric=function(t,e,i,s){var o,n,r,a,h=1e4,d=0,l=t,c=!1,p=0,u=l.length,f=p,m=u,g=Math.floor(.5*(u+p));if(0==u)g=-1;else if(1==u)r=l[g][i],g=r==e?0:-1;else{for(u-=1;0==c&&h>d;)n=l[Math.max(0,g-1)][i],r=l[g][i],a=l[Math.min(l.length-1,g+1)][i],r==e||e>n&&r>e||e>r&&a>e?(c=!0,r!=e&&("before"==s?e>n&&r>e&&(g=Math.max(0,g-1)):e>r&&a>e&&(g=Math.min(l.length-1,g+1)))):(e>r?f=Math.floor(.5*(u+p)):m=Math.floor(.5*(u+p)),o=Math.floor(.5*(u+p)),p==f&&u==m?(g=-1,c=!0):(u=m,p=f,g=Math.floor(.5*(u+p)))),d++;d>=h&&console.log("BinarySearch too many iterations. Aborting.")}return g}},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){var s;return e.hasOwnProperty(t)?e[t].redundant.length>0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElement(t),i.appendChild(s)):(s=document.createElement(t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},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.setAttributeNS(null,"class",s.className+" point")):(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),r.setAttributeNS(null,"class",s.className+" point")),r},e.drawBar=function(t,i,s,o,n,r,a){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)}var o=i(1);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 f=h[p];c[f]=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=this,r=n._fieldId,a=function(t){var e=t[r];n._data[e]?(e=n._updateItem(t),s.push(e)):(e=n._addItem(t),i.push(e))};if(Array.isArray(t))for(var h=0,d=t.length;d>h;h++)a(t[h]);else if(o.isDataTable(t))for(var l=this._getColumnNames(t),c=0,p=t.getNumberOfRows();p>c;c++){for(var u={},f=0,m=l.length;m>f;f++){var g=l[f];u[g]=t.getValue(c,f)}a(u)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");a(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s},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,f=i&&i.filter,m=[];if(void 0!=t)d=n._getItem(t,u),f&&!f(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!f||f(d))&&m.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!f||f(d))&&m.push(d));if(i&&i.order&&void 0==t&&this._sort(m,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=m.length;p>c;c++)m[c]=this._filterFields(m[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(m[c]);return s}return m},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,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",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 l,this.eye=new h(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)}var o=i(48),n=i(3),r=i(4),a=i(1),h=i(9),d=i(8),l=i(6),c=i(7),p=i(10),u=i(11);o(s.prototype),s.prototype._setScale=function(){this.scale=new h(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)/(f-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 u(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new h(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(" "+i.getCurrent()+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new u(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new h(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(" "+i.getCurrent()+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new u(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 h(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(i.getCurrent()+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new h(n,r,this.zMin)),e=this._convert3Dto2D(new h(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 h(this.xMin,this.yMin,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(f.x,f.y),g.stroke(),p=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(f.x,f.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(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 h(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(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 h(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 S=this.yLabel;S.length>0&&(l=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-l:this.xMax+l,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new h(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(S,o.x,o.y));var M=this.zLabel;M.length>0&&(d=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 h(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-d,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,d,l,c,p,u,f,m=this.frame.canvas,g=m.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(f=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/M/2,1),a=this._hsv2rgb(c,p,u),d=a):(u=1,a=this._hsv2rgb(c,p,u),d=this.colorAxis)):(a="gray",d=this.colorAxis),l=.5,g.lineWidth=l,g.fillStyle=a,g.strokeStyle=d,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,f,m;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(u,1,1),m=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(f=this.colorDot,m=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(u,1,1),m=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=m,i.fillStyle=f,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=getMouseX(t),this.startMouseY=getMouseY(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)},a.addEventListener(document,"mousemove",e.onmousemove),a.addEventListener(document,"mouseup",e.onmouseup),a.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(getMouseX(t))-this.startMouseX,i=parseFloat(getMouseY(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,o=this.startArmRotation.vertical+i/200,n=4,r=Math.sin(n/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 d(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 l=n.surfaces;if(l)for(var c=l.length-1;c>=0;c--){var p=l[c],u=p.corners,f=[u[0].screen,u[1].screen,u[2].screen],m=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))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)}}},getMouseX=function(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0},getMouseY=function(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0},t.exports=s},function(t,e,i){var s=i(9);Camera=function(){this.armLocation=new s,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new s,this.cameraRotation=new s(.5*Math.PI,0,0),this.calculateCameraOrientation()},Camera.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},Camera.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()},Camera.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},Camera.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},Camera.prototype.getArmLength=function(){return this.armLength},Camera.prototype.getCameraLocation=function(){return this.cameraLocation},Camera.prototype.getCameraRotation=function(){return this.cameraRotation},Camera.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=Camera},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){for(var n in h.prototype)h.prototype.hasOwnProperty(n)&&!s.prototype.hasOwnProperty(n)&&(s.prototype[n]=h.prototype[n]);if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");var r=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)},util:{snap:null,toScreen:r._toScreen.bind(r),toGlobalScreen:r._toGlobalScreen.bind(r),toTime:r._toTime.bind(r),toGlobalTime:r._toGlobalTime.bind(r)}},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,i&&this.setOptions(i),e?this.setItems(e):this.redraw()}var o=(i(48),i(41),i(1)),n=i(3),r=i(4),a=i(15),h=i(42),d=i(27),l=i(19),c=i(20),p=i(24);s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];o.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},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&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?o.convert(this.options.start,"Date"):null,a="end"in this.options?o.convert(this.options.end,"Date"):null;this.setWindow(s,a)}},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){this.itemSet&&this.itemSet.setSelection(t)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},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,n){for(var r in h.prototype)h.prototype.hasOwnProperty(r)&&!s.prototype.hasOwnProperty(r)&&(s.prototype[r]=h.prototype[r]);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)},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.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,i&&this.setOptions(i),n&&this.setGroups(n),e?this.setItems(e):this.redraw()}var o=(i(48),i(41),i(1)),n=i(3),r=i(4),a=i(15),h=i(42),d=i(27),l=i(19),c=i(20),p=i(26);s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];o.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},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&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?o.convert(this.options.start,"Date"):null,a="end"in this.options?o.convert(this.options.end,"Date"):null;this.setWindow(s,a)}},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:!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){function e(t,e,i,s,o){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.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,t==e&&(this._start=t-.75,this._end=e+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,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(){for(var t=""+Number(this.current).toPrecision(5),e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},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("days",-3).valueOf(),this.end=i.clone().add("days",4).valueOf(),this.body=t,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.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(43),h=i(40),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e){var i=this._applyRange(t,e);if(i){var s={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",s),this.body.emitter.emit("rangechanged",s)}},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 this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t){return s.conversion(this.start,this.end,t)},s.conversion=function(t,e,i){return 0!=i&&e-t!=0?{offset:t,scale:i/(e-t)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY,s=this.props.touch.end-this.props.touch.start,n="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,r=-i/n*s;this._applyRange(this.props.touch.start+r,this.props.touch.end+r),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end)})}}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(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)}))},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)}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},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,i=this._pointerToDate(this.props.touch.center),s=parseInt(i+(this.props.touch.start-i)*e),o=parseInt(i+(this.props.touch.end-i)*e);this.setRange(s,o)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width;return e=this.conversion(s),t.x/e.scale+e.offset}var n=this.body.domProps.center.height;return e=this.conversion(n),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2);var i=e+(this.start-e)*t,s=e+(this.end-e)*t;this.setRange(i,s)},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(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&&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){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=s.SCALE.DAY,this.step=1,this.setRange(t,e,i)}var o=i(40);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},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 s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.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 s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.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 s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.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,o=864e5,n=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*o>t&&(this.scale=s.SCALE.DAY,this.step=5),2*o>t&&(this.scale=s.SCALE.DAY,this.step=2),o>t&&(this.scale=s.SCALE.DAY,this.step=1),o/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*n>t&&(this.scale=s.SCALE.HOUR,this.step=4),n>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){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(this.scale==s.SCALE.MONTH)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(this.scale==s.SCALE.DAY){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(this.scale==s.SCALE.WEEKDAY){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(this.scale==s.SCALE.HOUR){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(this.scale==s.SCALE.MINUTE){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(this.scale==s.SCALE.SECOND)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(this.scale==s.SCALE.MILLISECOND){var o=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/o)*o)}return e},s.prototype.isMajor=function(){switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("SSS");case s.SCALE.SECOND:return o(t).format("s");case s.SCALE.MINUTE:return o(t).format("HH:mm");case s.SCALE.HOUR:return o(t).format("HH:mm");case s.SCALE.WEEKDAY:return o(t).format("ddd D");case s.SCALE.DAY:return o(t).format("D");case s.SCALE.MONTH:return o(t).format("MMM");case s.SCALE.YEAR:return o(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("HH:mm:ss");case s.SCALE.SECOND:return o(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return o(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return o(t).format("MMMM YYYY");case s.SCALE.MONTH:return o(t).format("YYYY");case s.SCALE.YEAR:return"";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._create(),this.setOptions(e)}var o=i(1),n=i(18),r=i(40),a=i(44);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,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)},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(41),n=i(1),r=i(18),a=i(40),h=i(44);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=new Date(t.valueOf()),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){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,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},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.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create() -}var o=i(1),n=i(2),r=i(18),a=i(14);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"];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.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&&(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s);n.cleanupElements(this.svgElements)},s.prototype.show=function(){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.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){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;for(var i in this.groups)this.groups.hasOwnProperty(i)&&1==this.groups[i].visible&&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"):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation]);this.step=i;var s=(this.dom.frame.offsetHeight-i.deadSpace*(this.dom.frame.offsetHeight/i.marginRange))/((i.marginRange-i.deadSpace)/i.step);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.dom.frame.offsetHeight/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}else o+=.25;this.valueAtZero=i.marginEnd;var d=0,l=1;this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),l++}this.conversionFactor=0==this.master?c/(this.valueAtZero-i.current):this.dom.frame.offsetHeight/i.marginRange;var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),!1)},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.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,f=this.visibleItems.length;f>u;u++){var m=this.visibleItems[u];m.repositionY()}return s},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),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;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=r.option.asSize,s=this.options,o=s.orientation,n=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;a.className="itemset"+(h?" editable":""),n=this._orderGroups()||n;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},f={item:t.item,axis:t.item.vertical/2},m=0,g=t.axis+t.item.vertical;return r.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);n=s||n,m+=t.height}),m=Math.max(m,g),this.stackDirty=!1,a.style.height=i(m),this.props.top=a.offsetTop,this.props.left=a.offsetLeft,this.props.width=a.offsetWidth,this.props.height=m,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=this.body.domProps.border.left+"px",n=this._isResized()||n},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=this.groups[f];if(this.groupsData)t&&(t.hide(),delete this.groups[f]);else if(!t){var e=null,i=null;t=new l(e,i,this),this.groups[f]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.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 a||t instanceof h))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(r.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;r.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&&(r.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 a||t instanceof h))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;r.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")},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._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),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")},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"))},s.prototype._order=function(){r.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)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);r.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var n in e.items)if(e.items.hasOwnProperty(n)){var a=e.items[n];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},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")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!r.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.groupsData?t.data.group:f,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.data=e,t.displayed&&t.redraw(),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this.groupsData?t.data.group:f,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);var i=this.groupsData?t.data.group:f,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},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 n=e.itemsData.get(o.id);this.options.onUpdate(n,function(t){t&&e.itemsData.update(t)})}else{var a=r.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]=r.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(l)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},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){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.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(18);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._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.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&&t++;if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{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=""):(this.dom.frame.style.bottom=4-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 i="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&1==this.groups[e].visible&&(i+=this.groups[e].content+"
");this.dom.textArea.innerHTML=i,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&&(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,allowOverlap:!0,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,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"}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={};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.body.emitter.on("rangechange",function(){if(0!=i.lastStart){var t=i.body.range.start-i.lastStart,e=i.body.range.end-i.body.range.start;if(0!=i.width){var s=i.width/e,o=t*s;i.svg.style.left=-i.width-o+"px"}}}),this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(18),d=i(21),l=i(22),c=i(25),p="__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.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left"),this.legendRight=new c(this.body,this.options.legend,"right"),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},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.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&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.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;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){for(s=0;su){e.push(g);break}e.push(g)}}else for(var m=0;mp&&g.x0?(i=this._preprocessData(e,t),h.push({min:i.min,max:i.max}),r.push(i.data)):(h.push({}),r.push([]))}else h.push({}),r.push([]);if(d=this._updateYAxis(l,h),1==d)return n.cleanupElements(this.svgElements),void this.body.emitter.emit("change");for(s=0;s0){for(var p=0;pi?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,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i},s.prototype._drawBarGraph=function(t,e){if(null!=t&&t.length>0){for(var i,s=.1*e.options.barChart.width,o=0,r={},a=0;a0&&(i=Math.min(i,Math.abs(t[a-1].x-t[a].x))),0==i&&(void 0===r[t[a].x]&&(r[t[a].x]={amount:0,resolved:0}),r[t[a].x].amount+=1);for(var h,a=0;a0&&(i=Math.min(i,Math.abs(t[a-1].x-h)));var d=this._getSafeDrawData(i,e,s)}else{var l=a+(r[h].amount-r[h].resolved),c=a-(r[h].resolved+1);l0&&(i=Math.min(i,Math.abs(t[c].x-h)));var d=this._getSafeDrawData(i,e,s);r[h].resolved+=1,0==e.options.barChart.allowOverlap&&(d.width=d.width/r[h].amount,d.offset+=r[h].resolved*d.width-.5*d.width*(r[h].amount+1),"left"==e.options.barChart.align?o-=.5*d.width:"right"==e.options.barChart.align&&(o+=.5*d.width))}n.drawBar(t[a].x+d.offset,t[a].y,d.width,e.zeroPosition-t[a].y,e.className+" bar",this.svgElements,this.svg),1==e.options.drawPoints.enabled&&n.drawPoint(t[a].x+d.offset,t[a].y,e,this.svgElements,this.svg)}}},s.prototype._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,e.options.slots&&(s/=e.options.slots.total,o=e.options.slots.slot*s-.5*s*(e.options.slots.total+1)),"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,e.options.slots&&(s/=e.options.slots.total,o=e.options.slots.slot*s-.5*s*(e.options.slots.total+1)),"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.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rp;p+=r)i=n(t[p].x)+this.width-1,s=t[p].y,o.push({x:i,y:s}),h=h>s?s:h,d=s>d?s:d;return{min:h,max:d,data:o}},s.prototype._convertYvalues=function(t,e){var i,s,o=[],n=this.yAxisLeft,r=Number(this.svg.style.height.replace("px",""));"right"==e.options.yAxisOrientation&&(n=this.yAxisRight);for(var a=0;al;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.prototype._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,f,m,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,M=0;S-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=S>M+2?t[M+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,f=3*x*(x+v),f>0&&(f=1/f),m=3*g*(g+v),m>0&&(m=1/m),a={x:(-b*s.x+p*o.x+_*n.x)*f,y:(-b*s.y+p*o.y+_*n.y)*f},h={x:(y*o.x+u*n.x-b*r.x)*m,y:(y*o.y+u*n.y-b*r.y)*m},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.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),f=n.getLabelMajor(u),m=f.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>m)&&this._repaintMajorText(0,f,t)}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){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},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 minor 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(41);s.prototype.select=function(){this.selected=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,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)},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(28);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.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 time axis: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.data.content!=this.content){if(this.content=this.data.content,this.content instanceof Element)t.content.innerHTML="",t.content.appendChild(this.content);else{if(void 0==this.data.content)throw new Error('Property "content" missing in item '+this.data.id);t.content.innerHTML=this.content}this.dirty=!0}this.data.title!=this.title&&(t.box.title=this.data.title,this.title=this.data.title);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");this.className!=i&&(this.className=i,t.box.className=this.baseClassName+i,this.dirty=!0),this.dirty&&(this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,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=this.props,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end),n=this.options.padding;-i>s&&(s=-i),o>2*i&&(o=2*i);var r=Math.max(o-s,1);this.overflow?(t=Math.max(-s,0),this.left=s,this.width=r+this.props.content.width):(t=0>s?Math.min(-s,o-s-e.content.width-2*n):0,this.left=s,this.width=r),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",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._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,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,fixed:!1,fontColor:"black",fontSize:14,fontFace:"verdana",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1},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",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,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"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,locale:"en",locales:b,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.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1;var o=this;this.groups=new u,this.images=new f,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.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),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(!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(48),n=i(41),r=i(51),a=i(1),h=i(43),d=i(3),l=i(4),c=i(38),p=i(39),u=i(34),f=i(35),m=i(36),g=i(33),v=i(37),y=i(47),b=i(45);i(46),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(o+142.05338)+91444e-8:12.662/(o+7.4147)+.0964822:1==this.constants.clustering.enabled&&o>=this.constants.clustering.initialMaxNodes?77.5271985/(o+187.266146)+476710517e-13:30.5062972/(o+19.93597763)+.08413486;var n=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);i*=n}else{var r=1.1*(Math.abs(s.minX)+Math.abs(s.maxX)),a=1.1*(Math.abs(s.minY)+Math.abs(s.maxY)),h=this.frame.canvas.clientWidth/r,d=this.frame.canvas.clientHeight/a;i=d>=h?h:d}i>1&&(i=1),this._setScale(i),this._centerNetwork(s),0==e&&(this.moving=!0,this.start())},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),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(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);if(this._putDataInSector(),!e)if(this.constants.stabilize){var o=this;setTimeout(function(){o._stabilize(),o.start()},0)}else this.start()},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete"];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))),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(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="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=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),1==this.constants.keyboard.enabled&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},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){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1);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,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){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){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(){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()},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 m&&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;if(void 0==this.popupObj){var o=this.nodes;for(e in o)if(o.hasOwnProperty(e)){var n=o[e];if(void 0!==n.getTitle()&&n.isOverlappingWith(i)){this.popupObj=n;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new v(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.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){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.frame.canvas.height=this.frame.canvas.clientHeight,void 0!==this.manipulationDiv&&(this.manipulationDiv.style.width=this.frame.canvas.clientWidth+"px"),void 0!==this.navigationDivs&&void 0!==this.navigationDivs.wrapper&&(this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px"),this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(t instanceof Array)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 m(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){for(var e=this.nodes,i=this.nodesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n],a=i.get(n);r?r.setProperties(a,this.constants):(r=new m(properties,this.images,this.groups,this.constants),e[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._reconnectEdges(),this._updateValueRange(e)},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(t instanceof Array)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(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},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=[]);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(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},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(e in s)s.hasOwnProperty(e)&&(s[e].discreteStepLimited(i,this.constants.maxVelocity),o=!0);else for(e in s)s.hasOwnProperty(e)&&(s[e].discreteStep(i),o=!0);if(1==o&&(void 0===t||1==t)){var n=this.constants.minVelocity/Math.max(this.scale,.05);n>.5*this.constants.maxVelocity?this.moving=!0:(this.moving=this._isMoving(n),0==this.moving&&this.emit("stabilized",{iterations:null}),this.moving=this.moving||this.configurePhysics)}},s.prototype._physicsTick=function(){this.freezeSimulation||1==this.moving&&(this._doInAllActiveSectors("_initializeForceCalculation"),this._doInAllActiveSectors("_discreteStepNodes"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_discreteStepNodes",!1),this._findCenter(this._getRange()))},s.prototype._animationStep=function(){this.timer=void 0,this._handleNavigation(),this.start();var t=Date.now(),e=1;this._physicsTick();for(var i=Date.now()-t;i<.9*(this.renderTimestep-this.renderTime)&&eh}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.min(this.widthSelected,this.options.widthMax)*this.networkScaleInv:1==this.hover?Math.min(this.options.hoverWidth,this.options.widthMax)*this.networkScaleInv:this.options.width*this.networkScaleInv},s.prototype._getViaCoordinates=function(){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.yl.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._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?s=this.via:1==this.options.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),f=(r-u)/r;if(1==this.options.smoothCurves.enabled&&null!=s.x?(c=(1-f)*s.x+f*this.to.x,p=(1-f)*s.y+f*this.to.y):(c=(1-f)*this.from.x+f*this.to.x,p=(1-f)*this.from.y+f*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.options.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var m;if(1==this.options.smoothCurves.enabled&&null!=s){var g=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));m={x:g,y:v}}else m=this._pointOnLine(.5);this._label(t,this.label,m.x,m.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.physics.springLength);x.width||x.resize(t),x.width>x.height?(y=x.x+.5*x.width,b=x.y-w,_={x:y,y:x.y,angle:.9*Math.PI}):(y=x.x+w,b=x.y-.5*x.height,_={x:x.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(m=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,m.x,m.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){if(this.from!=this.to){if(1==this.options.smoothCurves.enabled){var r,a;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)r=this.via.x,a=this.via.y;else{var h=this._getViaCoordinates();r=h.x,a=h.y}var d,l,c,p,u,f,m,g=1e9;for(l=0;10>l;l++)c=.1*l,p=Math.pow(1-c,2)*t+2*c*(1-c)*r+Math.pow(c,2)*i,u=Math.pow(1-c,2)*e+2*c*(1-c)*a+Math.pow(c,2)*s,l>0&&(d=this._getDistanceToLine(f,m,p,u,o,n),g=g>d?d:g),f=p,m=u;return g}return this._getDistanceToLine(t,e,i,s,o,n)}var p,u,v,y,b=this.physics.springLength/4,_=this.from;return _.width||_.resize(ctx),_.width>_.height?(p=_.x+_.width/2,u=_.y-b):(p=_.x+b,u=_.y-_.height/2),v=p-o,y=u-n,Math.abs(Math.sqrt(v*v+y*y)-b)},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))},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:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,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.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){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.getControlNodePositions=function(t){var e,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,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?e=this.via:1==this.options.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.options.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=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.color&&(e.color=o.parseColor(e.color)),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){var e=this.images[t];if(void 0==e){var i=this;e=new Image,this.images[t]=e,e.onload=function(){i.callback&&i.callback(this)},e.src=t}return e},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.x=null,this.y=null,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.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=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.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),this.dynamicEdges.splice(e,1)),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","radius","fontColor","fontSize","fontFace","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),this.originalLabel=void 0,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);for(var n in s)s.hasOwnProperty(n)&&(this.options[n]=s[n])}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)}switch(this.xFixed=this.xFixed||void 0!==t.x&&!t.allowedToMoveX,this.yFixed=this.yFixed||void 0!==t.y&&!t.allowedToMoveY,this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==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"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.discreteStep=function(t){if(!this.xFixed){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){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.xFixed)this.fx=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;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._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},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.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),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._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._drawCircle=function(t){this._resizeCircle(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.circle(this.x,this.y,this.options.radius+2*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.circle(this.x,this.y,this.options.radius),t.fill(),t.stroke(),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._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.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0) -},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)},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,t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize)+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=0;h>c;c++)t.fillText(a[c],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(k=C.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==D.charAt(e)||" "==D.charAt(e);)e--;if("\n"==D.charAt(e)||""==D.charAt(e)){for(;""!=O&&"\n"!=O;)o();t=!0}}if("/"==O&&"/"==n()){for(;""!=O&&"\n"!=O;)o();t=!0}if("/"==O&&"*"==n()){for(;""!=O;){if("*"==O&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==O||" "==O||"\n"==O||"\r"==O;)o()}while(t);if(""==O)return void(k=C.DELIMITER);var i=O+n();if(E[i])return k=C.DELIMITER,L=i,o(),void o();if(E[O])return k=C.DELIMITER,L=O,void o();if(r(O)||"-"==O){for(L+=O,o();r(O);)L+=O,o();return"false"==L?L=!1:"true"==L?L=!0:isNaN(Number(L))||(L=Number(L)),void(k=C.IDENTIFIER)}if('"'==O){for(o();""!=O&&('"'!=O||'"'==O&&'"'==n());)L+=O,'"'==O&&o(),o();if('"'!=O)throw x('End of string " expected');return o(),void(k=C.IDENTIFIER)}for(k=C.UNKNOWN;""!=O;)L+=O,o();throw new SyntaxError('Syntax error in part "'+w(L,30)+'"')}function u(){var t={};if(s(),p(),"strict"==L&&(t.strict=!0,p()),("graph"==L||"digraph"==L)&&(t.type=L,p()),k==C.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),f(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==L&&"}"!=L;)m(t),";"==L&&p()}function m(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=C.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=C.IDENTIFIER)throw x("Identifier expected");t[s]=L,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==L&&(e={},e.type="subgraph",p(),k==C.IDENTIFIER&&(e.id=L,p())),"{"==L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==L?(p(),t.node=_(),"node"):"edge"==L?(p(),t.edge=_(),"edge"):"graph"==L?(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(;"->"==L||"--"==L;){var i,s=L;p();var o=g(t);if(o)i=o;else{if(k!=C.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==L;){for(p(),t={};""!==L&&"]"!=L;){if(k!=C.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=C.IDENTIFIER)throw x("Attribute value expected");var i=L;h(t,e,i),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(L,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},E={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},D="",T=0,O="",L="",k=C.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},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)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},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){s.root.className="vis timeline root "+e.orientation,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;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),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,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 l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,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+"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 c=this.props.scrollTop;"bottom"==e.orientation&&(c+=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=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(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,f=e+(s-r/2),m=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,f),this.bezierCurveTo(l,f+d,p+h,m,p,m),this.bezierCurveTo(p-h,m,t,f+d,t,f),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(58),o=i(52),n=i(53),r=i(54),a=i(55),h=i(56),d=i(57);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()},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.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.containerElement.insertBefore(this.manipulationDiv,this.frame)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.containerElement.insertBefore(this.editModeDiv,this.frame)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.containerElement.insertBefore(this.closeDiv,this.frame)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.containerElement.removeChild(this.manipulationDiv),this.containerElement.removeChild(this.editModeDiv),this.containerElement.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){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(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function C(t,e){return new C.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",f=a.POINTER_TOUCH="touch",m=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(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,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 S.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=f;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(m,s)&&(o=m),{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 M.stopDetect()}}}},S=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[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[m]=i===(e.MSPOINTER_TYPE_PEN||m),s[t]},reset:function(){this.pointers={}}},M=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?M.startDetect(i,t):t.eventType==_&&M.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=M.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=M.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=M.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=M.current,h=M.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(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function h(t){we.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function d(t,e){var i=!0;return g(function(){return i&&(h(t),i=!1),e.apply(this,arguments)},e)}function l(t,e){yi[t]||(h(e),yi[t]=!0)}function c(t,e){return function(i){return b(t.call(this,i),e)}}function p(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function u(){}function f(t,e){e!==!1&&z(t),v(this,t),this._d=new Date(+t._d)}function m(t){var e=T(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=we.localeData(),this._bubble()}function g(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return e.hasOwnProperty("toString")&&(t.toString=e.toString),e.hasOwnProperty("valueOf")&&(t.valueOf=e.valueOf),t}function v(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),Pe.length>0)for(i in Pe)s=Pe[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function y(t){return 0>t?Math.ceil(t):Math.floor(t)}function b(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function D(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=ci[t]||pi[e]||e}return t}function T(t){var e,i,s={};for(i in t)t.hasOwnProperty(i)&&(e=D(i),e&&(s[e]=t[i]));return s}function O(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}we[t]=function(s,o){var r,a,h=we._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=we().utc().set(i,t);return h.call(we._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function k(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function N(t,e,i){return le(we([t,11,31+e-i]),e,i).week}function I(t){return A(t)?366:365}function A(t){return t%4===0&&t%100!==0||t%400===0}function z(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Oe]<0||t._a[Oe]>11?Oe:t._a[Le]<1||t._a[Le]>k(t._a[Te],t._a[Oe])?Le:t._a[ke]<0||t._a[ke]>23?ke:t._a[Ne]<0||t._a[Ne]>59?Ne:t._a[Ie]<0||t._a[Ie]>59?Ie:t._a[Ae]<0||t._a[Ae]>999?Ae:-1,t._pf._overflowDayOfYear&&(Te>e||e>Le)&&(e=Le),t._pf.overflow=e)}function P(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._isValid}function R(t){return t?t.toLowerCase().replace("_","-"):t}function F(t){for(var e,i,s,o,n=0;n0;){if(s=H(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function H(t){var e=null;if(!ze[t]&&Re)try{e=we.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),we.locale(e)}catch(i){}return ze[t]}function Y(t,e){return e._isUTC?we(t).zone(e._offset||0):we(t).local()}function B(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function W(t){var e,i,s=t.match(Be);for(e=0,i=s.length;i>e;e++)s[e]=vi[s[e]]?vi[s[e]]:B(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 G(t,e){return t.isValid()?(e=j(e,t.localeData()),ui[e]||(ui[e]=W(e)),ui[e](t)):t.localeData().invalidDate()}function j(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(We.lastIndex=0;s>=0&&We.test(t);)t=t.replace(We,i),We.lastIndex=0,s-=1;return t}function U(t,e){var i,s=e._strict;switch(t){case"Q":return Qe;case"DDDD":return ei;case"YYYY":case"GGGG":case"gggg":return s?ii:Ue;case"Y":case"G":case"g":return oi;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?si:Ve;case"S":if(s)return Qe;case"SS":if(s)return ti;case"SSS":if(s)return ei;case"DDD":return je;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ze;case"a":case"A":return e._locale._meridiemParse;case"X":return $e;case"Z":case"ZZ":return qe;case"T":return Ke;case"SSSS":return Xe;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ti:Ge;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ge;case"Do":return Je;default:return i=new RegExp(te(Q(t.replace("\\","")),"i"))}}function V(t){t=t||"";var e=t.match(qe)||[],i=e[e.length-1]||[],s=(i+"").match(di)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?-o:o}function X(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Oe]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[Oe]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[Oe]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Le]=L(e));break;case"Do":null!=e&&(o[Le]=L(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Te]=we.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Te]=L(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[ke]=L(e);break;case"m":case"mm":o[Ne]=L(e);break;case"s":case"ss":o[Ie]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Ae]=L(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=V(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]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=we.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[Te],le(we(),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[Te],le(we(),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=ce(i,s,o,a,n),t._a[Te]=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[Le]&&null==t._a[Oe]&&Z(t),t._dayOfYear&&(o=r(t._a[Te],s[Te]),t._dayOfYear>I(o)&&(t._pf._overflowDayOfYear=!0),i=re(o,0,t._dayOfYear),t._a[Oe]=i.getUTCMonth(),t._a[Le]=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];t._d=(t._useUTC?re:ne).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function K(t){var e;t._d||(e=T(t._i),t._a=[e.year,e.month,e.day,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===we.ISO_8601)return void ie(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=j(t._f,t._locale).match(Be)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),vi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),X(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=a-h,r.length>0&&t._pf.unusedInput.push(r),t._isPm&&t._a[ke]<12&&(t._a[ke]+=12),t._isPm===!1&&12===t._a[ke]&&(t._a[ke]=0),q(t),z(t)}function Q(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function te(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ee(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));g(t,i||e)}function ie(t){var e,i,s=t._i,o=ni.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ai.length;i>e;e++)if(ai[e][1].exec(s)){t._f=ai[e][0]+(o[6]||" ");break}for(e=0,i=hi.length;i>e;e++)if(hi[e][1].exec(s)){t._f+=hi[e][0];break}s.match(qe)&&(t._f+="Z"),J(t)}else t._isValid=!1}function se(t){ie(t),t._isValid===!1&&(delete t._isValid,we.createFromInputFallback(t))}function oe(t){var e,i=t._i;i===n?t._d=new Date:C(i)?t._d=new Date(+i):null!==(e=Fe.exec(i))?t._d=new Date(+e[1]):"string"==typeof i?se(t):M(i)?(t._a=i.slice(0),q(t)):"object"==typeof i?K(t):"number"==typeof i?t._d=new Date(i):we.createFromInputFallback(t)}function ne(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function re(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ae(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 he(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function de(t,e,i){var s=we.duration(t).abs(),o=De(s.as("s")),n=De(s.as("m")),r=De(s.as("h")),a=De(s.as("d")),h=De(s.as("M")),d=De(s.as("y")),l=o0,l[4]=i,he.apply({},l)}function le(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=we(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ce(t,e,i,s,o){var n,r,a=re(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:I(t-1)+r}}function pe(t){var e=t._i,i=t._f;return t._locale=t._locale||we.localeData(t._l),null===e||i===n&&""===e?we.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),we.isMoment(e)?new f(e,!0):(i?M(i)?ee(t):J(t):oe(t),new f(t)))}function ue(t,e){var i,s;if(1===e.length&&M(e[0])&&(e=e[0]),!e.length)return we();for(i=e[0],s=1;s=0?"+":"-";return e+b(Math.abs(t),6)},gg:function(){return b(this.weekYear()%100,2)},gggg:function(){return b(this.weekYear(),4)},ggggg:function(){return b(this.weekYear(),5)},GG:function(){return b(this.isoWeekYear()%100,2)},GGGG:function(){return b(this.isoWeekYear(),4)},GGGGG:function(){return b(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 L(this.milliseconds()/100)},SS:function(){return b(L(this.milliseconds()/10),2)},SSS:function(){return b(this.milliseconds(),3)},SSSS:function(){return b(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+b(L(t/60),2)+":"+b(L(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+b(L(t/60),2)+b(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},yi={},bi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];mi.length;)Me=mi.pop(),vi[Me+"o"]=p(vi[Me],Me);for(;gi.length;)Me=gi.pop(),vi[Me+Me]=c(vi[Me],2);vi.DDDD=c(vi.DDD,3),g(u.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_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){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=we.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_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=we([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:{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){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_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",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return le(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),we=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=a(),pe(o)},we.suppressDeprecationWarnings=!1,we.createFromInputFallback=d("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)}),we.min=function(){var t=[].slice.call(arguments,0);return ue("isBefore",t)},we.max=function(){var t=[].slice.call(arguments,0);return ue("isAfter",t)},we.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=a(),pe(o).utc()},we.unix=function(t){return we(1e3*t)},we.duration=function(t,e){var i,s,o,n,r=t,a=null;return we.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(a=He.exec(t))?(i="-"===a[1]?-1:1,r={y:0,d:L(a[Le])*i,h:L(a[ke])*i,m:L(a[Ne])*i,s:L(a[Ie])*i,ms:L(a[Ae])*i}):(a=Ye.exec(t))?(i="-"===a[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(a[2]),M:o(a[3]),d:o(a[4]),h:o(a[5]),m:o(a[6]),s:o(a[7]),w:o(a[8])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=x(we(r.from),we(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new m(r),we.isDuration(t)&&t.hasOwnProperty("_locale")&&(s._locale=t._locale),s},we.version=Ce,we.defaultFormat=ri,we.ISO_8601=function(){},we.momentProperties=Pe,we.updateOffset=function(){},we.relativeTimeThreshold=function(t,e){return fi[t]===n?!1:e===n?fi[t]:(fi[t]=e,!0)},we.lang=d("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return we.locale(t,e)}),we.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?we.defineLocale(t,e):we.localeData(t),i&&(we.duration._locale=we._locale=i)),we._locale._abbr},we.defineLocale=function(t,e){return null!==e?(e.abbr=t,ze[t]||(ze[t]=new u),ze[t].set(e),we.locale(t),ze[t]):(delete ze[t],null)},we.langData=d("moment.langData is deprecated. Use moment.localeData instead.",function(t){return we.localeData(t) -}),we.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return we._locale;if(!M(t)){if(e=H(t))return e;t=[t]}return F(t)},we.isMoment=function(t){return t instanceof f||null!=t&&t.hasOwnProperty("_isAMomentObject")},we.isDuration=function(t){return t instanceof m};for(Me=bi.length-1;Me>=0;--Me)O(bi[Me]);we.normalizeUnits=function(t){return D(t)},we.invalid=function(t){var e=we.utc(0/0);return null!=t?g(e._pf,t):e._pf.userInvalidated=!0,e},we.parseZone=function(){return we.apply(null,arguments).parseZone()},we.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},g(we.fn=f.prototype,{clone:function(){return we(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=we(this).utc();return 00:!1},parsingFlags:function(){return g({},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._d.getTimezoneOffset(),"m")),this},format:function(t){var e=G(this,t||we.defaultFormat);return this.localeData().postformat(e)},add:w(1,"add"),subtract:w(-1,"subtract"),diff:function(t,e,i){var s,o,n=Y(t,this),r=6e4*(this.zone()-n.zone());return e=D(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+n.daysInMonth()),o=12*(this.year()-n.year())+(this.month()-n.month()),o+=(this-we(this).startOf("month")-(n-we(n).startOf("month")))/s,o-=6e4*(this.zone()-we(this).startOf("month").zone()-(n.zone()-we(n).startOf("month").zone()))/s,"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:y(o)},from:function(t,e){return we.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(we(),t)},calendar:function(t){var e=t||we(),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))},isLeapYear:function(){return A(this.year())},isDST:function(){return this.zone()+we(t).startOf(e)},isBefore:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)<+we(t).startOf(e)},isSame:function(t,e){return e=e||"ms",+this.clone().startOf(e)===+Y(t,this).startOf(e)},min:d("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=we.apply(null,arguments),this>t?this:t}),max:d("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=we.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._d.getTimezoneOffset():("string"==typeof t&&(t=V(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._d.getTimezoneOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?S(this,we.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,we.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?we(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return k(this.year(),this.month())},dayOfYear:function(t){var e=De((we(this).startOf("day")-we(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=le(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=le(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=le(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 N(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return N(this.year(),t.dow,t.doy)},get:function(t){return t=D(t),this[t]()},set:function(t,e){return t=D(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){return t===n?this._locale._abbr:(this._locale=we.localeData(t),this)},lang:d("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():(this._locale=we.localeData(t),this)}),localeData:function(){return this._locale}}),we.fn.millisecond=we.fn.milliseconds=ve("Milliseconds",!1),we.fn.second=we.fn.seconds=ve("Seconds",!1),we.fn.minute=we.fn.minutes=ve("Minutes",!1),we.fn.hour=we.fn.hours=ve("Hours",!0),we.fn.date=ve("Date",!0),we.fn.dates=d("dates accessor is deprecated. Use date instead.",ve("Date",!0)),we.fn.year=ve("FullYear",!0),we.fn.years=d("years accessor is deprecated. Use year instead.",ve("FullYear",!0)),we.fn.days=we.fn.day,we.fn.months=we.fn.month,we.fn.weeks=we.fn.week,we.fn.isoWeeks=we.fn.isoWeek,we.fn.quarters=we.fn.quarter,we.fn.toJSON=we.fn.toISOString,g(we.duration.fn=m.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=y(s/1e3),r.seconds=t%60,e=y(t/60),r.minutes=e%60,i=y(e/60),r.hours=i%24,o+=y(i/24),a=y(ye(o)),o-=y(be(a)),n+=y(o/30),o%=30,a+=y(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 y(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=de(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=we.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=we.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=D(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=D(t),e=this._days+this._milliseconds/864e5,"month"===t||"year"===t)return i=this._months+12*ye(e),"month"===t?i:i/12;switch(e+=be(this._months/12),t){case"week":return e/7;case"day":return e;case"hour":return 24*e;case"minute":return 24*e*60;case"second":return 24*e*60*60;case"millisecond":return 24*e*60*60*1e3;default:throw new Error("Unknown unit "+t)}},lang:we.fn.lang,locale:we.fn.locale,toIsoString:d("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}});for(Me in li)li.hasOwnProperty(Me)&&_e(Me.toLowerCase());we.duration.fn.asMilliseconds=function(){return this.as("ms")},we.duration.fn.asSeconds=function(){return this.as("s")},we.duration.fn.asMinutes=function(){return this.as("m")},we.duration.fn.asHours=function(){return this.as("h")},we.duration.fn.asDays=function(){return this.as("d")},we.duration.fn.asWeeks=function(){return this.as("weeks")},we.duration.fn.asMonths=function(){return this.as("M")},we.duration.fn.asYears=function(){return this.as("y")},we.locale("en",{ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Re?o.exports=we:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Ee.moment=Se),we}.call(e,i,e,o),!(s!==n&&(o.exports=s)),xe(!0))}).call(this)}).call(e,function(){return this}(),i(63)(t))},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in E)t[e]?i=!0:E[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function m(t,e,s,o){E[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++E[t],p()},d=function(t){h(s,t),"keyup"!==o&&(D=i(t)),setTimeout(n,10)};for(r=0;r1)return m(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},C={},E={},D=!1,T=!1,O=1;20>O;++O)_[111+O]="f"+O;for(O=0;9>=O;++O)_[O+96]=O;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var L={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),C[t+":"+i]=e,this},unbind:function(t,e){return C[t+":"+e]&&(delete C[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return C[t+":"+e](),this},reset:function(){return M={},C={},this}};t.exports=L},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);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 Node({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](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInSupportSector=function(t,e){if(void 0===e)this._switchToSupportSector(),this[t]();else{this._switchToSupportSector();var i=Array.prototype.splice.call(arguments,1);i.length>1?this[t](i[0],i[1]):this[t](e)}this._loadLatestSector()},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;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;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)}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,highlightEdges)}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(36),n=i(33);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild)},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");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._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+t.add+"
"+t.link+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+t.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+t.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+t.del+"");var e=document.getElementById("network-manipulate-addNode");e.onclick=this._createAddNodeToolbar.bind(this);var i=document.getElementById("network-manipulate-connectNode");if(i.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var s=document.getElementById("network-manipulate-editNode");s.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var s=document.getElementById("network-manipulate-editEdge");s.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var o=document.getElementById("network-manipulate-delete");o.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+t.edit+"";var r=document.getElementById("network-manipulate-editModeButton");r.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.manipulationDiv.innerHTML=""+t.back+"
"+t.addDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0;var t=this.constants.locales[this.constants.locale];this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+t.back+"
"+t.linkDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this._handleTouch=this._handleConnect,this._handleOnRelease=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.manipulationDiv.innerHTML=""+t.back+"
"+t.editEdgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,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._handleOnRelease=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._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(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);null!=e&&(e.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._selectObject(e,!1),this.sectors.support.nodes.targetNode=new o({id:"targetNode"},{},{},this.constants),this.sectors.support.nodes.targetNode.x=e.x,this.sectors.support.nodes.targetNode.y=e.y,this.sectors.support.nodes.targetViaNode=new o({id:"targetViaNode"},{},{},this.constants),this.sectors.support.nodes.targetViaNode.x=e.x,this.sectors.support.nodes.targetViaNode.y=e.y,this.sectors.support.nodes.targetViaNode.parentEdgeId="connectionEdge",this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:this.sectors.support.nodes.targetNode.id},this,this.constants),this.edges.connectionEdge.from=e,this.edges.connectionEdge.connected=!0,this.edges.connectionEdge.smooth=!0,this.edges.connectionEdge.selected=!0,this.edges.connectionEdge.to=this.sectors.support.nodes.targetNode,this.edges.connectionEdge.via=this.sectors.support.nodes.targetViaNode,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center);this.sectors.support.nodes.targetNode.x=this._XconvertDOMtoCanvas(e.x),this.sectors.support.nodes.targetNode.y=this._YconvertDOMtoCanvas(e.y),this.sectors.support.nodes.targetViaNode.x=.5*(this._XconvertDOMtoCanvas(e.x)+this.edges.connectionEdge.from.x),this.sectors.support.nodes.targetViaNode.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()))}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var e=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var i=this._getNodeAt(t);null!=i&&(i.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(e,i.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(!(this.triggerFunctions.del.length=2))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),o=i(41);e._cleanNavigation=function(){var t=document.getElementById("network-navigation_wrapper");null!=t&&this.containerElement.removeChild(t),document.onmouseup=null},e._loadNavigationElements=function(){this._cleanNavigation(),this.navigationDivs={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],e=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","zoomExtent"];this.navigationDivs.wrapper=document.createElement("div"),this.navigationDivs.wrapper.id="network-navigation_wrapper",this.navigationDivs.wrapper.style.position="absolute",this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px",this.containerElement.insertBefore(this.navigationDivs.wrapper,this.frame);for(var i=this,s=0;s0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");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,e.length>1&&this._setLevel(t+1,o.edges,o.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.resolve=e,e.keys=function(){return[]},t.exports=e},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,f=4/3,m=this.constants.physics.repulsion.nodeDistance,g=m;for(d=0;di&&(r=.5*g>i?1:v*i+f,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,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.theta){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)),f=.5*u,m=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:g-f,maxY:g+f},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}}])}); +!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.Graph3d=i(5),e.graph3d={Camera:i(6),Filter:i(7),Point2d:i(8),Point3d:i(9),Slider:i(10),StepNumber:i(11)},e.Timeline=i(12),e.Graph2d=i(13),e.timeline={DataStep:i(14),Range:i(15),stack:i(16),TimeStep:i(17),components:{items:{Item:i(28),ItemBox:i(29),ItemPoint:i(30),ItemRange:i(31)},Component:i(18),CurrentTime:i(19),CustomTime:i(20),DataAxis:i(21),GraphGroup:i(22),Group:i(23),ItemSet:i(24),Legend:i(25),LineGraph:i(26),TimeAxis:i(27)}},e.Network=i(32),e.network={Edge:i(33),Groups:i(34),Images:i(35),Node:i(36),Popup:i(37),dotparser:i(38),gephiParser:i(39)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(40),e.hammer=i(41)},function(module,exports,__webpack_require__){var moment=__webpack_require__(40);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":t instanceof Array?"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(t instanceof Array)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}},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;sa;)o=void 0===s?n[u][i]:n[u][i][s],n[u].isVisible(e)?h=!0:(o=r&&console.log("BinarySearch too many iterations. Aborting.")}return u},exports.binarySearchGeneric=function(t,e,i,s){var o,n,r,a,h=1e4,d=0,l=t,c=!1,p=0,u=l.length,f=p,g=u,m=Math.floor(.5*(u+p));if(0==u)m=-1;else if(1==u)r=l[m][i],m=r==e?0:-1;else{for(u-=1;0==c&&h>d;)n=l[Math.max(0,m-1)][i],r=l[m][i],a=l[Math.min(l.length-1,m+1)][i],r==e||e>n&&r>e||e>r&&a>e?(c=!0,r!=e&&("before"==s?e>n&&r>e&&(m=Math.max(0,m-1)):e>r&&a>e&&(m=Math.min(l.length-1,m+1)))):(e>r?f=Math.floor(.5*(u+p)):g=Math.floor(.5*(u+p)),o=Math.floor(.5*(u+p)),p==f&&u==g?(m=-1,c=!0):(u=g,p=f,m=Math.floor(.5*(u+p)))),d++;d>=h&&console.log("BinarySearch too many iterations. Aborting.")}return m}},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){var s;return e.hasOwnProperty(t)?e[t].redundant.length>0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElement(t),i.appendChild(s)):(s=document.createElement(t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},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.setAttributeNS(null,"class",s.className+" point")):(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),r.setAttributeNS(null,"class",s.className+" point")),r},e.drawBar=function(t,i,s,o,n,r,a){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)}var o=i(1);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 f=h[p];c[f]=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=this,r=n._fieldId,a=function(t){var e=t[r];n._data[e]?(e=n._updateItem(t),s.push(e)):(e=n._addItem(t),i.push(e))};if(Array.isArray(t))for(var h=0,d=t.length;d>h;h++)a(t[h]);else if(o.isDataTable(t))for(var l=this._getColumnNames(t),c=0,p=t.getNumberOfRows();p>c;c++){for(var u={},f=0,g=l.length;g>f;f++){var m=l[f];u[m]=t.getValue(c,f)}a(u)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");a(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s},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,f=i&&i.filter,g=[];if(void 0!=t)d=n._getItem(t,u),f&&!f(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!f||f(d))&&g.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!f||f(d))&&g.push(d));if(i&&i.order&&void 0==t&&this._sort(g,i.order),i&&i.fields){var m=i.fields;if(void 0!=t)d=this._filterFields(d,m);else for(c=0,p=g.length;p>c;c++)g[c]=this._filterFields(g[c],m)}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(g[c]);return s}return g},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,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",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 l,this.eye=new h(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)}var o=i(48),n=i(3),r=i(4),a=i(1),h=i(9),d=i(8),l=i(6),c=i(7),p=i(10),u=i(11);o(s.prototype),s.prototype._setScale=function(){this.scale=new h(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 g=(t-p)/(f-p),m=240*g,v=this._hsv2rgb(m,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 u(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new h(x,r,this.zMin)),Math.cos(2*_)>0?(m.textAlign="center",m.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.colorAxis,m.fillText(" "+i.getCurrent()+" ",o.x,o.y),i.next()}for(m.lineWidth=1,s=void 0===this.defaultYStep,i=new u(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new h(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(m.textAlign="center",m.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.colorAxis,m.fillText(" "+i.getCurrent()+" ",o.x,o.y),i.next();for(m.lineWidth=1,s=void 0===this.defaultZStep,i=new u(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 h(n,r,i.getCurrent())),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(t.x-b,t.y),m.stroke(),m.textAlign="right",m.textBaseline="middle",m.fillStyle=this.colorAxis,m.fillText(i.getCurrent()+" ",t.x-5,t.y),i.next();m.lineWidth=1,t=this._convert3Dto2D(new h(n,r,this.zMin)),e=this._convert3Dto2D(new h(n,r,this.zMax)),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),m.lineWidth=1,p=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(p.x,p.y),m.lineTo(f.x,f.y),m.stroke(),p=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(p.x,p.y),m.lineTo(f.x,f.y),m.stroke(),m.lineWidth=1,t=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.stroke(),t=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),m.strokeStyle=this.colorAxis,m.beginPath(),m.moveTo(t.x,t.y),m.lineTo(e.x,e.y),m.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 h(n,r,this.zMin)),Math.cos(2*_)>0?(m.textAlign="center",m.textBaseline="top"):Math.sin(2*_)<0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.colorAxis,m.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(l=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-l:this.xMax+l,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*_)<0?(m.textAlign="center",m.textBaseline="top"):Math.sin(2*_)>0?(m.textAlign="right",m.textBaseline="middle"):(m.textAlign="left",m.textBaseline="middle"),m.fillStyle=this.colorAxis,m.fillText(S,o.x,o.y));var M=this.zLabel;M.length>0&&(d=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 h(n,r,a)),m.textAlign="right",m.textBaseline="middle",m.fillStyle=this.colorAxis,m.fillText(M,o.x-d,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,d,l,c,p,u,f,g=this.frame.canvas,m=g.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(f=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/M/2,1),a=this._hsv2rgb(c,p,u),d=a):(u=1,a=this._hsv2rgb(c,p,u),d=this.colorAxis)):(a="gray",d=this.colorAxis),l=.5,m.lineWidth=l,m.fillStyle=a,m.strokeStyle=d,m.beginPath(),m.moveTo(t.screen.x,t.screen.y),m.lineTo(e.screen.x,e.screen.y),m.lineTo(o.screen.x,o.screen.y),m.lineTo(i.screen.x,i.screen.y),m.closePath(),m.fill(),m.stroke()}}else for(n=0;np&&(p=0);var u,f,g;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(u,1,1),g=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(f=this.colorDot,g=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(u,1,1),g=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=g,i.fillStyle=f,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=getMouseX(t),this.startMouseY=getMouseY(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)},a.addEventListener(document,"mousemove",e.onmousemove),a.addEventListener(document,"mouseup",e.onmouseup),a.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(getMouseX(t))-this.startMouseX,i=parseFloat(getMouseY(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,o=this.startArmRotation.vertical+i/200,n=4,r=Math.sin(n/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 d(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 l=n.surfaces;if(l)for(var c=l.length-1;c>=0;c--){var p=l[c],u=p.corners,f=[u[0].screen,u[1].screen,u[2].screen],g=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,g))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)}}},getMouseX=function(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0},getMouseY=function(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0},t.exports=s},function(t,e,i){var s=i(9);Camera=function(){this.armLocation=new s,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new s,this.cameraRotation=new s(.5*Math.PI,0,0),this.calculateCameraOrientation()},Camera.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},Camera.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()},Camera.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},Camera.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},Camera.prototype.getArmLength=function(){return this.armLength},Camera.prototype.getCameraLocation=function(){return this.cameraLocation},Camera.prototype.getCameraRotation=function(){return this.cameraRotation},Camera.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=Camera},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){for(var n in h.prototype)h.prototype.hasOwnProperty(n)&&!s.prototype.hasOwnProperty(n)&&(s.prototype[n]=h.prototype[n]);if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");var r=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)},util:{snap:null,toScreen:r._toScreen.bind(r),toGlobalScreen:r._toGlobalScreen.bind(r),toTime:r._toTime.bind(r),toGlobalTime:r._toGlobalTime.bind(r)}},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,i&&this.setOptions(i),e?this.setItems(e):this.redraw()}var o=(i(48),i(41),i(1)),n=i(3),r=i(4),a=i(15),h=i(43),d=i(27),l=i(19),c=i(20),p=i(24);s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];o.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},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&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?o.convert(this.options.start,"Date"):null,a="end"in this.options?o.convert(this.options.end,"Date"):null;this.setWindow(s,a)}},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){this.itemSet&&this.itemSet.setSelection(t)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},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,n){for(var r in h.prototype)h.prototype.hasOwnProperty(r)&&!s.prototype.hasOwnProperty(r)&&(s.prototype[r]=h.prototype[r]);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)},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.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,i&&this.setOptions(i),n&&this.setGroups(n),e?this.setItems(e):this.redraw()}var o=(i(48),i(41),i(1)),n=i(3),r=i(4),a=i(15),h=i(43),d=i(27),l=i(19),c=i(20),p=i(26);s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];o.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},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&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?o.convert(this.options.start,"Date"):null,a="end"in this.options?o.convert(this.options.end,"Date"):null;this.setWindow(s,a)}},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:!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){function e(t,e,i,s,o){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.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,t==e&&(this._start=t-.75,this._end=e+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,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(){for(var t=""+Number(this.current).toPrecision(5),e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},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("days",-3).valueOf(),this.end=i.clone().add("days",4).valueOf(),this.body=t,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.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(44),h=i(40),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e){var i=this._applyRange(t,e);if(i){var s={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",s),this.body.emitter.emit("rangechanged",s)}},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 this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t){return s.conversion(this.start,this.end,t)},s.conversion=function(t,e,i){return 0!=i&&e-t!=0?{offset:t,scale:i/(e-t)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY,s=this.props.touch.end-this.props.touch.start,n="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,r=-i/n*s;this._applyRange(this.props.touch.start+r,this.props.touch.end+r),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end)})}}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(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)}))},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)}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},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,i=this._pointerToDate(this.props.touch.center),s=parseInt(i+(this.props.touch.start-i)*e),o=parseInt(i+(this.props.touch.end-i)*e);this.setRange(s,o)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width;return e=this.conversion(s),t.x/e.scale+e.offset}var n=this.body.domProps.center.height;return e=this.conversion(n),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2);var i=e+(this.start-e)*t,s=e+(this.end-e)*t;this.setRange(i,s)},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(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&&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){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=s.SCALE.DAY,this.step=1,this.setRange(t,e,i)}var o=i(40);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},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 s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.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 s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.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 s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.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,o=864e5,n=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*o>t&&(this.scale=s.SCALE.DAY,this.step=5),2*o>t&&(this.scale=s.SCALE.DAY,this.step=2),o>t&&(this.scale=s.SCALE.DAY,this.step=1),o/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*n>t&&(this.scale=s.SCALE.HOUR,this.step=4),n>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){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(this.scale==s.SCALE.MONTH)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(this.scale==s.SCALE.DAY){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(this.scale==s.SCALE.WEEKDAY){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(this.scale==s.SCALE.HOUR){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(this.scale==s.SCALE.MINUTE){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(this.scale==s.SCALE.SECOND)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(this.scale==s.SCALE.MILLISECOND){var o=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/o)*o)}return e},s.prototype.isMajor=function(){switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("SSS");case s.SCALE.SECOND:return o(t).format("s");case s.SCALE.MINUTE:return o(t).format("HH:mm");case s.SCALE.HOUR:return o(t).format("HH:mm");case s.SCALE.WEEKDAY:return o(t).format("ddd D");case s.SCALE.DAY:return o(t).format("D");case s.SCALE.MONTH:return o(t).format("MMM");case s.SCALE.YEAR:return o(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("HH:mm:ss");case s.SCALE.SECOND:return o(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return o(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return o(t).format("MMMM YYYY");case s.SCALE.MONTH:return o(t).format("YYYY");case s.SCALE.YEAR:return"";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._create(),this.setOptions(e)}var o=i(1),n=i(18),r=i(40),a=i(42);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,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)},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(41),n=i(1),r=i(18),a=i(40),h=i(42);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=new Date(t.valueOf()),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){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,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},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.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create() +}var o=i(1),n=i(2),r=i(18),a=i(14);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"];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.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&&(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s);n.cleanupElements(this.svgElements)},s.prototype.show=function(){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.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){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;for(var i in this.groups)this.groups.hasOwnProperty(i)&&1==this.groups[i].visible&&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"):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation]);this.step=i;var s=(this.dom.frame.offsetHeight-i.deadSpace*(this.dom.frame.offsetHeight/i.marginRange))/((i.marginRange-i.deadSpace)/i.step);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.dom.frame.offsetHeight/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}else o+=.25;this.valueAtZero=i.marginEnd;var d=0,l=1;this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),l++}this.conversionFactor=0==this.master?c/(this.valueAtZero-i.current):this.dom.frame.offsetHeight/i.marginRange;var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),!1)},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.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,f=this.visibleItems.length;f>u;u++){var g=this.visibleItems[u];g.repositionY()}return s},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),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;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=r.option.asSize,s=this.options,o=s.orientation,n=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;a.className="itemset"+(h?" editable":""),n=this._orderGroups()||n;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},f={item:t.item,axis:t.item.vertical/2},g=0,m=t.axis+t.item.vertical;return r.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);n=s||n,g+=t.height}),g=Math.max(g,m),this.stackDirty=!1,a.style.height=i(g),this.props.top=a.offsetTop,this.props.left=a.offsetLeft,this.props.width=a.offsetWidth,this.props.height=g,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=this.body.domProps.border.left+"px",n=this._isResized()||n},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=this.groups[f];if(this.groupsData)t&&(t.hide(),delete this.groups[f]);else if(!t){var e=null,i=null;t=new l(e,i,this),this.groups[f]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.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 a||t instanceof h))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(r.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;r.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&&(r.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 a||t instanceof h))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;r.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")},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._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),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")},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"))},s.prototype._order=function(){r.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)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);r.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var n in e.items)if(e.items.hasOwnProperty(n)){var a=e.items[n];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},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")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!r.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.groupsData?t.data.group:f,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.data=e,t.displayed&&t.redraw(),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this.groupsData?t.data.group:f,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);var i=this.groupsData?t.data.group:f,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},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 n=e.itemsData.get(o.id);this.options.onUpdate(n,function(t){t&&e.itemsData.update(t)})}else{var a=r.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]=r.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(l)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},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){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.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(18);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._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.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&&t++;if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{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=""):(this.dom.frame.style.bottom=4-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 i="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&1==this.groups[e].visible&&(i+=this.groups[e].content+"
");this.dom.textArea.innerHTML=i,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&&(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,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"}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={};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.body.emitter.on("rangechange",function(){if(0!=i.lastStart){var t=i.body.range.start-i.lastStart,e=i.body.range.end-i.body.range.start;if(0!=i.width){var s=i.width/e,o=t*s;i.svg.style.left=-i.width-o+"px"}}}),this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(18),d=i(21),l=i(22),c=i(25),p="__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.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left"),this.legendRight=new c(this.body,this.options.legend,"right"),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},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.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&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.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;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){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),e=0;e0)for(var r=0;rs){a.push(l);break}a.push(l)}}else for(var d=0;di&&l.x0)for(var s=0;sl;l+=n)d.push(o[l]);e[t[s]]=d}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r=[],a=[];if(t.length>0){for(var h=0;hs[c].y?s[c].y:d,l=l0){r.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var p={};this._getDataIntersections(p,r),i.__barchartLeft=this._getStackedBarYRange(p,r),i.__barchartLeft.yAxisOrientation="left",t.push("__barchartLeft")}if(a.length>0){a.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var p={};this._getDataIntersections(p,a),i.__barchartRight=this._getStackedBarYRange(p,a),i.__barchartRight.yAxisOrientation="right",t.push("__barchartRight")}}},s.prototype._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=o0){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,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&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i},s.prototype._drawBarGraphs=function(t,e){var i,s,o,r,a,h=[],d={},l=0;for(r=0;r0&&(i=Math.min(i,Math.abs(h[r-1].x-s)));var u=this._getSafeDrawData(i,o,c)}else{var f=r+(d[s].amount-d[s].resolved),g=r-(d[s].resolved+1);f0&&(i=Math.min(i,Math.abs(h[g].x-s)));var u=this._getSafeDrawData(i,o,c);d[s].resolved+=1,"stack"==o.options.barChart.handleOverlap?(p=d[s].accumulated,d[s].accumulated+=o.zeroPosition-h[r].y):"sideBySide"==o.options.barChart.handleOverlap&&(u.width=u.width/d[s].amount,u.offset+=d[s].resolved*u.width-.5*u.width*(d[s].amount+1),"left"==o.options.barChart.align?offset-=.5*u.width:"right"==o.options.barChart.align&&(offset+=.5*u.width))}n.drawBar(h[r].x+u.offset,h[r].y-p,u.width,o.zeroPosition-h[r].y,o.className+" bar",this.svgElements,this.svg),1==o.options.drawPoints.enabled&&n.drawPoint(h[r].x+u.offset,h[r].y-p,o,this.svgElements,this.svg)}},s.prototype._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.prototype._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.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rl;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.prototype._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,f,g,m,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,M=0;S-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=S>M+2?t[M+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)),m=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*m*v+b,f=3*x*(x+v),f>0&&(f=1/f),g=3*m*(m+v),g>0&&(g=1/g),a={x:(-b*s.x+p*o.x+_*n.x)*f,y:(-b*s.y+p*o.y+_*n.y)*f},h={x:(y*o.x+u*n.x-b*r.x)*g,y:(y*o.y+u*n.y-b*r.y)*g},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.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),f=n.getLabelMajor(u),g=f.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>g)&&this._repaintMajorText(0,f,t)}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){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},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 minor 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(41);s.prototype.select=function(){this.selected=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,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)},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(28);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.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 time axis: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.data.content!=this.content){if(this.content=this.data.content,this.content instanceof Element)t.content.innerHTML="",t.content.appendChild(this.content);else{if(void 0==this.data.content)throw new Error('Property "content" missing in item '+this.data.id);t.content.innerHTML=this.content +}this.dirty=!0}this.data.title!=this.title&&(t.box.title=this.data.title,this.title=this.data.title);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");this.className!=i&&(this.className=i,t.box.className=this.baseClassName+i,this.dirty=!0),this.dirty&&(this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,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=this.props,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end),n=this.options.padding;-i>s&&(s=-i),o>2*i&&(o=2*i);var r=Math.max(o-s,1);this.overflow?(t=Math.max(-s,0),this.left=s,this.width=r+this.props.content.width):(t=0>s?Math.min(-s,o-s-e.content.width-2*n):0,this.left=s,this.width=r),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",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._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,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,fixed:!1,fontColor:"black",fontSize:14,fontFace:"verdana",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1},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",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,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"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,locale:"en",locales:b,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.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1;var o=this;this.groups=new u,this.images=new f,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.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),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(!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(48),n=i(41),r=i(49),a=i(1),h=i(44),d=i(3),l=i(4),c=i(38),p=i(39),u=i(34),f=i(35),g=i(36),m=i(33),v=i(37),y=i(47),b=i(45);i(46),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(o+142.05338)+91444e-8:12.662/(o+7.4147)+.0964822:1==this.constants.clustering.enabled&&o>=this.constants.clustering.initialMaxNodes?77.5271985/(o+187.266146)+476710517e-13:30.5062972/(o+19.93597763)+.08413486;var n=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);i*=n}else{var r=1.1*(Math.abs(s.minX)+Math.abs(s.maxX)),a=1.1*(Math.abs(s.minY)+Math.abs(s.maxY)),h=this.frame.canvas.clientWidth/r,d=this.frame.canvas.clientHeight/a;i=d>=h?h:d}i>1&&(i=1),this._setScale(i),this._centerNetwork(s),0==e&&(this.moving=!0,this.start())},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),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(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);if(this._putDataInSector(),!e)if(this.constants.stabilize){var o=this;setTimeout(function(){o._stabilize(),o.start()},0)}else this.start()},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete"];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))),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(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="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=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),1==this.constants.keyboard.enabled&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},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){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1);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,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){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){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(){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()},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 g&&r.id!=a||r instanceof m||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;if(void 0==this.popupObj){var o=this.nodes;for(e in o)if(o.hasOwnProperty(e)){var n=o[e];if(void 0!==n.getTitle()&&n.isOverlappingWith(i)){this.popupObj=n;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new v(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.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){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.frame.canvas.height=this.frame.canvas.clientHeight,void 0!==this.manipulationDiv&&(this.manipulationDiv.style.width=this.frame.canvas.clientWidth+"px"),void 0!==this.navigationDivs&&void 0!==this.navigationDivs.wrapper&&(this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px"),this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(t instanceof Array)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 g(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){for(var e=this.nodes,i=this.nodesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n],a=i.get(n);r?r.setProperties(a,this.constants):(r=new g(properties,this.images,this.groups,this.constants),e[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._reconnectEdges(),this._updateValueRange(e)},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(t instanceof Array)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 m(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},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 m(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=[]);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(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},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(e in s)s.hasOwnProperty(e)&&(s[e].discreteStepLimited(i,this.constants.maxVelocity),o=!0);else for(e in s)s.hasOwnProperty(e)&&(s[e].discreteStep(i),o=!0);if(1==o&&(void 0===t||1==t)){var n=this.constants.minVelocity/Math.max(this.scale,.05);n>.5*this.constants.maxVelocity?this.moving=!0:(this.moving=this._isMoving(n),0==this.moving&&this.emit("stabilized",{iterations:null}),this.moving=this.moving||this.configurePhysics)}},s.prototype._physicsTick=function(){this.freezeSimulation||1==this.moving&&(this._doInAllActiveSectors("_initializeForceCalculation"),this._doInAllActiveSectors("_discreteStepNodes"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_discreteStepNodes",!1),this._findCenter(this._getRange()))},s.prototype._animationStep=function(){this.timer=void 0,this._handleNavigation(),this.start();var t=Date.now(),e=1;this._physicsTick();for(var i=Date.now()-t;i<.9*(this.renderTimestep-this.renderTime)&&eh}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.min(this.widthSelected,this.options.widthMax)*this.networkScaleInv:1==this.hover?Math.min(this.options.hoverWidth,this.options.widthMax)*this.networkScaleInv:this.options.width*this.networkScaleInv},s.prototype._getViaCoordinates=function(){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.yl.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._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?s=this.via:1==this.options.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),f=(r-u)/r;if(1==this.options.smoothCurves.enabled&&null!=s.x?(c=(1-f)*s.x+f*this.to.x,p=(1-f)*s.y+f*this.to.y):(c=(1-f)*this.from.x+f*this.to.x,p=(1-f)*this.from.y+f*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.options.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var g;if(1==this.options.smoothCurves.enabled&&null!=s){var m=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));g={x:m,y:v}}else g=this._pointOnLine(.5);this._label(t,this.label,g.x,g.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.physics.springLength);x.width||x.resize(t),x.width>x.height?(y=x.x+.5*x.width,b=x.y-w,_={x:y,y:x.y,angle:.9*Math.PI}):(y=x.x+w,b=x.y-.5*x.height,_={x:x.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(g=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,g.x,g.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){if(this.from!=this.to){if(1==this.options.smoothCurves.enabled){var r,a;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)r=this.via.x,a=this.via.y;else{var h=this._getViaCoordinates();r=h.x,a=h.y}var d,l,c,p,u,f,g,m=1e9;for(l=0;10>l;l++)c=.1*l,p=Math.pow(1-c,2)*t+2*c*(1-c)*r+Math.pow(c,2)*i,u=Math.pow(1-c,2)*e+2*c*(1-c)*a+Math.pow(c,2)*s,l>0&&(d=this._getDistanceToLine(f,g,p,u,o,n),m=m>d?d:m),f=p,g=u;return m}return this._getDistanceToLine(t,e,i,s,o,n)}var p,u,v,y,b=.25*this.physics.springLength,_=this.from;return _.width>_.height?(p=_.x+.5*_.width,u=_.y-b):(p=_.x+b,u=_.y-.5*_.height),v=p-o,y=u-n,Math.abs(Math.sqrt(v*v+y*y)-b)},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))},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:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,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.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){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.getControlNodePositions=function(t){var e,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,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?e=this.via:1==this.options.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.options.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=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.color&&(e.color=o.parseColor(e.color)),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){var e=this.images[t];if(void 0==e){var i=this;e=new Image,this.images[t]=e,e.onload=function(){i.callback&&i.callback(this)},e.src=t}return e},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.x=null,this.y=null,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.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=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.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),this.dynamicEdges.splice(e,1)),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","radius","fontColor","fontSize","fontFace","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),this.originalLabel=void 0,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);for(var n in s)s.hasOwnProperty(n)&&(this.options[n]=s[n])}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)}switch(this.xFixed=this.xFixed||void 0!==t.x&&!t.allowedToMoveX,this.yFixed=this.yFixed||void 0!==t.y&&!t.allowedToMoveY,this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==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"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.discreteStep=function(t){if(!this.xFixed){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){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.xFixed)this.fx=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;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._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},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.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),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._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._drawCircle=function(t){this._resizeCircle(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.circle(this.x,this.y,this.options.radius+2*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.circle(this.x,this.y,this.options.radius),t.fill(),t.stroke(),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._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.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},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)},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,t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize)+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=0;h>c;c++)t.fillText(a[c],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(k=C.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==D.charAt(e)||" "==D.charAt(e);)e--;if("\n"==D.charAt(e)||""==D.charAt(e)){for(;""!=O&&"\n"!=O;)o();t=!0}}if("/"==O&&"/"==n()){for(;""!=O&&"\n"!=O;)o();t=!0}if("/"==O&&"*"==n()){for(;""!=O;){if("*"==O&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==O||" "==O||"\n"==O||"\r"==O;)o()}while(t);if(""==O)return void(k=C.DELIMITER);var i=O+n();if(E[i])return k=C.DELIMITER,L=i,o(),void o();if(E[O])return k=C.DELIMITER,L=O,void o();if(r(O)||"-"==O){for(L+=O,o();r(O);)L+=O,o();return"false"==L?L=!1:"true"==L?L=!0:isNaN(Number(L))||(L=Number(L)),void(k=C.IDENTIFIER)}if('"'==O){for(o();""!=O&&('"'!=O||'"'==O&&'"'==n());)L+=O,'"'==O&&o(),o();if('"'!=O)throw x('End of string " expected');return o(),void(k=C.IDENTIFIER)}for(k=C.UNKNOWN;""!=O;)L+=O,o();throw new SyntaxError('Syntax error in part "'+w(L,30)+'"')}function u(){var t={};if(s(),p(),"strict"==L&&(t.strict=!0,p()),("graph"==L||"digraph"==L)&&(t.type=L,p()),k==C.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),f(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==L&&"}"!=L;)g(t),";"==L&&p()}function g(t){var e=m(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=C.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=C.IDENTIFIER)throw x("Identifier expected");t[s]=L,p()}else y(t,s)}}function m(t){var e=null;if("subgraph"==L&&(e={},e.type="subgraph",p(),k==C.IDENTIFIER&&(e.id=L,p())),"{"==L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==L?(p(),t.node=_(),"node"):"edge"==L?(p(),t.edge=_(),"edge"):"graph"==L?(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(;"->"==L||"--"==L;){var i,s=L;p();var o=m(t);if(o)i=o;else{if(k!=C.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==L;){for(p(),t={};""!==L&&"]"!=L;){if(k!=C.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=C.IDENTIFIER)throw x("Attribute value expected");var i=L;h(t,e,i),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(L,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},E={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},D="",T=0,O="",L="",k=C.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},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)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},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){s.root.className="vis timeline root "+e.orientation,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;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),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,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 l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,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+"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 c=this.props.scrollTop;"bottom"==e.orientation&&(c+=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=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(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,f=e+(s-r/2),g=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,f),this.bezierCurveTo(l,f+d,p+h,g,p,g),this.bezierCurveTo(p-h,g,t,f+d,t,f),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(58),o=i(52),n=i(53),r=i(54),a=i(55),h=i(56),d=i(57);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()},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.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.containerElement.insertBefore(this.manipulationDiv,this.frame)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.containerElement.insertBefore(this.editModeDiv,this.frame)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.containerElement.insertBefore(this.closeDiv,this.frame)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.containerElement.removeChild(this.manipulationDiv),this.containerElement.removeChild(this.editModeDiv),this.containerElement.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){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){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i) +}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in E)t[e]?i=!0:E[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function g(t,e,s,o){E[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++E[t],p()},d=function(t){h(s,t),"keyup"!==o&&(D=i(t)),setTimeout(n,10)};for(r=0;r1)return g(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},C={},E={},D=!1,T=!1,O=1;20>O;++O)_[111+O]="f"+O;for(O=0;9>=O;++O)_[O+96]=O;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var L={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),C[t+":"+i]=e,this},unbind:function(t,e){return C[t+":"+e]&&(delete C[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return C[t+":"+e](),this},reset:function(){return M={},C={},this}};t.exports=L},function(t,e,i){var s;!function(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function C(t,e){return new C.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",f=a.POINTER_TOUCH="touch",g=a.POINTER_PEN="pen",m=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(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,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[m]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.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=f;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(g,s)&&(o=g),{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 M.stopDetect()}}}},S=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[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[g]=i===(e.MSPOINTER_TYPE_PEN||g),s[t]},reset:function(){this.pointers={}}},M=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,m,function(t){i.enabled&&t.eventType==m?M.startDetect(i,t):t.eventType==_&&M.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[m],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case m: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=M.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=M.current;switch(e.eventType){case m: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=M.current,h=M.previous;switch(e.eventType){case m: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(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function h(t,e){function i(){ve.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}var s=!0;return f(function(){return s&&(i(),s=!1),e.apply(this,arguments)},e)}function d(t,e){return function(i){return v(t.call(this,i),e)}}function l(t,e){return function(i){return this.lang().ordinal(t.call(this,i),e)}}function c(){}function p(t){L(t),f(this,t)}function u(t){var e=S(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._bubble()}function f(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return e.hasOwnProperty("toString")&&(t.toString=e.toString),e.hasOwnProperty("valueOf")&&(t.valueOf=e.valueOf),t}function g(t){var e,i={};for(e in t)t.hasOwnProperty(e)&&ke.hasOwnProperty(e)&&(i[e]=t[e]);return i}function m(t){return 0>t?Math.ceil(t):Math.floor(t)}function v(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&C(t[s])!==C(e[s]))&&r++;return r+n}function w(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=ri[t]||ai[e]||e}return t}function S(t){var e,i,s={};for(i in t)t.hasOwnProperty(i)&&(e=w(i),e&&(s[e]=t[i]));return s}function M(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}ve[t]=function(s,o){var r,a,h=ve.fn._lang[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=ve().utc().set(i,t);return h.call(ve.fn._lang,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function C(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function E(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function D(t,e,i){return re(ve([t,11,31+e-i]),e,i).week}function T(t){return O(t)?366:365}function O(t){return t%4===0&&t%100!==0||t%400===0}function L(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Me]<0||t._a[Me]>11?Me:t._a[Ce]<1||t._a[Ce]>E(t._a[Se],t._a[Me])?Ce:t._a[Ee]<0||t._a[Ee]>23?Ee:t._a[De]<0||t._a[De]>59?De:t._a[Te]<0||t._a[Te]>59?Te:t._a[Oe]<0||t._a[Oe]>999?Oe:-1,t._pf._overflowDayOfYear&&(Se>e||e>Ce)&&(e=Ce),t._pf.overflow=e)}function k(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._isValid}function N(t){return t?t.toLowerCase().replace("_","-"):t}function I(t,e){return e._isUTC?ve(t).zone(e._offset||0):ve(t).local()}function A(t,e){return e.abbr=t,Le[t]||(Le[t]=new c),Le[t].set(e),Le[t]}function z(t){delete Le[t]}function P(t){var e,s,o,n,r=0,a=function(t){if(!Le[t]&&Ne)try{i(59)("./"+t)}catch(e){}return Le[t]};if(!t)return ve.fn._lang;if(!b(t)){if(s=a(t))return s;t=[t]}for(;r0;){if(s=a(n.slice(0,e).join("-")))return s;if(o&&o.length>=e&&x(n,o,!0)>=e-1)break;e--}r++}return ve.fn._lang}function R(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function F(t){var e,i,s=t.match(Pe);for(e=0,i=s.length;i>e;e++)s[e]=pi[s[e]]?pi[s[e]]:R(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 H(t,e){return t.isValid()?(e=Y(e,t.lang()),hi[e]||(hi[e]=F(e)),hi[e](t)):t.lang().invalidDate()}function Y(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Re.lastIndex=0;s>=0&&Re.test(t);)t=t.replace(Re,i),Re.lastIndex=0,s-=1;return t}function B(t,e){var i,s=e._strict;switch(t){case"Q":return Ze;case"DDDD":return Ke;case"YYYY":case"GGGG":case"gggg":return s?$e:Ye;case"Y":case"G":case"g":return Qe;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?Je:Be;case"S":if(s)return Ze;case"SS":if(s)return qe;case"SSS":if(s)return Ke;case"DDD":return He;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ge;case"a":case"A":return P(e._l)._meridiemParse;case"X":return Ue;case"Z":case"ZZ":return je;case"T":return Ve;case"SSSS":return We;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?qe:Fe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Fe;case"Do":return Xe;default:return i=new RegExp(K(q(t.replace("\\","")),"i"))}}function W(t){t=t||"";var e=t.match(je)||[],i=e[e.length-1]||[],s=(i+"").match(oi)||["-",0,0],o=+(60*s[1])+C(s[2]);return"+"===s[0]?-o:o}function G(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Me]=3*(C(e)-1));break;case"M":case"MM":null!=e&&(o[Me]=C(e)-1);break;case"MMM":case"MMMM":s=P(i._l).monthsParse(e),null!=s?o[Me]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ce]=C(e));break;case"Do":null!=e&&(o[Ce]=C(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=C(e));break;case"YY":o[Se]=ve.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Se]=C(e);break;case"a":case"A":i._isPm=P(i._l).isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ee]=C(e);break;case"m":case"mm":o[De]=C(e);break;case"s":case"ss":o[Te]=C(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Oe]=C(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=W(e);break;case"dd":case"ddd":case"dddd":s=P(i._l).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]=C(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=ve.parseTwoDigitYear(e)}}function j(t){var e,i,s,o,n,a,h,d;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Se],re(ve(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(d=P(t._l),n=d._week.dow,a=d._week.doy,i=r(e.gg,t._a[Se],re(ve(),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=ae(i,s,o,a,n),t._a[Se]=h.year,t._dayOfYear=h.dayOfYear}function V(t){var e,i,s,o,n=[];if(!t._d){for(s=X(t),t._w&&null==t._a[Ce]&&null==t._a[Me]&&j(t),t._dayOfYear&&(o=r(t._a[Se],s[Se]),t._dayOfYear>T(o)&&(t._pf._overflowDayOfYear=!0),i=ie(o,0,t._dayOfYear),t._a[Me]=i.getUTCMonth(),t._a[Ce]=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];t._d=(t._useUTC?ie:ee).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function U(t){var e;t._d||(e=S(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],V(t))}function X(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function Z(t){if(t._f===ve.ISO_8601)return void J(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=P(t._l),a=""+t._i,h=a.length,d=0;for(s=Y(t._f,r).match(Pe)||[],e=0;e0&&t._pf.unusedInput.push(n),a=a.slice(a.indexOf(i)+i.length),d+=i.length),pi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),G(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._isPm&&t._a[Ee]<12&&(t._a[Ee]+=12),t._isPm===!1&&12===t._a[Ee]&&(t._a[Ee]=0),V(t),L(t)}function q(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function K(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(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));f(t,i||e)}function J(t){var e,i,s=t._i,o=ti.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ii.length;i>e;e++)if(ii[e][1].exec(s)){t._f=ii[e][0]+(o[6]||" ");break}for(e=0,i=si.length;i>e;e++)if(si[e][1].exec(s)){t._f+=si[e][0];break}s.match(je)&&(t._f+="Z"),Z(t)}else t._isValid=!1}function Q(t){J(t),t._isValid===!1&&(delete t._isValid,ve.createFromInputFallback(t))}function te(t){var e=t._i,i=Ie.exec(e);e===n?t._d=new Date:i?t._d=new Date(+i[1]):"string"==typeof e?Q(t):b(e)?(t._a=e.slice(0),V(t)):_(e)?t._d=new Date(+e):"object"==typeof e?U(t):"number"==typeof e?t._d=new Date(e):ve.createFromInputFallback(t)}function ee(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function ie(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function se(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 oe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ne(t,e,i){var s=we(Math.abs(t)/1e3),o=we(s/60),n=we(o/60),r=we(n/24),a=we(r/365),h=s0,h[4]=i,oe.apply({},h)}function re(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=ve(t).add("d",n),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ae(t,e,i,s,o){var n,r,a=ie(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:T(t-1)+r}}function he(t){var e=t._i,i=t._f;return null===e||i===n&&""===e?ve.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=P().preparse(e)),ve.isMoment(e)?(t=g(e),t._d=new Date(+e._d)):i?b(i)?$(t):Z(t):te(t),new p(t))}function de(t,e){var i,s;if(1===e.length&&b(e[0])&&(e=e[0]),!e.length)return ve();for(i=e[0],s=1;s=0?"+":"-";return e+v(Math.abs(t),6)},gg:function(){return v(this.weekYear()%100,2)},gggg:function(){return v(this.weekYear(),4)},ggggg:function(){return v(this.weekYear(),5)},GG:function(){return v(this.isoWeekYear()%100,2)},GGGG:function(){return v(this.isoWeekYear(),4)},GGGGG:function(){return v(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().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 C(this.milliseconds()/100)},SS:function(){return v(C(this.milliseconds()/10),2)},SSS:function(){return v(this.milliseconds(),3)},SSSS:function(){return v(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+v(C(t/60),2)+":"+v(C(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+v(C(t/60),2)+v(C(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix() +},Q:function(){return this.quarter()}},ui=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];li.length;)be=li.pop(),pi[be+"o"]=l(pi[be],be);for(;ci.length;)be=ci.pop(),pi[be+be]=d(pi[be],2);for(pi.DDDD=d(pi.DDD,3),f(c.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_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){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=ve.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_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=ve([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:{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){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_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",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return re(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),ve=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=a(),he(o)},ve.suppressDeprecationWarnings=!1,ve.createFromInputFallback=h("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)}),ve.min=function(){var t=[].slice.call(arguments,0);return de("isBefore",t)},ve.max=function(){var t=[].slice.call(arguments,0);return de("isAfter",t)},ve.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=a(),he(o).utc()},ve.unix=function(t){return ve(1e3*t)},ve.duration=function(t,e){var i,s,o,n=t,r=null;return ve.isDuration(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=Ae.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:C(r[Ce])*i,h:C(r[Ee])*i,m:C(r[De])*i,s:C(r[Te])*i,ms:C(r[Oe])*i}):(r=ze.exec(t))&&(i="-"===r[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},n={y:o(r[2]),M:o(r[3]),d:o(r[4]),h:o(r[5]),m:o(r[6]),s:o(r[7]),w:o(r[8])}),s=new u(n),ve.isDuration(t)&&t.hasOwnProperty("_lang")&&(s._lang=t._lang),s},ve.version=_e,ve.defaultFormat=ei,ve.ISO_8601=function(){},ve.momentProperties=ke,ve.updateOffset=function(){},ve.relativeTimeThreshold=function(t,e){return di[t]===n?!1:(di[t]=e,!0)},ve.lang=function(t,e){var i;return t?(e?A(N(t),e):null===e?(z(t),t="en"):Le[t]||P(t),i=ve.duration.fn._lang=ve.fn._lang=P(t),i._abbr):ve.fn._lang._abbr},ve.langData=function(t){return t&&t._lang&&t._lang._abbr&&(t=t._lang._abbr),P(t)},ve.isMoment=function(t){return t instanceof p||null!=t&&t.hasOwnProperty("_isAMomentObject")},ve.isDuration=function(t){return t instanceof u},be=ui.length-1;be>=0;--be)M(ui[be]);ve.normalizeUnits=function(t){return w(t)},ve.invalid=function(t){var e=ve.utc(0/0);return null!=t?f(e._pf,t):e._pf.userInvalidated=!0,e},ve.parseZone=function(){return ve.apply(null,arguments).parseZone()},ve.parseTwoDigitYear=function(t){return C(t)+(C(t)>68?1900:2e3)},f(ve.fn=p.prototype,{clone:function(){return ve(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().lang("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=ve(this).utc();return 00:!1},parsingFlags:function(){return f({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(){return this.zone(0)},local:function(){return this.zone(0),this._isUTC=!1,this},format:function(t){var e=H(this,t||ve.defaultFormat);return this.lang().postformat(e)},add:function(t,e){var i;return i="string"==typeof t&&"string"==typeof e?ve.duration(isNaN(+e)?+t:+e,isNaN(+e)?e:t):"string"==typeof t?ve.duration(+e,t):ve.duration(t,e),y(this,i,1),this},subtract:function(t,e){var i;return i="string"==typeof t&&"string"==typeof e?ve.duration(isNaN(+e)?+t:+e,isNaN(+e)?e:t):"string"==typeof t?ve.duration(+e,t):ve.duration(t,e),y(this,i,-1),this},diff:function(t,e,i){var s,o,n=I(t,this),r=6e4*(this.zone()-n.zone());return e=w(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+n.daysInMonth()),o=12*(this.year()-n.year())+(this.month()-n.month()),o+=(this-ve(this).startOf("month")-(n-ve(n).startOf("month")))/s,o-=6e4*(this.zone()-ve(this).startOf("month").zone()-(n.zone()-ve(n).startOf("month").zone()))/s,"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:m(o)},from:function(t,e){return ve.duration(this.diff(t)).lang(this.lang()._abbr).humanize(!e)},fromNow:function(t){return this.from(ve(),t)},calendar:function(t){var e=t||ve(),i=I(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.lang().calendar(o,this))},isLeapYear:function(){return O(this.year())},isDST:function(){return this.zone()+ve(t).startOf(e)},isBefore:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)<+ve(t).startOf(e)},isSame:function(t,e){return e=e||"ms",+this.clone().startOf(e)===+I(t,this).startOf(e)},min:h("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=ve.apply(null,arguments),this>t?this:t}),max:h("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=ve.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i=this._offset||0;return null==t?this._isUTC?i:this._d.getTimezoneOffset():("string"==typeof t&&(t=W(t)),Math.abs(t)<16&&(t=60*t),this._offset=t,this._isUTC=!0,i!==t&&(!e||this._changeInProgress?y(this,ve.duration(i-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,ve.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?ve(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return E(this.year(),this.month())},dayOfYear:function(t){var e=we((ve(this).startOf("day")-ve(this).startOf("year"))/864e5)+1;return null==t?e:this.add("d",t-e)},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=re(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==t?e:this.add("y",t-e)},isoWeekYear:function(t){var e=re(this,1,4).year;return null==t?e:this.add("y",t-e)},week:function(t){var e=this.lang().week(this);return null==t?e:this.add("d",7*(t-e))},isoWeek:function(t){var e=re(this,1,4).week;return null==t?e:this.add("d",7*(t-e))},weekday:function(t){var e=(this.day()+7-this.lang()._week.dow)%7;return null==t?e:this.add("d",t-e)},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return D(this.year(),1,4)},weeksInYear:function(){var t=this._lang._week;return D(this.year(),t.dow,t.doy)},get:function(t){return t=w(t),this[t]()},set:function(t,e){return t=w(t),"function"==typeof this[t]&&this[t](e),this},lang:function(t){return t===n?this._lang:(this._lang=P(t),this)}}),ve.fn.millisecond=ve.fn.milliseconds=ue("Milliseconds",!1),ve.fn.second=ve.fn.seconds=ue("Seconds",!1),ve.fn.minute=ve.fn.minutes=ue("Minutes",!1),ve.fn.hour=ve.fn.hours=ue("Hours",!0),ve.fn.date=ue("Date",!0),ve.fn.dates=h("dates accessor is deprecated. Use date instead.",ue("Date",!0)),ve.fn.year=ue("FullYear",!0),ve.fn.years=h("years accessor is deprecated. Use year instead.",ue("FullYear",!0)),ve.fn.days=ve.fn.day,ve.fn.months=ve.fn.month,ve.fn.weeks=ve.fn.week,ve.fn.isoWeeks=ve.fn.isoWeek,ve.fn.quarters=ve.fn.quarter,ve.fn.toJSON=ve.fn.toISOString,f(ve.duration.fn=u.prototype,{_bubble:function(){var t,e,i,s,o=this._milliseconds,n=this._days,r=this._months,a=this._data;a.milliseconds=o%1e3,t=m(o/1e3),a.seconds=t%60,e=m(t/60),a.minutes=e%60,i=m(e/60),a.hours=i%24,n+=m(i/24),a.days=n%30,r+=m(n/30),a.months=r%12,s=m(r/12),a.years=s},weeks:function(){return m(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*C(this._months/12)},humanize:function(t){var e=+this,i=ne(e,!t,this.lang());return t&&(i=this.lang().pastFuture(e,i)),this.lang().postformat(i)},add:function(t,e){var i=ve.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=ve.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=w(t),this[t.toLowerCase()+"s"]()},as:function(t){return t=w(t),this["as"+t.charAt(0).toUpperCase()+t.slice(1)+"s"]()},lang:ve.fn.lang,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"}});for(be in ni)ni.hasOwnProperty(be)&&(ge(be,ni[be]),fe(be.toLowerCase()));ge("Weeks",6048e5),ve.duration.fn.asMonths=function(){return(+this-31536e6*this.years())/2592e6+12*this.years()},ve.lang("en",{ordinal:function(t){var e=t%10,i=1===C(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Ne?o.exports=ve:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(xe.moment=ye),ve}.call(e,i,e,o),!(s!==n&&(o.exports=s)),me(!0))}).call(this)}).call(e,function(){return this}(),i(63)(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);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 Node({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](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInSupportSector=function(t,e){if(void 0===e)this._switchToSupportSector(),this[t]();else{this._switchToSupportSector();var i=Array.prototype.splice.call(arguments,1);i.length>1?this[t](i[0],i[1]):this[t](e)}this._loadLatestSector()},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;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;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)}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,highlightEdges)}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(36),n=i(33);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild)},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");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._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+t.add+"
"+t.link+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+t.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+t.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+t.del+"");var e=document.getElementById("network-manipulate-addNode");e.onclick=this._createAddNodeToolbar.bind(this);var i=document.getElementById("network-manipulate-connectNode");if(i.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var s=document.getElementById("network-manipulate-editNode");s.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var s=document.getElementById("network-manipulate-editEdge");s.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var o=document.getElementById("network-manipulate-delete");o.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+t.edit+"";var r=document.getElementById("network-manipulate-editModeButton");r.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.manipulationDiv.innerHTML=""+t.back+"
"+t.addDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0;var t=this.constants.locales[this.constants.locale];this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+t.back+"
"+t.linkDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this._handleTouch=this._handleConnect,this._handleOnRelease=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.manipulationDiv.innerHTML=""+t.back+"
"+t.editEdgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,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._handleOnRelease=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._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(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);null!=e&&(e.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._selectObject(e,!1),this.sectors.support.nodes.targetNode=new o({id:"targetNode"},{},{},this.constants),this.sectors.support.nodes.targetNode.x=e.x,this.sectors.support.nodes.targetNode.y=e.y,this.sectors.support.nodes.targetViaNode=new o({id:"targetViaNode"},{},{},this.constants),this.sectors.support.nodes.targetViaNode.x=e.x,this.sectors.support.nodes.targetViaNode.y=e.y,this.sectors.support.nodes.targetViaNode.parentEdgeId="connectionEdge",this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:this.sectors.support.nodes.targetNode.id},this,this.constants),this.edges.connectionEdge.from=e,this.edges.connectionEdge.connected=!0,this.edges.connectionEdge.smooth=!0,this.edges.connectionEdge.selected=!0,this.edges.connectionEdge.to=this.sectors.support.nodes.targetNode,this.edges.connectionEdge.via=this.sectors.support.nodes.targetViaNode,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center);this.sectors.support.nodes.targetNode.x=this._XconvertDOMtoCanvas(e.x),this.sectors.support.nodes.targetNode.y=this._YconvertDOMtoCanvas(e.y),this.sectors.support.nodes.targetViaNode.x=.5*(this._XconvertDOMtoCanvas(e.x)+this.edges.connectionEdge.from.x),this.sectors.support.nodes.targetViaNode.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()))}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var e=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var i=this._getNodeAt(t);null!=i&&(i.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(e,i.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(!(this.triggerFunctions.del.length=2))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),o=i(41);e._cleanNavigation=function(){var t=document.getElementById("network-navigation_wrapper");null!=t&&this.containerElement.removeChild(t),document.onmouseup=null},e._loadNavigationElements=function(){this._cleanNavigation(),this.navigationDivs={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],e=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","zoomExtent"];this.navigationDivs.wrapper=document.createElement("div"),this.navigationDivs.wrapper.id="network-navigation_wrapper",this.navigationDivs.wrapper.style.position="absolute",this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px",this.containerElement.insertBefore(this.navigationDivs.wrapper,this.frame);for(var i=this,s=0;s0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");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,e.length>1&&this._setLevel(t+1,o.edges,o.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,e,i){function s(t){return i(o(t))}function o(t){return n[t]||function(){throw new Error("Cannot find module '"+t+"'.")}()}var n={};s.keys=function(){return Object.keys(n)},s.resolve=o,t.exports=s},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,f=4/3,g=this.constants.physics.repulsion.nodeDistance,m=g;for(d=0;di&&(r=.5*m>i?1:v*i+f,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,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.theta){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)),f=.5*u,g=.5*(o+r),m=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:g-f,maxX:g+f,minY:m-f,maxY:m+f},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 \ No newline at end of file diff --git a/docs/graph2d.html b/docs/graph2d.html index 8252a779..d5a174b7 100644 --- a/docs/graph2d.html +++ b/docs/graph2d.html @@ -37,7 +37,6 @@
  • Configuration Options @@ -253,43 +252,6 @@ groups.add({ -

    Group-specific Options

    - -The groups have some options that only apply to groups and cannot be set globally. These are listed below. - -
    -var groups = new vis.DataSet();
    -groups.add({
    -    id: 1,
    -    content: 'Group 1',
    -    options: {
    -        slots: { slot: 1, total: 3}
    -    }
    -});
    -
    - - - - - - - - - - - - - - - - - - - - - -
    NameTypeRequiredDescription
    slots.slotNumberThe slot the bar chart is plotted in. This has to be used in combination with slots.total. See example 11 for more information.
    slots.totalNumberThe total amount of slots available. This has to be used in combination with slots.slot. See example 11 for more information.
    -

    Configuration Options

    Graph2d Options

    @@ -386,12 +348,13 @@ The options colored in green can also be used as options for the groups. All opt The alignment of the bars with regards to the coordinate. The options are 'left', 'right' or 'center'. - barChart.allowOverlap - Boolean - true - When true, bars that have the same x coordinate are plotted on top of eachother (not stacking). - See example 10 for more information. - When using groups, see example 11. + barChart.handleOverlap + String + 'overlap' + You can choose how graph2d handles the case where barcharts are occupying the same datapoint. The possible options are: + overlap, sideBySide, stack. + See example 10 for more information. + When using groups, see example 11. diff --git a/examples/graph2d/10_barsSideBySide.html b/examples/graph2d/10_barsSideBySide.html index a746809f..c64e8b87 100644 --- a/examples/graph2d/10_barsSideBySide.html +++ b/examples/graph2d/10_barsSideBySide.html @@ -1,7 +1,7 @@ - Graph2d | Bar Graph Example + Graph2d | Bar Graphs Side by Side Example