diff --git a/dist/vis.css b/dist/vis.css index b8bd1289..2bbe58fb 100644 --- a/dist/vis.css +++ b/dist/vis.css @@ -138,6 +138,7 @@ position: absolute; width: 100%; height: 100%; + overflow: visible; } .vis.timeline .axis { @@ -214,8 +215,8 @@ border: none; background-color: rgba(213, 221, 246, 0.4); box-sizing: border-box; - top: 0; - bottom: 0; + padding: 0; + margin: 0; } .vis.timeline .item.range .content { diff --git a/dist/vis.js b/dist/vis.js index f36d5d71..b077d0a7 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -4,8 +4,8 @@ * * A dynamic, browser-based visualization library. * - * @version 3.5.0 - * @date 2014-09-16 + * @version 3.6.0 + * @date 2014-10-21 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -102,43 +102,45 @@ return /******/ (function(modules) { // webpackBootstrap exports.Timeline = __webpack_require__(12); exports.Graph2d = __webpack_require__(13); exports.timeline = { - DataStep: __webpack_require__(14), - Range: __webpack_require__(15), - stack: __webpack_require__(16), - TimeStep: __webpack_require__(17), + DateUtil: __webpack_require__(14), + DataStep: __webpack_require__(15), + Range: __webpack_require__(16), + stack: __webpack_require__(17), + TimeStep: __webpack_require__(18), components: { items: { - Item: __webpack_require__(28), - BackgroundItem: __webpack_require__(29), - BoxItem: __webpack_require__(30), - PointItem: __webpack_require__(31), - RangeItem: __webpack_require__(32) + Item: __webpack_require__(30), + BackgroundItem: __webpack_require__(31), + BoxItem: __webpack_require__(32), + PointItem: __webpack_require__(33), + RangeItem: __webpack_require__(34) }, - Component: __webpack_require__(18), - CurrentTime: __webpack_require__(19), - CustomTime: __webpack_require__(20), - DataAxis: __webpack_require__(21), - GraphGroup: __webpack_require__(22), - Group: __webpack_require__(23), - ItemSet: __webpack_require__(24), - Legend: __webpack_require__(25), - LineGraph: __webpack_require__(26), - TimeAxis: __webpack_require__(27) + Component: __webpack_require__(19), + CurrentTime: __webpack_require__(20), + CustomTime: __webpack_require__(21), + DataAxis: __webpack_require__(22), + GraphGroup: __webpack_require__(23), + Group: __webpack_require__(24), + BackgroundGroup: __webpack_require__(25), + ItemSet: __webpack_require__(26), + Legend: __webpack_require__(27), + LineGraph: __webpack_require__(28), + TimeAxis: __webpack_require__(29) } }; // Network - exports.Network = __webpack_require__(33); + exports.Network = __webpack_require__(35); exports.network = { - Edge: __webpack_require__(34), - Groups: __webpack_require__(35), - Images: __webpack_require__(36), - Node: __webpack_require__(37), - Popup: __webpack_require__(38), - dotparser: __webpack_require__(39), - gephiParser: __webpack_require__(40) + Edge: __webpack_require__(36), + Groups: __webpack_require__(37), + Images: __webpack_require__(38), + Node: __webpack_require__(39), + Popup: __webpack_require__(40), + dotparser: __webpack_require__(41), + gephiParser: __webpack_require__(42) }; // Deprecated since v3.0.0 @@ -147,8 +149,8 @@ return /******/ (function(modules) { // webpackBootstrap }; // bundled external libraries - exports.moment = __webpack_require__(41); - exports.hammer = __webpack_require__(42); + exports.moment = __webpack_require__(43); + exports.hammer = __webpack_require__(44); /***/ }, @@ -159,7 +161,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. - var moment = __webpack_require__(41); + var moment = __webpack_require__(43); /** * Test whether given object is a number @@ -583,7 +585,7 @@ return /******/ (function(modules) { // webpackBootstrap if (object instanceof String) { return 'String'; } - if (object instanceof Array) { + if (Array.isArray(object)) { return 'Array'; } if (object instanceof Date) { @@ -663,7 +665,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.forEach = function(object, callback) { var i, len; - if (object instanceof Array) { + if (Array.isArray(object)) { // array for (i = 0, len = object.length; i < len; i++) { callback(object[i], i, object); @@ -1083,6 +1085,63 @@ return /******/ (function(modules) { // webpackBootstrap return {h:hue,s:saturation,v:value}; }; + var cssUtil = { + // split a string with css styles into an object with key/values + split: function (cssText) { + var styles = {}; + + cssText.split(';').forEach(function (style) { + if (style.trim() != '') { + var parts = style.split(':'); + var key = parts[0].trim(); + var value = parts[1].trim(); + styles[key] = value; + } + }); + + return styles; + }, + + // build a css text string from an object with key/values + join: function (styles) { + return Object.keys(styles) + .map(function (key) { + return key + ': ' + styles[key]; + }) + .join('; '); + } + }; + + /** + * Append a string with css styles to an element + * @param {Element} element + * @param {String} cssText + */ + exports.addCssText = function (element, cssText) { + var currentStyles = cssUtil.split(element.style.cssText); + var newStyles = cssUtil.split(cssText); + var styles = exports.extend(currentStyles, newStyles); + + element.style.cssText = cssUtil.join(styles); + }; + + /** + * Remove a string with css styles from an element + * @param {Element} element + * @param {String} cssText + */ + exports.removeCssText = function (element, cssText) { + var styles = cssUtil.split(element.style.cssText); + var removeStyles = cssUtil.split(cssText); + + for (var key in removeStyles) { + if (removeStyles.hasOwnProperty(key)) { + delete styles[key]; + } + } + + element.style.cssText = cssUtil.join(styles); + }; /** * https://gist.github.com/mjijackson/5311256 @@ -1647,14 +1706,18 @@ return /******/ (function(modules) { // webpackBootstrap * @param className */ exports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer) { - // if (height != 0) { + if (height != 0) { + if (height < 0) { + height *= -1; + y -= height; + } var rect = exports.getSVGElement('rect',JSONcontainer, svgContainer); rect.setAttributeNS(null, "x", x - 0.5 * width); rect.setAttributeNS(null, "y", y); rect.setAttributeNS(null, "width", width); rect.setAttributeNS(null, "height", height); rect.setAttributeNS(null, "class", className); - // } + } }; /***/ }, @@ -1867,10 +1930,11 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Array} updatedIds The ids of the added or updated items */ DataSet.prototype.update = function (data, senderId) { - var addedIds = [], - updatedIds = [], - me = this, - fieldId = me._fieldId; + var addedIds = []; + var updatedIds = []; + var updatedData = []; + var me = this; + var fieldId = me._fieldId; var addOrUpdate = function (item) { var id = item[fieldId]; @@ -1878,6 +1942,7 @@ return /******/ (function(modules) { // webpackBootstrap // update item id = me._updateItem(item); updatedIds.push(id); + updatedData.push(item); } else { // add new item @@ -1917,7 +1982,7 @@ return /******/ (function(modules) { // webpackBootstrap this._trigger('add', {items: addedIds}, senderId); } if (updatedIds.length) { - this._trigger('update', {items: updatedIds}, senderId); + this._trigger('update', {items: updatedIds, data: updatedData}, senderId); } return addedIds.concat(updatedIds); @@ -2919,7 +2984,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 5 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(50); + var Emitter = __webpack_require__(52); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var util = __webpack_require__(1); @@ -2957,6 +3022,12 @@ return /******/ (function(modules) { // webpackBootstrap this.xLabel = 'x'; this.yLabel = 'y'; this.zLabel = 'z'; + + var passValueFn = function(v) { return v; }; + this.xValueLabel = passValueFn; + this.yValueLabel = passValueFn; + this.zValueLabel = passValueFn; + this.filterLabel = 'time'; this.legendLabel = 'value'; @@ -3750,6 +3821,10 @@ return /******/ (function(modules) { // webpackBootstrap if (options.yLabel !== undefined) this.yLabel = options.yLabel; if (options.zLabel !== undefined) this.zLabel = options.zLabel; + if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel; + if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; + if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; + if (options.style !== undefined) { var styleNumber = this._getStyleNumber(options.style); if (styleNumber !== -1) { @@ -4100,7 +4175,7 @@ return /******/ (function(modules) { // webpackBootstrap ctx.textBaseline = 'middle'; } ctx.fillStyle = this.colorAxis; - ctx.fillText(' ' + step.getCurrent() + ' ', text.x, text.y); + ctx.fillText(' ' + this.xValueLabel(step.getCurrent()) + ' ', text.x, text.y); step.next(); } @@ -4157,7 +4232,7 @@ return /******/ (function(modules) { // webpackBootstrap ctx.textBaseline = 'middle'; } ctx.fillStyle = this.colorAxis; - ctx.fillText(' ' + step.getCurrent() + ' ', text.x, text.y); + ctx.fillText(' ' + this.yValueLabel(step.getCurrent()) + ' ', text.x, text.y); step.next(); } @@ -4184,7 +4259,7 @@ return /******/ (function(modules) { // webpackBootstrap ctx.textAlign = 'right'; ctx.textBaseline = 'middle'; ctx.fillStyle = this.colorAxis; - ctx.fillText(step.getCurrent() + ' ', from.x - 5, from.y); + ctx.fillText(this.zValueLabel(step.getCurrent()) + ' ', from.x - 5, from.y); step.next(); } @@ -6163,17 +6238,17 @@ return /******/ (function(modules) { // webpackBootstrap /* 12 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(50); - var Hammer = __webpack_require__(42); + var Emitter = __webpack_require__(52); + var Hammer = __webpack_require__(44); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); - var Range = __webpack_require__(15); - var Core = __webpack_require__(44); - var TimeAxis = __webpack_require__(27); - var CurrentTime = __webpack_require__(19); - var CustomTime = __webpack_require__(20); - var ItemSet = __webpack_require__(24); + var Range = __webpack_require__(16); + var Core = __webpack_require__(45); + var TimeAxis = __webpack_require__(29); + var CurrentTime = __webpack_require__(20); + var CustomTime = __webpack_require__(21); + var ItemSet = __webpack_require__(26); /** * Create a timeline visualization @@ -6183,11 +6258,18 @@ return /******/ (function(modules) { // webpackBootstrap * @constructor * @extends Core */ - function Timeline (container, items, options) { + function Timeline (container, items, groups, options) { if (!(this instanceof Timeline)) { throw new SyntaxError('Constructor must be called with the new operator'); } + // if the third element is options, the forth is groups (optionally); + if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { + var forthArgument = options; + options = groups; + groups = forthArgument; + } + var me = this; this.defaultOptions = { start: null, @@ -6217,6 +6299,7 @@ return /******/ (function(modules) { // webpackBootstrap off: this.off.bind(this), emit: this.emit.bind(this) }, + hiddenDates: [], util: { snap: null, // will be specified after TimeAxis is created toScreen: me._toScreen.bind(me), @@ -6257,6 +6340,11 @@ return /******/ (function(modules) { // webpackBootstrap this.setOptions(options); } + // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! + if (groups) { + this.setGroups(groups); + } + // create itemset if (items) { this.setItems(items); @@ -6297,6 +6385,7 @@ return /******/ (function(modules) { // webpackBootstrap // set items this.itemsData = newDataSet; this.itemSet && this.itemSet.setItems(newDataSet); + if (initialLoad) { if (this.options.start != undefined || this.options.end != undefined) { var start = this.options.start != undefined ? this.options.start : null; @@ -6464,17 +6553,17 @@ return /******/ (function(modules) { // webpackBootstrap /* 13 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(50); - var Hammer = __webpack_require__(42); + var Emitter = __webpack_require__(52); + var Hammer = __webpack_require__(44); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); - var Range = __webpack_require__(15); - var Core = __webpack_require__(44); - var TimeAxis = __webpack_require__(27); - var CurrentTime = __webpack_require__(19); - var CustomTime = __webpack_require__(20); - var LineGraph = __webpack_require__(26); + var Range = __webpack_require__(16); + var Core = __webpack_require__(45); + var TimeAxis = __webpack_require__(29); + var CurrentTime = __webpack_require__(20); + var CustomTime = __webpack_require__(21); + var LineGraph = __webpack_require__(28); /** * Create a timeline visualization @@ -6484,7 +6573,14 @@ return /******/ (function(modules) { // webpackBootstrap * @constructor * @extends Core */ - function Graph2d (container, items, options, groups) { + function Graph2d (container, items, groups, options) { + // if the third element is options, the forth is groups (optionally); + if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { + var forthArgument = options; + options = groups; + groups = forthArgument; + } + var me = this; this.defaultOptions = { start: null, @@ -6514,6 +6610,7 @@ return /******/ (function(modules) { // webpackBootstrap off: this.off.bind(this), emit: this.emit.bind(this) }, + hiddenDates: [], util: { snap: null, // will be specified after TimeAxis is created toScreen: me._toScreen.bind(me), @@ -6600,13 +6697,16 @@ return /******/ (function(modules) { // webpackBootstrap this.itemsData = newDataSet; this.linegraph && this.linegraph.setItems(newDataSet); - if (initialLoad && ('start' in this.options || 'end' in this.options)) { - this.fit(); - - var start = ('start' in this.options) ? util.convert(this.options.start, 'Date') : null; - var end = ('end' in this.options) ? util.convert(this.options.end, 'Date') : null; + if (initialLoad) { + if (this.options.start != undefined || this.options.end != undefined) { + var start = this.options.start != undefined ? this.options.start : null; + var end = this.options.end != undefined ? this.options.end : null; - this.setWindow(start, end); + this.setWindow(start, end, {animate: false}); + } + else { + this.fit({animate: false}); + } } }; @@ -6701,6 +6801,475 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 14 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Created by Alex on 10/3/2014. + */ + var moment = __webpack_require__(43); + + + /** + * used in Core to convert the options into a volatile variable + * + * @param Core + */ + exports.convertHiddenOptions = function(body, hiddenDates) { + //var specificHiddenDates = hiddenDates.specific; + //if (specificHiddenDates) { + // if (Array.isArray(specificHiddenDates) == true) { + // for (var i = 0; i < specificHiddenDates.length; i++) { + // var dateItem = {}; + // dateItem.start = moment(specificHiddenDates[i].start).toDate().valueOf(); + // dateItem.end = moment(specificHiddenDates[i].end).toDate().valueOf(); + // body.hiddenDates.push(dateItem); + // } + // body.hiddenDates.sort(function (a, b) { + // return a.start - b.start; + // }); // sort by start time + // } + // else { + // body.hiddenDates = [{ + // start: moment(specificHiddenDates.start).toDate().valueOf(), + // end: moment(specificHiddenDates.end).toDate().valueOf() + // } + // ]; + // } + //} + // + //// allowing multiple input formats + //var periodicHiddenDates = hiddenDates.periodic; + //if (periodicHiddenDates) { + // if (periodicHiddenDates.times) { + // if (Array.isArray(periodicHiddenDates.times) != true) { + // periodicHiddenDates.times = [periodicHiddenDates.times]; + // } + // } + // if (periodicHiddenDates.days) { + // if (Array.isArray(periodicHiddenDates.days) != true) { + // periodicHiddenDates.days = [periodicHiddenDates.days]; + // } + // } + //} + body.hiddenDates = []; + if (hiddenDates) { + if (Array.isArray(hiddenDates) == true) { + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].repeat === undefined) { + var dateItem = {}; + dateItem.start = moment(hiddenDates[i].start).toDate().valueOf(); + dateItem.end = moment(hiddenDates[i].end).toDate().valueOf(); + body.hiddenDates.push(dateItem); + } + } + body.hiddenDates.sort(function (a, b) { + return a.start - b.start; + }); // sort by start time + } + } + }; + + + /** + * create new entrees for the repeating hidden dates + * @param body + * @param hiddenDates + */ + exports.updateHiddenDates = function (body, hiddenDates) { + if (hiddenDates && body.domProps.centerContainer.width !== undefined) { + exports.convertHiddenOptions(body, hiddenDates); + + var start = moment(body.range.start); + var end = moment(body.range.end); + + var totalRange = (body.range.end - body.range.start); + var pixelTime = totalRange / body.domProps.centerContainer.width; + + + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].repeat !== undefined) { + var startDate = moment(hiddenDates[i].start); + var endDate = moment(hiddenDates[i].end); + + var duration = endDate - startDate; + if (duration >= 4 * pixelTime) { + var offset = 0; + switch (hiddenDates[i].repeat) { + case "daily": // case of time + if (startDate.day() != endDate.day()) { + offset = 1; + } + startDate.day(start.day); + startDate.subtract(7,'days'); + startDate.month(start.month()); + startDate.year(start.year()); + + endDate.day(start.day); + endDate.subtract(7 + offset,'days'); + endDate.month(start.month()); + endDate.year(start.year()); + break; + case "weekly": + if (startDate.week() != endDate.week()) { + offset = 1; + } + startDate.week(start.week() - 1) + startDate.year(start.year()); + + endDate.week(start.week() - 1 + offset) + endDate.year(start.year()); + break + case "monthly": + if (startDate.month() != endDate.month()) { + offset = 1; + } + startDate.month(start.month() - 1) + startDate.year(start.year()); + + endDate.month(start.month() - 1 + offset) + endDate.year(start.year()); + break; + case "yearly": + if (startDate.year() != endDate.year()) { + offset = 1; + } + startDate.year(start.year() - 1); + + endDate.year(start.year() - 1 + offset); + break; + default: + console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); + return; + } + while (startDate < end) { + body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); + switch (hiddenDates[i].repeat) { + case "daily": + startDate.add(1, 'days'); + endDate.add(1, 'days'); + break; + case "weekly": + startDate.add(7, 'days'); + endDate.add(7, 'days'); + break + case "monthly": + startDate.add(1, 'months'); + endDate.add(1, 'months'); + break; + case "yearly": + startDate.add(1, 'y'); + endDate.add(1, 'y'); + break; + default: + console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); + return; + } + } + body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); + } + } + } + + // remove duplicates, merge where possible + exports.removeDuplicates(body); + + // ensure the new positions are not on hidden dates + var startHidden = exports.isHidden(body.range.start, body.hiddenDates); + var endHidden = exports.isHidden(body.range.end,body.hiddenDates); + var rangeStart = body.range.start; + var rangeEnd = body.range.end; + if (startHidden.hidden == true) {rangeStart = body.range.startToFront == true ? startHidden.startDate - 1 : startHidden.endDate + 1;} + if (endHidden.hidden == true) {rangeEnd = body.range.endToFront == true ? endHidden.startDate - 1 : endHidden.endDate + 1;} + if (startHidden.hidden == true || endHidden.hidden == true) { + body.range._applyRange(rangeStart, rangeEnd); + } + } + } + + + /** + * remove duplicates from the hidden dates list. Duplicates are evil. They mess everything up. + * Scales with N^2 + * @param body + */ + exports.removeDuplicates = function(body) { + var hiddenDates = body.hiddenDates; + var safeDates = []; + for (var i = 0; i < hiddenDates.length; i++) { + for (var j = 0; j < hiddenDates.length; j++) { + if (i != j && hiddenDates[j].remove != true && hiddenDates[i].remove != true) { + // j inside i + if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { + hiddenDates[j].remove = true; + } + // j start inside i + else if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].start <= hiddenDates[i].end) { + hiddenDates[i].end = hiddenDates[j].end; + hiddenDates[j].remove = true; + } + // j end inside i + else if (hiddenDates[j].end >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { + hiddenDates[i].start = hiddenDates[j].start; + hiddenDates[j].remove = true; + } + } + } + } + + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].remove !== true) { + safeDates.push(hiddenDates[i]); + } + } + + body.hiddenDates = safeDates; + body.hiddenDates.sort(function (a, b) { + return a.start - b.start; + }); // sort by start time + } + + exports.printDates = function(dates) { + for (var i =0; i < dates.length; i++) { + console.log(i, new Date(dates[i].start),new Date(dates[i].end), dates[i].start, dates[i].end, dates[i].remove); + } + } + + /** + * Used in TimeStep to avoid the hidden times. + * @param timeStep + * @param previousTime + */ + exports.stepOverHiddenDates = function(timeStep, previousTime) { + var stepInHidden = false; + var currentValue = timeStep.current.valueOf(); + for (var i = 0; i < timeStep.hiddenDates.length; i++) { + var startDate = timeStep.hiddenDates[i].start; + var endDate = timeStep.hiddenDates[i].end; + if (currentValue >= startDate && currentValue < endDate) { + stepInHidden = true; + break; + } + } + + if (stepInHidden == true && currentValue < timeStep._end.valueOf() && currentValue != previousTime) { + var prevValue = moment(previousTime); + var newValue = moment(endDate); + //check if the next step should be major + if (prevValue.year() != newValue.year()) {timeStep.switchedYear = true;} + else if (prevValue.month() != newValue.month()) {timeStep.switchedMonth = true;} + else if (prevValue.dayOfYear() != newValue.dayOfYear()) {timeStep.switchedDay = true;} + + timeStep.current = newValue.toDate(); + } + }; + + + /** + * Used in TimeStep to avoid the hidden times. + * @param timeStep + * @param previousTime + */ + exports.checkFirstStep = function(timeStep) { + var stepInHidden = false; + var currentValue = timeStep.current.valueOf(); + for (var i = 0; i < timeStep.hiddenDates.length; i++) { + var startDate = timeStep.hiddenDates[i].start; + var endDate = timeStep.hiddenDates[i].end; + if (currentValue >= startDate && currentValue < endDate) { + stepInHidden = true; + break; + } + } + + if (stepInHidden == true && currentValue <= timeStep._end.valueOf()) { + var newValue = moment(endDate); + timeStep.current = newValue.toDate(); + } + }; + + /** + * replaces the Core toScreen methods + * @param Core + * @param time + * @param width + * @returns {number} + */ + exports.toScreen = function(Core, time, width) { + var hidden = exports.isHidden(time, Core.body.hiddenDates) + if (hidden.hidden == true) { + time = hidden.startDate; + } + + var duration = exports.getHiddenDuration(Core.body.hiddenDates, Core.range); + time = exports.correctTimeForHidden(Core.body.hiddenDates, Core.range, time); + + var conversion = Core.range.conversion(width, duration); + return (time.valueOf() - conversion.offset) * conversion.scale; + }; + + + /** + * Replaces the core toTime methods + * @param body + * @param range + * @param x + * @param width + * @returns {Date} + */ + exports.toTime = function(body, range, x, width) { + var hiddenDuration = exports.getHiddenDuration(body.hiddenDates, range); + var totalDuration = range.end - range.start - hiddenDuration; + var partialDuration = totalDuration * x / width; + var accumulatedHiddenDuration = exports.getAccumulatedHiddenDuration(body.hiddenDates,range, partialDuration); + + var newTime = new Date(accumulatedHiddenDuration + partialDuration + range.start); + return newTime; + }; + + + /** + * Support function + * + * @param hiddenTimes + * @param range + * @returns {number} + */ + exports.getHiddenDuration = function(hiddenTimes, range) { + var duration = 0; + for (var i = 0; i < hiddenTimes.length; i++) { + var startDate = hiddenTimes[i].start; + var endDate = hiddenTimes[i].end; + // if time after the cutout, and the + if (startDate >= range.start && endDate < range.end) { + duration += endDate - startDate; + } + } + return duration; + }; + + + /** + * Support function + * @param hiddenDates + * @param range + * @param time + * @returns {{duration: number, time: *, offset: number}} + */ + exports.correctTimeForHidden = function(hiddenDates, range, time) { + time = moment(time).toDate().valueOf(); + time -= exports.getHiddenDurationBefore(hiddenDates,range,time); + return time; + }; + + exports.getHiddenDurationBefore = function(hiddenDates, range, time) { + var timeOffset = 0; + time = moment(time).toDate().valueOf(); + + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= range.start && endDate < range.end) { + if (time >= endDate) { + timeOffset += (endDate - startDate); + } + } + } + return timeOffset; + } + + /** + * sum the duration from start to finish, including the hidden duration, + * until the required amount has been reached, return the accumulated hidden duration + * @param hiddenDates + * @param range + * @param time + * @returns {{duration: number, time: *, offset: number}} + */ + exports.getAccumulatedHiddenDuration = function(hiddenDates, range, requiredDuration) { + var hiddenDuration = 0; + var duration = 0; + var previousPoint = range.start; + //exports.printDates(hiddenDates) + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= range.start && endDate < range.end) { + duration += startDate - previousPoint; + previousPoint = endDate; + if (duration >= requiredDuration) { + break; + } + else { + hiddenDuration += endDate - startDate; + } + } + } + + return hiddenDuration; + }; + + + + /** + * used to step over to either side of a hidden block. Correction is disabled on tablets, might be set to true + * @param hiddenTimes + * @param time + * @param direction + * @param correctionEnabled + * @returns {*} + */ + exports.snapAwayFromHidden = function(hiddenTimes, time, direction, correctionEnabled) { + var isHidden = exports.isHidden(time, hiddenTimes); + if (isHidden.hidden == true) { + if (direction < 0) { + if (correctionEnabled == true) { + return isHidden.startDate - (isHidden.endDate - time) - 1; + } + else { + return isHidden.startDate - 1; + } + } + else { + if (correctionEnabled == true) { + return isHidden.endDate + (time - isHidden.startDate) + 1; + } + else { + return isHidden.endDate + 1; + } + } + } + else { + return time; + } + + } + + + /** + * Check if a time is hidden + * + * @param time + * @param hiddenTimes + * @returns {{hidden: boolean, startDate: Window.start, endDate: *}} + */ + exports.isHidden = function(time, hiddenTimes) { + var isHidden = false; + for (var i = 0; i < hiddenTimes.length; i++) { + var startDate = hiddenTimes[i].start; + var endDate = hiddenTimes[i].end; + + if (time >= startDate && time < endDate) { // if the start is entering a hidden zone + isHidden = true; + break; + } + } + return {hidden: isHidden, startDate: startDate, endDate: endDate}; + } + +/***/ }, +/* 15 */ /***/ function(module, exports, __webpack_require__) { /** @@ -6928,13 +7497,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 15 */ +/* 16 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(43); - var moment = __webpack_require__(41); - var Component = __webpack_require__(18); + var hammerUtil = __webpack_require__(46); + var moment = __webpack_require__(43); + var Component = __webpack_require__(19); + var DateUtil = __webpack_require__(14); /** * @constructor Range @@ -6950,6 +7520,10 @@ return /******/ (function(modules) { // webpackBootstrap this.end = now.clone().add(4, 'days').valueOf(); // Number this.body = body; + this.deltaDifference = 0; + this.scaleOffset = 0; + this.startToFront = false; + this.endToFront = true; // default options this.defaultOptions = { @@ -7010,7 +7584,7 @@ return /******/ (function(modules) { // webpackBootstrap Range.prototype.setOptions = function (options) { if (options) { // copy the options that we know - var fields = ['direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable', 'activate']; + var fields = ['direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable', 'activate', 'hiddenDates']; util.selectiveExtend(fields, this.options, options); if ('start' in options || 'end' in options) { @@ -7045,7 +7619,6 @@ return /******/ (function(modules) { // webpackBootstrap Range.prototype.setRange = function(start, end, animate) { var _start = start != undefined ? util.convert(start, 'Date').valueOf() : null; var _end = end != undefined ? util.convert(end, 'Date').valueOf() : null; - this._cancelAnimation(); if (animate) { @@ -7065,6 +7638,7 @@ return /******/ (function(modules) { // webpackBootstrap var e = (done || _end === null) ? _end : util.easeInOutQuad(time, initEnd, _end, duration); changed = me._applyRange(s, e); + DateUtil.updateHiddenDates(me.body, me.options.hiddenDates); anyChanged = anyChanged || changed; if (changed) { me.body.emitter.emit('rangechange', {start: new Date(me.start), end: new Date(me.end)}); @@ -7087,6 +7661,7 @@ return /******/ (function(modules) { // webpackBootstrap } else { var changed = this._applyRange(_start, _end); + DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); if (changed) { var params = {start: new Date(this.start), end: new Date(this.end)}; this.body.emitter.emit('rangechange', params); @@ -7234,8 +7809,8 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number} width * @returns {{offset: number, scale: number}} conversion */ - Range.prototype.conversion = function (width) { - return Range.conversion(this.start, this.end, width); + Range.prototype.conversion = function (width, totalHidden) { + return Range.conversion(this.start, this.end, width, totalHidden); }; /** @@ -7246,11 +7821,14 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number} width * @returns {{offset: number, scale: number}} conversion */ - Range.conversion = function (start, end, width) { + Range.conversion = function (start, end, width, totalHidden) { + if (totalHidden === undefined) { + totalHidden = 0; + } if (width != 0 && (end - start != 0)) { return { offset: start, - scale: width / (end - start) + scale: width / (end - start - totalHidden) } } else { @@ -7267,6 +7845,8 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ Range.prototype._onDragStart = function(event) { + this.deltaDifference = 0; + this.previousDelta = 0; // only allow dragging when configured as movable if (!this.options.moveable) return; @@ -7299,10 +7879,33 @@ return /******/ (function(modules) { // webpackBootstrap if (!this.props.touch.allowDragging) return; var delta = (direction == 'horizontal') ? event.gesture.deltaX : event.gesture.deltaY; + delta -= this.deltaDifference; var interval = (this.props.touch.end - this.props.touch.start); + + + // normalize dragging speed if cutout is in between. + var duration = DateUtil.getHiddenDuration(this.body.hiddenDates, this); + interval -= duration; + var width = (direction == 'horizontal') ? this.body.domProps.center.width : this.body.domProps.center.height; var diffRange = -delta / width * interval; - this._applyRange(this.props.touch.start + diffRange, this.props.touch.end + diffRange); + var newStart = this.props.touch.start + diffRange; + var newEnd = this.props.touch.end + diffRange; + + + // snapping times away from hidden zones + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, this.previousDelta-delta, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, this.previousDelta-delta, true); + if (safeStart != newStart || safeEnd != newEnd) { + this.deltaDifference += delta; + this.props.touch.start = safeStart; + this.props.touch.end = safeEnd; + this._onDrag(event); + return; + } + + this.previousDelta = delta; + this._applyRange(newStart, newEnd); // fire a rangechange event this.body.emitter.emit('rangechange', { @@ -7377,7 +7980,7 @@ return /******/ (function(modules) { // webpackBootstrap pointer = getPointer(gesture.center, this.body.dom.center), pointerDate = this._pointerToDate(pointer); - this.zoom(scale, pointerDate); + this.zoom(scale, pointerDate, delta); } // Prevent default actions caused by mouse wheel @@ -7394,6 +7997,8 @@ return /******/ (function(modules) { // webpackBootstrap this.props.touch.end = this.end; this.props.touch.allowDragging = true; this.props.touch.center = null; + this.scaleOffset = 0; + this.deltaDifference = 0; }; /** @@ -7420,15 +8025,33 @@ return /******/ (function(modules) { // webpackBootstrap this.props.touch.center = getPointer(event.gesture.center, this.body.dom.center); } - var scale = 1 / event.gesture.scale, - initDate = this._pointerToDate(this.props.touch.center); + var scale = 1 / (event.gesture.scale + this.scaleOffset); + var center = this._pointerToDate(this.props.touch.center); + + var hiddenDuration = DateUtil.getHiddenDuration(this.body.hiddenDates, this); // calculate new start and end - var newStart = parseInt(initDate + (this.props.touch.start - initDate) * scale); - var newEnd = parseInt(initDate + (this.props.touch.end - initDate) * scale); + var newStart = center + (this.props.touch.start - center) * scale; + var newEnd = (center+hiddenDuration) + (this.props.touch.end - (center+hiddenDuration)) * scale; + + // snapping times away from hidden zones + this.startToFront = 1 - scale > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + this.endToFront = scale - 1 > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, 1 - scale, false); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, scale - 1, false); + if (safeStart != newStart || safeEnd != newEnd) { + this.props.touch.start = safeStart; + this.props.touch.end = safeEnd; + this.scaleOffset = 1 - event.gesture.scale; + newStart = safeStart; + newEnd = safeEnd; + } - // apply new range this.setRange(newStart, newEnd); + + this.startToFront = false; // revert to default + this.endToFront = true; // revert to default } }; @@ -7446,7 +8069,10 @@ return /******/ (function(modules) { // webpackBootstrap if (direction == 'horizontal') { var width = this.body.domProps.center.width; - conversion = this.conversion(width); + var duration = DateUtil.getHiddenDuration(this.body.hiddenDates, this); + //return DateUtil.toTime(this.body, this, pointer.x, width); + conversion = this.conversion(width, duration); + //console.log(new Date(pointer.x / conversion.scale + conversion.offset + duration)); return pointer.x / conversion.scale + conversion.offset; } else { @@ -7480,19 +8106,35 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number} [center] Value representing a date around which will * be zoomed. */ - Range.prototype.zoom = function(scale, center) { + Range.prototype.zoom = function(scale, center, delta) { // if centerDate is not provided, take it half between start Date and end Date if (center == null) { center = (this.start + this.end) / 2; } + var hiddenDuration = DateUtil.getHiddenDuration(this.body.hiddenDates, this); + // calculate new start and end var newStart = center + (this.start - center) * scale; - var newEnd = center + (this.end - center) * scale; + var newEnd = (center+hiddenDuration) + (this.end - (center+hiddenDuration)) * scale; + // snapping times away from hidden zones + this.startToFront = delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + this.endToFront = -delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, delta, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, -delta, true); + if (safeStart != newStart || safeEnd != newEnd) { + newStart = safeStart; + newEnd = safeEnd; + } this.setRange(newStart, newEnd); + + this.startToFront = false; // revert to default + this.endToFront = true; // revert to default }; + + /** * Move the range with a given delta to the left or right. Start and end * value will be adjusted. For example, try delta = 0.1 or -0.1 @@ -7533,7 +8175,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 16 */ +/* 17 */ /***/ function(module, exports, __webpack_require__) { // Utility functions for ordering and stacking of items @@ -7587,7 +8229,7 @@ return /******/ (function(modules) { // webpackBootstrap // calculate new, non-overlapping positions for (i = 0, iMax = items.length; i < iMax; i++) { var item = items[i]; - if (item.top === null) { + if (item.stack && item.top === null) { // initialize top position item.top = margin.axis; @@ -7597,7 +8239,7 @@ return /******/ (function(modules) { // webpackBootstrap var collidingItem = null; for (var j = 0, jj = items.length; j < jj; j++) { var other = items[j]; - if (other.top !== null && other !== item && exports.collision(item, other, margin.item)) { + if (other.top !== null && other !== item && other.stack && exports.collision(item, other, margin.item)) { collidingItem = other; break; } @@ -7612,6 +8254,7 @@ return /******/ (function(modules) { // webpackBootstrap } }; + /** * Adjust vertical positions of the items without stacking them * @param {Item[]} items @@ -7619,12 +8262,25 @@ return /******/ (function(modules) { // webpackBootstrap * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin * Margins between items and between items and the axis. */ - exports.nostack = function(items, margin) { - var i, iMax; + exports.nostack = function(items, margin, subgroups) { + var i, iMax, newTop; // reset top position of all items for (i = 0, iMax = items.length; i < iMax; i++) { - items[i].top = margin.axis; + if (items[i].data.subgroup !== undefined) { + newTop = margin.axis; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroups[items[i].data.subgroup].index) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } + items[i].top = newTop; + } + else { + items[i].top = margin.axis; + } } }; @@ -7647,10 +8303,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 17 */ +/* 18 */ /***/ function(module, exports, __webpack_require__) { - var moment = __webpack_require__(41); + var moment = __webpack_require__(43); + var DateUtil = __webpack_require__(14); /** * @constructor TimeStep @@ -7678,7 +8335,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Date} [end] The end date * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds */ - function TimeStep(start, end, minimumStep) { + function TimeStep(start, end, minimumStep, hiddenDates) { // variables this.current = new Date(); this._start = new Date(); @@ -7690,6 +8347,15 @@ return /******/ (function(modules) { // webpackBootstrap // initialize the range this.setRange(start, end, minimumStep); + + // hidden Dates options + this.switchedDay = false; + this.switchedMonth = false; + this.switchedYear = false; + this.hiddenDates = hiddenDates; + if (hiddenDates === undefined) { + this.hiddenDates = []; + } } /// enum scale @@ -7842,6 +8508,8 @@ return /******/ (function(modules) { // webpackBootstrap if (this.current.valueOf() == prev) { this.current = new Date(this._end.valueOf()); } + + DateUtil.stepOverHiddenDates(this, prev); }; @@ -7894,6 +8562,8 @@ return /******/ (function(modules) { // webpackBootstrap return; } + //var b = asc + ds; + var stepYear = (1000 * 60 * 60 * 24 * 30 * 12); var stepMonth = (1000 * 60 * 60 * 24 * 30); var stepDay = (1000 * 60 * 60 * 24); @@ -8046,22 +8716,65 @@ return /******/ (function(modules) { // webpackBootstrap * @return {boolean} true if current date is major, else false. */ TimeStep.prototype.isMajor = function() { - switch (this.scale) { - case TimeStep.SCALE.MILLISECOND: - return (this.current.getMilliseconds() == 0); - case TimeStep.SCALE.SECOND: - return (this.current.getSeconds() == 0); - case TimeStep.SCALE.MINUTE: - return (this.current.getHours() == 0) && (this.current.getMinutes() == 0); - // Note: this is no bug. Major label is equal for both minute and hour scale - case TimeStep.SCALE.HOUR: - return (this.current.getHours() == 0); - case TimeStep.SCALE.WEEKDAY: // intentional fall through - case TimeStep.SCALE.DAY: - return (this.current.getDate() == 1); - case TimeStep.SCALE.MONTH: - return (this.current.getMonth() == 0); - case TimeStep.SCALE.YEAR: + if (this.switchedYear == true) { + this.switchedYear = false; + switch (this.scale) { + case TimeStep.SCALE.YEAR: + case TimeStep.SCALE.MONTH: + case TimeStep.SCALE.WEEKDAY: + case TimeStep.SCALE.DAY: + case TimeStep.SCALE.HOUR: + case TimeStep.SCALE.MINUTE: + case TimeStep.SCALE.SECOND: + case TimeStep.SCALE.MILLISECOND: + return true; + default: + return false; + } + } + else if (this.switchedMonth == true) { + this.switchedMonth = false; + switch (this.scale) { + case TimeStep.SCALE.WEEKDAY: + case TimeStep.SCALE.DAY: + case TimeStep.SCALE.HOUR: + case TimeStep.SCALE.MINUTE: + case TimeStep.SCALE.SECOND: + case TimeStep.SCALE.MILLISECOND: + return true; + default: + return false; + } + } + else if (this.switchedDay == true) { + this.switchedDay = false; + switch (this.scale) { + case TimeStep.SCALE.MILLISECOND: + case TimeStep.SCALE.SECOND: + case TimeStep.SCALE.MINUTE: + case TimeStep.SCALE.HOUR: + return true; + default: + return false; + } + } + + + switch (this.scale) { + case TimeStep.SCALE.MILLISECOND: + return (this.current.getMilliseconds() == 0); + case TimeStep.SCALE.SECOND: + return (this.current.getSeconds() == 0); + case TimeStep.SCALE.MINUTE: + return (this.current.getHours() == 0) && (this.current.getMinutes() == 0); + case TimeStep.SCALE.HOUR: + return (this.current.getHours() == 0); + case TimeStep.SCALE.WEEKDAY: // intentional fall through + case TimeStep.SCALE.DAY: + return (this.current.getDate() == 1); + case TimeStep.SCALE.MONTH: + return (this.current.getMonth() == 0); + case TimeStep.SCALE.YEAR: return false; default: return false; @@ -8123,7 +8836,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 18 */ +/* 19 */ /***/ function(module, exports, __webpack_require__) { /** @@ -8183,13 +8896,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 19 */ +/* 20 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Component = __webpack_require__(18); - var moment = __webpack_require__(41); - var locales = __webpack_require__(45); + var Component = __webpack_require__(19); + var moment = __webpack_require__(43); + var locales = __webpack_require__(47); /** * A current time bar @@ -8352,14 +9065,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 20 */ +/* 21 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(44); var util = __webpack_require__(1); - var Component = __webpack_require__(18); - var moment = __webpack_require__(41); - var locales = __webpack_require__(45); + var Component = __webpack_require__(19); + var moment = __webpack_require__(43); + var locales = __webpack_require__(47); /** * A custom time bar @@ -8554,13 +9267,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 21 */ +/* 22 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); var DOMutil = __webpack_require__(2); - var Component = __webpack_require__(18); - var DataStep = __webpack_require__(14); + var Component = __webpack_require__(19); + var DataStep = __webpack_require__(15); /** * A horizontal time axis @@ -9061,7 +9774,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 22 */ +/* 23 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); @@ -9202,12 +9915,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 23 */ +/* 24 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var stack = __webpack_require__(16); - var RangeItem = __webpack_require__(32); + var stack = __webpack_require__(17); + var RangeItem = __webpack_require__(34); /** * @constructor Group @@ -9217,7 +9930,8 @@ return /******/ (function(modules) { // webpackBootstrap */ function Group (groupId, data, itemSet) { this.groupId = groupId; - + this.subgroups = {}; + this.visibleSubgroups = 0; this.itemSet = itemSet; this.dom = {}; @@ -9270,7 +9984,7 @@ return /******/ (function(modules) { // webpackBootstrap // to the DOM, or the style of a parent of the Timeline is changed from // display:none is changed to visible. this.dom.marker = document.createElement('div'); - this.dom.marker.style.visibility = 'hidden'; + this.dom.marker.style.visibility = 'hidden'; // TODO: ask jos why this is not none? this.dom.marker.innerHTML = '?'; this.dom.background.appendChild(this.dom.marker); }; @@ -9317,6 +10031,16 @@ return /******/ (function(modules) { // webpackBootstrap util.addClassName(this.dom.axis, className); this.className = className; } + + // update style + if (this.style) { + util.removeCssText(this.dom.label, this.style); + this.style = null; + } + if (data && data.style) { + util.addCssText(this.dom.label, data.style); + this.style = data.style; + } }; /** @@ -9359,18 +10083,65 @@ return /******/ (function(modules) { // webpackBootstrap stack.stack(this.visibleItems, margin, restack); } else { // no stacking - stack.nostack(this.visibleItems, margin); + stack.nostack(this.visibleItems, margin, this.subgroups); + } + + // recalculate the height of the group + var height = this._calculateHeight(margin); + + // calculate actual size and position + var foreground = this.dom.foreground; + this.top = foreground.offsetTop; + this.left = foreground.offsetLeft; + this.width = foreground.offsetWidth; + resized = util.updateProperty(this, 'height', height) || resized; + + // recalculate size of label + resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; + resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; + + // apply new height + this.dom.background.style.height = height + 'px'; + this.dom.foreground.style.height = height + 'px'; + this.dom.label.style.height = height + 'px'; + + // update vertical position of items after they are re-stacked and the height of the group is calculated + for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { + var item = this.visibleItems[i]; + item.repositionY(margin); } + return resized; + }; + + /** + * recalculate the height of the group + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @returns {number} Returns the height + * @private + */ + Group.prototype._calculateHeight = function (margin) { // recalculate the height of the group var height; var visibleItems = this.visibleItems; + //var visibleSubgroups = []; + //this.visibleSubgroups = 0; + this.resetSubgroups(); + var me = this; if (visibleItems.length) { var min = visibleItems[0].top; var max = visibleItems[0].top + visibleItems[0].height; util.forEach(visibleItems, function (item) { min = Math.min(min, item.top); max = Math.max(max, (item.top + item.height)); + if (item.data.subgroup !== undefined) { + me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height,item.height); + me.subgroups[item.data.subgroup].visible = true; + //if (visibleSubgroups.indexOf(item.data.subgroup) == -1){ + // visibleSubgroups.push(item.data.subgroup); + // me.visibleSubgroups += 1; + //} + } }); if (min > margin.axis) { // there is an empty gap between the lowest item and the axis @@ -9387,29 +10158,7 @@ return /******/ (function(modules) { // webpackBootstrap } height = Math.max(height, this.props.label.height); - // calculate actual size and position - var foreground = this.dom.foreground; - this.top = foreground.offsetTop; - this.left = foreground.offsetLeft; - this.width = foreground.offsetWidth; - resized = util.updateProperty(this, 'height', height) || resized; - - // recalculate size of label - resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; - resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; - - // apply new height - this.dom.background.style.height = height + 'px'; - this.dom.foreground.style.height = height + 'px'; - this.dom.label.style.height = height + 'px'; - - // update vertical position of items after they are re-stacked and the height of the group is calculated - for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { - var item = this.visibleItems[i]; - item.repositionY(); - } - - return resized; + return height; }; /** @@ -9466,12 +10215,29 @@ return /******/ (function(modules) { // webpackBootstrap this.items[item.id] = item; item.setParent(this); + // add to + var index = 0; + if (item.data.subgroup !== undefined) { + if (this.subgroups[item.data.subgroup] === undefined) { + this.subgroups[item.data.subgroup] = {height:0, visible: false, index:index}; + index++; + } + } + if (this.visibleItems.indexOf(item) == -1) { var range = this.itemSet.body.range; // TODO: not nice accessing the range like this this._checkIfVisible(item, this.visibleItems, range); } }; + Group.prototype.resetSubgroups = function() { + for (var subgroup in this.subgroups) { + if (this.subgroups.hasOwnProperty(subgroup)) { + this.subgroups[subgroup].visible = false; + } + } + }; + /** * Remove an item from the group * @param {Item} item @@ -9592,18 +10358,18 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ Group.prototype._checkIfInvisible = function(item, visibleItems, range) { - if (item.isVisible(range)) { - if (!item.displayed) item.show(); - item.repositionX(); - if (visibleItems.indexOf(item) == -1) { - visibleItems.push(item); + if (item.isVisible(range)) { + if (!item.displayed) item.show(); + item.repositionX(); + if (visibleItems.indexOf(item) == -1) { + visibleItems.push(item); + } + return false; + } + else { + if (item.displayed) item.hide(); + return true; } - return false; - } - else { - if (item.displayed) item.hide(); - return true; - } }; /** @@ -9618,37 +10384,102 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ Group.prototype._checkIfVisible = function(item, visibleItems, range) { - if (item.isVisible(range)) { - if (!item.displayed) item.show(); - // reposition item horizontally - item.repositionX(); - visibleItems.push(item); + if (item.isVisible(range)) { + if (!item.displayed) item.show(); + // reposition item horizontally + item.repositionX(); + visibleItems.push(item); + } + else { + if (item.displayed) item.hide(); + } + }; + + module.exports = Group; + + +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var Group = __webpack_require__(24); + + /** + * @constructor BackgroundGroup + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet + */ + function BackgroundGroup (groupId, data, itemSet) { + Group.call(this, groupId, data, itemSet); + + this.width = 0; + this.height = 0; + this.top = 0; + this.left = 0; + } + + BackgroundGroup.prototype = Object.create(Group.prototype); + + /** + * Repaint this group + * @param {{start: number, end: number}} range + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @param {boolean} [restack=false] Force restacking of all items + * @return {boolean} Returns true if the group is resized + */ + BackgroundGroup.prototype.redraw = function(range, margin, restack) { + var resized = false; + + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + + // calculate actual size + this.width = this.dom.background.offsetWidth; + + // apply new height (just always zero for BackgroundGroup + this.dom.background.style.height = '0'; + + // update vertical position of items after they are re-stacked and the height of the group is calculated + for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { + var item = this.visibleItems[i]; + item.repositionY(margin); } - else { - if (item.displayed) item.hide(); + + return resized; + }; + + /** + * Show this group: attach to the DOM + */ + BackgroundGroup.prototype.show = function() { + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); } }; - module.exports = Group; + module.exports = BackgroundGroup; /***/ }, -/* 24 */ +/* 26 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(44); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); - var Component = __webpack_require__(18); - var Group = __webpack_require__(23); - var BoxItem = __webpack_require__(30); - var PointItem = __webpack_require__(31); - var RangeItem = __webpack_require__(32); - var BackgroundItem = __webpack_require__(29); + var Component = __webpack_require__(19); + var Group = __webpack_require__(24); + var BackgroundGroup = __webpack_require__(25); + var BoxItem = __webpack_require__(32); + var PointItem = __webpack_require__(33); + var RangeItem = __webpack_require__(34); + var BackgroundItem = __webpack_require__(31); - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + var BACKGROUND = '__background__'; // reserved group id for background items without group /** * An ItemSet holds a set of items and ranges which can be displayed in a @@ -9808,6 +10639,11 @@ return /******/ (function(modules) { // webpackBootstrap // create ungrouped Group this._updateUngrouped(); + // create background Group + var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this); + backgroundGroup.show(); + this.groups[BACKGROUND] = backgroundGroup; + // attach event listeners // Note: we bind to the centerContainer for the case where the height // of the center container is larger than of the ItemSet, so we @@ -9902,7 +10738,7 @@ return /******/ (function(modules) { // webpackBootstrap ItemSet.prototype.setOptions = function(options) { if (options) { // copy all options that we know - var fields = ['type', 'align', 'orientation', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template']; + var fields = ['type', 'align', 'orientation', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide']; util.selectiveExtend(fields, this.options, options); if ('margin' in options) { @@ -10134,7 +10970,10 @@ return /******/ (function(modules) { // webpackBootstrap this.lastVisibleInterval = visibleInterval; this.props.lastWidth = this.props.width; - // redraw all groups + // redraw the background group + this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); + + // redraw all regular groups var restack = this.stackDirty, firstGroup = this._firstGroup(), firstMargin = { @@ -10197,12 +11036,24 @@ return /******/ (function(modules) { // webpackBootstrap */ ItemSet.prototype._updateUngrouped = function() { var ungrouped = this.groups[UNGROUPED]; + var background = this.groups[BACKGROUND]; + var item, itemId; if (this.groupsData) { // remove the group holding all ungrouped items if (ungrouped) { ungrouped.hide(); delete this.groups[UNGROUPED]; + + for (itemId in this.items) { + if (this.items.hasOwnProperty(itemId)) { + item = this.items[itemId]; + item.parent && item.parent.remove(item); + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + group && group.add(item) || item.hide(); + } + } } } else { @@ -10213,9 +11064,15 @@ return /******/ (function(modules) { // webpackBootstrap ungrouped = new Group(id, data, this); this.groups[UNGROUPED] = ungrouped; - for (var itemId in this.items) { + for (itemId in this.items) { if (this.items.hasOwnProperty(itemId)) { - ungrouped.add(this.items[itemId]); + item = this.items[itemId]; + if (item instanceof BackgroundItem) { + background.add(item); + } + else { + ungrouped.add(item); + } } } @@ -10367,6 +11224,33 @@ return /******/ (function(modules) { // webpackBootstrap } }; + /** + * Get the time of an item based on it's data and options.type + * @param {Object} itemData + * @returns {string} Returns the type + * @private + */ + ItemSet.prototype._getType = function (itemData) { + return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); + }; + + + /** + * Get the group id for an item + * @param {Object} itemData + * @returns {string} Returns the groupId + * @private + */ + ItemSet.prototype._getGroupId = function (itemData) { + var type = this._getType(itemData); + if (type == 'background') { + return this.groupsData && itemData.group != undefined ? itemData.group : BACKGROUND; + } + else { + return this.groupsData ? itemData.group : UNGROUPED; + } + }; + /** * Handle updated items * @param {Number[]} ids @@ -10376,9 +11260,9 @@ return /******/ (function(modules) { // webpackBootstrap var me = this; ids.forEach(function (id) { - var itemData = me.itemsData.get(id, me.itemOptions), - item = me.items[id], - type = itemData.type || me.options.type || (itemData.end ? 'range' : 'box'); + var itemData = me.itemsData.get(id, me.itemOptions); + var item = me.items[id]; + var type = me._getType(itemData); var constructor = ItemSet.types[type]; @@ -10483,7 +11367,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!group) { // check for reserved ids - if (id == UNGROUPED) { + if (id == UNGROUPED || id == BACKGROUND) { throw new Error('Illegal group id. ' + id + ' is a reserved id.'); } @@ -10582,7 +11466,7 @@ return /******/ (function(modules) { // webpackBootstrap this.items[item.id] = item; // add to group - var groupId = this.groupsData ? item.data.group : UNGROUPED; + var groupId = this._getGroupId(item.data); var group = this.groups[groupId]; if (group) group.add(item); }; @@ -10604,7 +11488,7 @@ return /******/ (function(modules) { // webpackBootstrap var oldGroup = this.groups[oldGroupId]; if (oldGroup) oldGroup.remove(item); - var groupId = this.groupsData ? item.data.group : UNGROUPED; + var groupId = this._getGroupId(item.data); var group = this.groups[groupId]; if (group) group.add(item); } @@ -10628,7 +11512,7 @@ return /******/ (function(modules) { // webpackBootstrap if (index != -1) this.selection.splice(index, 1); // remove from group - var groupId = this.groupsData ? item.data.group : UNGROUPED; + var groupId = this._getGroupId(item.data); var group = this.groups[groupId]; if (group) group.remove(item); }; @@ -10674,18 +11558,17 @@ return /******/ (function(modules) { // webpackBootstrap return; } - var item = this.touchParams.item || null, - me = this, - props; + var item = this.touchParams.item || null; + var me = this; + var props = {}; + props.initialX = event.gesture.center.clientX; if (item && item.selected) { var dragLeftItem = event.target.dragLeftItem; var dragRightItem = event.target.dragRightItem; if (dragLeftItem) { - props = { - item: dragLeftItem - }; + props.item = dragLeftItem; if (me.options.editable.updateTime) { props.start = item.data.start.valueOf(); @@ -10697,9 +11580,7 @@ return /******/ (function(modules) { // webpackBootstrap this.touchParams.itemProps = [props]; } else if (dragRightItem) { - props = { - item: dragRightItem - }; + props.item = dragRightItem; if (me.options.editable.updateTime) { props.end = item.data.end.valueOf(); @@ -10713,9 +11594,7 @@ return /******/ (function(modules) { // webpackBootstrap else { this.touchParams.itemProps = this.getSelection().map(function (id) { var item = me.items[id]; - var props = { - item: item - }; + props.item = item; if (me.options.editable.updateTime) { if ('start' in item.data) props.start = item.data.start.valueOf(); @@ -10741,23 +11620,28 @@ return /******/ (function(modules) { // webpackBootstrap ItemSet.prototype._onDrag = function (event) { if (this.touchParams.itemProps) { var me = this; - var range = this.body.range; var snap = this.body.util.snap || null; - var deltaX = event.gesture.deltaX; - var scale = (this.props.width / (range.end - range.start)); - var offset = deltaX / scale; + var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; // move this.touchParams.itemProps.forEach(function (props) { var newProps = {}; - - if ('start' in props) { - var start = new Date(props.start + offset); + if ('start' in props && !('end' in props)) { // only start in props + var start = me.body.util.toTime(event.gesture.center.clientX - xOffset); newProps.start = snap ? snap(start) : start; } - - if ('end' in props) { + else if ('start' in props) { // start and end in props + var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); + var initial = me.body.util.toTime(props.initialX - xOffset); + var offset = current - initial; + var start = new Date(props.start + offset); var end = new Date(props.end + offset); + + newProps.start = snap ? snap(start) : start; + newProps.end = snap ? snap(end) : end; + } + else if ('end' in props) { // only end in props + var end = me.body.util.toTime(event.gesture.center.clientX - xOffset); newProps.end = snap ? snap(end) : end; } @@ -10909,8 +11793,6 @@ return /******/ (function(modules) { // webpackBootstrap items: this.getSelection() }); } - - event.stopPropagation(); }; /** @@ -10998,8 +11880,6 @@ return /******/ (function(modules) { // webpackBootstrap this.body.emitter.emit('select', { items: this.getSelection() }); - - event.stopPropagation(); } }; @@ -11061,12 +11941,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 25 */ +/* 27 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); var DOMutil = __webpack_require__(2); - var Component = __webpack_require__(18); + var Component = __webpack_require__(19); /** * Legend for Graph2d @@ -11137,6 +12017,7 @@ return /******/ (function(modules) { // webpackBootstrap this.svg.style.position = 'absolute'; this.svg.style.top = 0 +'px'; this.svg.style.width = this.options.iconSize + 5 + 'px'; + this.svg.style.height = '100%'; this.dom.frame.appendChild(this.svg); this.dom.frame.appendChild(this.dom.textArea); @@ -11264,17 +12145,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 26 */ +/* 28 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); var DOMutil = __webpack_require__(2); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); - var Component = __webpack_require__(18); - var DataAxis = __webpack_require__(21); - var GraphGroup = __webpack_require__(22); - var Legend = __webpack_require__(25); + var Component = __webpack_require__(19); + var DataAxis = __webpack_require__(22); + var GraphGroup = __webpack_require__(23); + var Legend = __webpack_require__(27); var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items @@ -12571,13 +13452,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 27 */ +/* 29 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Component = __webpack_require__(18); - var TimeStep = __webpack_require__(17); - var moment = __webpack_require__(41); + var Component = __webpack_require__(19); + var TimeStep = __webpack_require__(18); + var DateUtil = __webpack_require__(14); + var moment = __webpack_require__(43); /** * A horizontal time axis @@ -12639,7 +13521,7 @@ return /******/ (function(modules) { // webpackBootstrap TimeAxis.prototype.setOptions = function(options) { if (options) { // copy all options that we know - util.selectiveExtend(['orientation', 'showMinorLabels', 'showMajorLabels'], this.options, options); + util.selectiveExtend(['orientation', 'showMinorLabels', 'showMajorLabels','hiddenDates'], this.options, options); // apply locale to moment.js // TODO: not so nice, this is applied globally to moment.js @@ -12686,10 +13568,10 @@ return /******/ (function(modules) { // webpackBootstrap * @return {boolean} Returns true if the component is resized */ TimeAxis.prototype.redraw = function () { - var options = this.options, - props = this.props, - foreground = this.dom.foreground, - background = this.dom.background; + var options = this.options; + var props = this.props; + var foreground = this.dom.foreground; + var background = this.dom.background; // determine the correct parent DOM element (depending on option orientation) var parent = (options.orientation == 'top') ? this.body.dom.top : this.body.dom.bottom; @@ -12750,11 +13632,14 @@ return /******/ (function(modules) { // webpackBootstrap var orientation = this.options.orientation; // calculate range and step (step such that we have space for 7 characters per label) - var start = util.convert(this.body.range.start, 'Number'), - end = util.convert(this.body.range.end, 'Number'), - minimumStep = this.body.util.toTime((this.props.minorCharWidth || 10) * 7).valueOf() - -this.body.util.toTime(0).valueOf(); - var step = new TimeStep(new Date(start), new Date(end), minimumStep); + var start = util.convert(this.body.range.start, 'Number'); + var end = util.convert(this.body.range.end, 'Number'); + var timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * 7).valueOf(); + var minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this.body.range, timeLabelsize); + minimumStep -= this.body.util.toTime(0).valueOf(); + + + var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); this.step = step; // Move all DOM elements to a "redundant" list, where they @@ -12775,9 +13660,9 @@ return /******/ (function(modules) { // webpackBootstrap var max = 0; while (step.hasNext() && max < 1000) { max++; - var cur = step.getCurrent(), - x = this.body.util.toScreen(cur), - isMajor = step.isMajor(); + var cur = step.getCurrent(); + var x = this.body.util.toScreen(cur); + var isMajor = step.isMajor(); // TODO: lines must have a width, such that we can create css backgrounds @@ -12961,7 +13846,7 @@ return /******/ (function(modules) { // webpackBootstrap // determine the char width and height on the major axis if (!this.dom.measureCharMajor) { this.dom.measureCharMajor = document.createElement('DIV'); - this.dom.measureCharMajor.className = 'text minor measure'; + this.dom.measureCharMajor.className = 'text major measure'; this.dom.measureCharMajor.style.position = 'absolute'; this.dom.measureCharMajor.appendChild(document.createTextNode('0')); @@ -12985,10 +13870,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 28 */ +/* 30 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(44); + var util = __webpack_require__(1); /** * @constructor Item @@ -13017,6 +13903,8 @@ return /******/ (function(modules) { // webpackBootstrap this.height = null; } + Item.prototype.stack = true; + /** * Select current item */ @@ -13158,15 +14046,22 @@ return /******/ (function(modules) { // webpackBootstrap content = this.data.content; } - if (content instanceof Element) { - element.innerHTML = ''; - element.appendChild(content); - } - else if (content != undefined) { - element.innerHTML = content; - } - else { - throw new Error('Property "content" missing in item ' + this.data.id); + if(content !== this.content) { + // only replace the content when changed + if (content instanceof Element) { + element.innerHTML = ''; + element.appendChild(content); + } + else if (content != undefined) { + element.innerHTML = content; + } + else { + if (!(this.data.type == 'background' && this.data.content === undefined)) { + throw new Error('Property "content" missing in item ' + this.id); + } + } + + this.content = content; } }; @@ -13191,12 +14086,24 @@ return /******/ (function(modules) { // webpackBootstrap */ Item.prototype._updateDataAttributes = function(element) { if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { - for (var i = 0; i < this.options.dataAttributes.length; i++) { - var name = this.options.dataAttributes[i]; - var value = this.data[name]; + var attributes = []; - if (value != null) { - element.setAttribute('data-' + name, value); + if (Array.isArray(this.options.dataAttributes)) { + attributes = this.options.dataAttributes; + } + else if (this.options.dataAttributes == 'all') { + attributes = Object.keys(this.data); + } + else { + return; + } + + for (var i = 0; i < attributes.length; i++) { + var name = attributes[i]; + var value = this.data[name]; + + if (value != null) { + element.setAttribute('data-' + name, value); } else { element.removeAttribute('data-' + name); @@ -13205,16 +14112,36 @@ return /******/ (function(modules) { // webpackBootstrap } }; + /** + * Update custom styles of the element + * @param element + * @private + */ + Item.prototype._updateStyle = function(element) { + // remove old styles + if (this.style) { + util.removeCssText(element, this.style); + this.style = null; + } + + // append new styles + if (this.data.style) { + util.addCssText(element, this.data.style); + this.style = this.data.style; + } + }; + module.exports = Item; /***/ }, -/* 29 */ +/* 31 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); - var Item = __webpack_require__(28); - var RangeItem = __webpack_require__(32); + var Hammer = __webpack_require__(44); + var Item = __webpack_require__(30); + var BackgroundGroup = __webpack_require__(25); + var RangeItem = __webpack_require__(34); /** * @constructor BackgroundItem @@ -13246,11 +14173,14 @@ return /******/ (function(modules) { // webpackBootstrap } Item.call(this, data, conversion, options); + + this.emptyContent = false; } BackgroundItem.prototype = new Item (null, null, null); BackgroundItem.prototype.baseClassName = 'item background'; + BackgroundItem.prototype.stack = false; /** * Check whether this item is visible inside given range @@ -13272,7 +14202,7 @@ return /******/ (function(modules) { // webpackBootstrap this.dom = {}; dom = this.dom; - // background box + // background box dom.box = document.createElement('div'); // className is updated in redraw() @@ -13294,7 +14224,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!dom.box.parentNode) { var background = this.parent.dom.background; if (!background) { - throw new Error('Cannot redraw time axis: parent has no background container element'); + throw new Error('Cannot redraw item: parent has no background container element'); } background.appendChild(dom.box); } @@ -13308,6 +14238,7 @@ return /******/ (function(modules) { // webpackBootstrap this._updateContents(this.dom.content); this._updateTitle(this.dom.content); this._updateDataAttributes(this.dom.content); + this._updateStyle(this.dom.box); // update class var className = (this.data.className ? (' ' + this.data.className) : '') + @@ -13347,20 +14278,79 @@ return /******/ (function(modules) { // webpackBootstrap * Reposition the item vertically * @Override */ - BackgroundItem.prototype.repositionY = function() { + BackgroundItem.prototype.repositionY = function(margin) { var onTop = this.options.orientation === 'top'; this.dom.content.style.top = onTop ? '' : '0'; this.dom.content.style.bottom = onTop ? '0' : ''; + var height; + + // special positioning for subgroups + if (this.data.subgroup !== undefined) { + var itemSubgroup = this.data.subgroup; + var subgroups = this.parent.subgroups; + var subgroupIndex = subgroups[itemSubgroup].index; + // if the orientation is top, we need to take the difference in height into account. + if (onTop == true) { + // the first subgroup will have to account for the distance from the top to the first item. + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + height += subgroupIndex == 0 ? margin.axis - 0.5*margin.item.vertical : 0; + var newTop = this.parent.top; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroupIndex) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } + + // the others will have to be offset downwards with this same distance. + newTop += subgroupIndex != 0 ? margin.axis - 0.5 * margin.item.vertical : 0; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; + } + // and when the orientation is bottom: + else { + var newTop = this.parent.top; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index > subgroupIndex) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; + } + } + // and in the case of no subgroups: + else { + // we want backgrounds with groups to only show in groups. + if (this.parent instanceof BackgroundGroup) { + // if the item is not in a group: + height = Math.max(this.parent.height, this.parent.itemSet.body.domProps.centerContainer.height); + this.dom.box.style.top = onTop ? '0' : ''; + this.dom.box.style.bottom = onTop ? '' : '0'; + } + else { + height = this.parent.height; + // same alignment for items when orientation is top or bottom + this.dom.box.style.top = this.parent.top + 'px'; + this.dom.box.style.bottom = ''; + } + } + this.dom.box.style.height = height + 'px'; }; module.exports = BackgroundItem; /***/ }, -/* 30 */ +/* 32 */ /***/ function(module, exports, __webpack_require__) { - var Item = __webpack_require__(28); + var Item = __webpack_require__(30); + var util = __webpack_require__(1); /** * @constructor BoxItem @@ -13446,17 +14436,17 @@ return /******/ (function(modules) { // webpackBootstrap } if (!dom.box.parentNode) { var foreground = this.parent.dom.foreground; - if (!foreground) throw new Error('Cannot redraw time axis: parent has no foreground container element'); + if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); foreground.appendChild(dom.box); } if (!dom.line.parentNode) { var background = this.parent.dom.background; - if (!background) throw new Error('Cannot redraw time axis: parent has no background container element'); + if (!background) throw new Error('Cannot redraw item: parent has no background container element'); background.appendChild(dom.line); } if (!dom.dot.parentNode) { var axis = this.parent.dom.axis; - if (!background) throw new Error('Cannot redraw time axis: parent has no axis container element'); + if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); axis.appendChild(dom.dot); } this.displayed = true; @@ -13469,6 +14459,7 @@ return /******/ (function(modules) { // webpackBootstrap this._updateContents(this.dom.content); this._updateTitle(this.dom.box); this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); // update class var className = (this.data.className? ' ' + this.data.className : '') + @@ -13585,10 +14576,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 31 */ +/* 33 */ /***/ function(module, exports, __webpack_require__) { - var Item = __webpack_require__(28); + var Item = __webpack_require__(30); /** * @constructor PointItem @@ -13673,7 +14664,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!dom.point.parentNode) { var foreground = this.parent.dom.foreground; if (!foreground) { - throw new Error('Cannot redraw time axis: parent has no foreground container element'); + throw new Error('Cannot redraw item: parent has no foreground container element'); } foreground.appendChild(dom.point); } @@ -13687,6 +14678,7 @@ return /******/ (function(modules) { // webpackBootstrap this._updateContents(this.dom.content); this._updateTitle(this.dom.point); this._updateDataAttributes(this.dom.point); + this._updateStyle(this.dom.point); // update class var className = (this.data.className? ' ' + this.data.className : '') + @@ -13773,11 +14765,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 32 */ +/* 34 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); - var Item = __webpack_require__(28); + var Hammer = __webpack_require__(44); + var Item = __webpack_require__(30); /** * @constructor RangeItem @@ -13856,7 +14848,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!dom.box.parentNode) { var foreground = this.parent.dom.foreground; if (!foreground) { - throw new Error('Cannot redraw time axis: parent has no foreground container element'); + throw new Error('Cannot redraw item: parent has no foreground container element'); } foreground.appendChild(dom.box); } @@ -13870,6 +14862,7 @@ return /******/ (function(modules) { // webpackBootstrap this._updateContents(this.dom.content); this._updateTitle(this.dom.box); this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); // update class var className = (this.data.className ? (' ' + this.data.className) : '') + @@ -14071,29 +15064,29 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 33 */ +/* 35 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(50); - var Hammer = __webpack_require__(42); - var mousetrap = __webpack_require__(51); + var Emitter = __webpack_require__(52); + var Hammer = __webpack_require__(44); + var mousetrap = __webpack_require__(53); var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(43); + var hammerUtil = __webpack_require__(46); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); - var dotparser = __webpack_require__(39); - var gephiParser = __webpack_require__(40); - var Groups = __webpack_require__(35); - var Images = __webpack_require__(36); - var Node = __webpack_require__(37); - var Edge = __webpack_require__(34); - var Popup = __webpack_require__(38); - var MixinLoader = __webpack_require__(48); - var Activator = __webpack_require__(49); - var locales = __webpack_require__(46); + var dotparser = __webpack_require__(41); + var gephiParser = __webpack_require__(42); + var Groups = __webpack_require__(37); + var Images = __webpack_require__(38); + var Node = __webpack_require__(39); + var Edge = __webpack_require__(36); + var Popup = __webpack_require__(40); + var MixinLoader = __webpack_require__(50); + var Activator = __webpack_require__(51); + var locales = __webpack_require__(48); // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(47); + __webpack_require__(49); /** * @constructor Network @@ -14343,6 +15336,7 @@ return /******/ (function(modules) { // webpackBootstrap // other vars this.freezeSimulation = false;// freeze the simulation this.cachedFunctions = {}; + this.startedStabilization = false; this.stabilized = false; this.stabilizationIterations = null; @@ -14372,7 +15366,7 @@ return /******/ (function(modules) { // webpackBootstrap network.start(); }, 'update': function (event, params) { - network._updateNodes(params.items); + network._updateNodes(params.items, params.data); network.start(); }, 'remove': function (event, params) { @@ -14526,10 +15520,10 @@ return /******/ (function(modules) { // webpackBootstrap zoomLevel *= factor; } else { - var xDistance = (Math.abs(range.minX) + Math.abs(range.maxX)) * 1.1; - var yDistance = (Math.abs(range.minY) + Math.abs(range.maxY)) * 1.1; + var xDistance = Math.abs(range.maxX - range.minX) * 1.1; + var yDistance = Math.abs(range.maxY - range.minY) * 1.1; - var xZoomLevel = this.frame.canvas.clientWidth / xDistance; + var xZoomLevel = this.frame.canvas.clientWidth / xDistance; var yZoomLevel = this.frame.canvas.clientHeight / yDistance; zoomLevel = (xZoomLevel <= yZoomLevel) ? xZoomLevel : yZoomLevel; @@ -14922,7 +15916,7 @@ return /******/ (function(modules) { // webpackBootstrap drag.translation = this._getTranslation(); drag.nodeId = null; - if (node != null) { + if (node != null && this.constants.dragNodes == true) { drag.nodeId = node.id; // select the clicked node if not yet selected if (!node.isSelected()) { @@ -15371,6 +16365,8 @@ return /******/ (function(modules) { // webpackBootstrap */ Network.prototype.setSize = function(width, height) { var emitEvent = false; + var oldWidth = this.frame.canvas.width; + var oldHeight = this.frame.canvas.height; if (width != this.constants.width || height != this.constants.height || this.frame.style.width != width || this.frame.style.height != height) { this.frame.style.width = width; this.frame.style.height = height; @@ -15401,7 +16397,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (emitEvent == true) { - this.emit('resize', {width:this.frame.canvas.width,height:this.frame.canvas.height}); + this.emit('resize', {width:this.frame.canvas.width,height:this.frame.canvas.height, oldWidth: oldWidth, oldHeight: oldHeight}); } }; @@ -15416,7 +16412,7 @@ return /******/ (function(modules) { // webpackBootstrap if (nodes instanceof DataSet || nodes instanceof DataView) { this.nodesData = nodes; } - else if (nodes instanceof Array) { + else if (Array.isArray(nodes)) { this.nodesData = new DataSet(); this.nodesData.add(nodes); } @@ -15488,13 +16484,12 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Number[] | String[]} ids * @private */ - Network.prototype._updateNodes = function(ids) { - var nodes = this.nodes, - nodesData = this.nodesData; + Network.prototype._updateNodes = function(ids,changedData) { + var nodes = this.nodes; for (var i = 0, len = ids.length; i < len; i++) { var id = ids[i]; var node = nodes[id]; - var data = nodesData.get(id); + var data = changedData[i]; if (node) { // update node node.setProperties(data, this.constants); @@ -15511,7 +16506,6 @@ return /******/ (function(modules) { // webpackBootstrap this._setupHierarchicalLayout(); } this._updateNodeIndexList(); - this._reconnectEdges(); this._updateValueRange(nodes); }; @@ -15549,7 +16543,7 @@ return /******/ (function(modules) { // webpackBootstrap if (edges instanceof DataSet || edges instanceof DataView) { this.edgesData = edges; } - else if (edges instanceof Array) { + else if (Array.isArray(edges)) { this.edgesData = new DataSet(); this.edgesData.add(edges); } @@ -16169,6 +17163,11 @@ return /******/ (function(modules) { // webpackBootstrap */ Network.prototype.start = function() { if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0) { + if (this.startedStabilization == false) { + this.emit("startStabilization"); + this.startedStabilization = true; + } + if (!this.timer) { var ua = navigator.userAgent.toLowerCase(); @@ -16202,6 +17201,7 @@ return /******/ (function(modules) { // webpackBootstrap iterations: me.stabilizationIterations }; me.stabilizationIterations = 0; + me.startedStabilization = false; setTimeout(function () { me.emit("stabilized", params); }, 0); @@ -16330,6 +17330,14 @@ return /******/ (function(modules) { // webpackBootstrap * Load the XY positions of the nodes into the dataset. */ Network.prototype.storePosition = function() { + console.log("storePosition is depricated: use .storePositions() from now on.") + this.storePositions(); + }; + + /** + * Load the XY positions of the nodes into the dataset. + */ + Network.prototype.storePositions = function() { var dataArray = []; for (var nodeId in this.nodes) { if (this.nodes.hasOwnProperty(nodeId)) { @@ -16344,6 +17352,39 @@ return /******/ (function(modules) { // webpackBootstrap this.nodesData.update(dataArray); }; + /** + * Return the positions of the nodes. + */ + Network.prototype.getPositions = function(ids) { + var dataArray = {}; + if (ids !== undefined) { + if (Array.isArray(ids) == true) { + for (var i = 0; i < ids.length; i++) { + if (this.nodes[ids[i]] !== undefined) { + var node = this.nodes[ids[i]]; + dataArray[ids[i]] = {x: Math.round(node.x), y: Math.round(node.y)}; + } + } + } + else { + if (this.nodes[ids] !== undefined) { + var node = this.nodes[ids]; + dataArray[ids] = {x: Math.round(node.x), y: Math.round(node.y)}; + } + } + } + else { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + dataArray[nodeId] = {x: Math.round(node.x), y: Math.round(node.y)}; + } + } + } + return dataArray; + }; + + /** * Center a node in view. @@ -16552,16 +17593,23 @@ return /******/ (function(modules) { // webpackBootstrap }; + /** + * Returns the scale + * @returns {Number} + */ + Network.prototype.getCenterCoordinates = function () { + return this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); + }; module.exports = Network; /***/ }, -/* 34 */ +/* 36 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(37); + var Node = __webpack_require__(39); /** * @class Edge @@ -16600,7 +17648,8 @@ return /******/ (function(modules) { // webpackBootstrap this.value = undefined; this.selected = false; this.hover = false; - this.labelDimensions = {top:0,left:0,width:0,height:0}; + this.labelDimensions = {top:0,left:0,width:0,height:0,yLine:0}; // could be cached + this.dirtyLabel = true; this.from = null; // a node this.to = null; // a node @@ -16642,7 +17691,7 @@ return /******/ (function(modules) { // webpackBootstrap if (properties.to !== undefined) {this.toId = properties.to;} if (properties.id !== undefined) {this.id = properties.id;} - if (properties.label !== undefined) {this.label = properties.label;} + if (properties.label !== undefined) {this.label = properties.label; this.dirtyLabel = true;} if (properties.title !== undefined) {this.title = properties.title;} if (properties.value !== undefined) {this.value = properties.value;} @@ -17107,37 +18156,43 @@ return /******/ (function(modules) { // webpackBootstrap */ Edge.prototype._label = function (ctx, text, x, y) { if (text) { - // TODO: cache the calculated size ctx.font = ((this.from.selected || this.to.selected) ? "bold " : "") + - this.options.fontSize + "px " + this.options.fontFace; + this.options.fontSize + "px " + this.options.fontFace; + var yLine; + if (this.dirtyLabel == true) { + var lines = String(text).split('\n'); + var lineCount = lines.length; + var fontSize = (Number(this.options.fontSize) + 4); + yLine = y + (1 - lineCount) / 2 * fontSize; - var lines = String(text).split('\n'); - var lineCount = lines.length; - var fontSize = (Number(this.options.fontSize) + 4); - var yLine = y + (1 - lineCount) / 2 * fontSize; + var width = ctx.measureText(lines[0]).width; + for (var i = 1; i < lineCount; i++) { + var lineWidth = ctx.measureText(lines[i]).width; + width = lineWidth > width ? lineWidth : width; + } + var height = this.options.fontSize * lineCount; + var left = x - width / 2; + var top = y - height / 2; - var width = ctx.measureText(lines[0]).width; - for (var i = 1; i < lineCount; i++) { - var lineWidth = ctx.measureText(lines[i]).width; - width = lineWidth > width ? lineWidth : width; + // cache + this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; } - var height = this.options.fontSize * lineCount; - var left = x - width / 2; - var top = y - height / 2; - this.labelDimensions = {top:top,left:left,width:width,height:height}; if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { ctx.fillStyle = this.options.fontFill; - ctx.fillRect(left, top, width, height); + ctx.fillRect(this.labelDimensions.left, + this.labelDimensions.top, + this.labelDimensions.width, + this.labelDimensions.height); } // draw text ctx.fillStyle = this.options.fontColor || "black"; ctx.textAlign = "center"; ctx.textBaseline = "middle"; - + yLine = this.labelDimensions.yLine; for (var i = 0; i < lineCount; i++) { ctx.fillText(lines[i], x, yLine); yLine += fontSize; @@ -17749,7 +18804,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Edge; /***/ }, -/* 35 */ +/* 37 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); @@ -17838,7 +18893,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 36 */ +/* 38 */ /***/ function(module, exports, __webpack_require__) { /** @@ -17896,7 +18951,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 37 */ +/* 39 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); @@ -17954,6 +19009,7 @@ return /******/ (function(modules) { // webpackBootstrap this.level = -1; this.preassignedLevel = false; this.hierarchyEnumerated = false; + this.labelDimensions = {top:0,left:0,width:0,height:0,yLine:0}; // could be cached this.imagelist = imagelist; @@ -18045,7 +19101,6 @@ return /******/ (function(modules) { // webpackBootstrap ]; util.selectiveDeepExtend(fields, this.options, properties); - this.originalLabel = undefined; // basic properties if (properties.id !== undefined) {this.id = properties.id;} if (properties.label !== undefined) {this.label = properties.label; this.originalLabel = properties.label;} @@ -18630,7 +19685,7 @@ return /******/ (function(modules) { // webpackBootstrap } var defaultSize = this.width; - // scaling used for clustering + // scaling used for clustering 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; @@ -18776,36 +19831,39 @@ return /******/ (function(modules) { // webpackBootstrap Node.prototype._label = function (ctx, text, x, y, align, baseline, labelUnderNode) { if (text && Number(this.options.fontSize) * this.networkScale > this.fontDrawThreshold) { ctx.font = (this.selected ? "bold " : "") + this.options.fontSize + "px " + this.options.fontFace; - ctx.textAlign = align || "center"; - ctx.textBaseline = baseline || "middle"; var lines = text.split('\n'); var lineCount = lines.length; - var fontSize = (Number(this.options.fontSize) + 4); + var fontSize = (Number(this.options.fontSize) + 4); // TODO: why is this +4 ? var yLine = y + (1 - lineCount) / 2 * fontSize; if (labelUnderNode == true) { yLine = y + (1 - lineCount) / (2 * fontSize); } // font fill from edges now for nodes! + var width = ctx.measureText(lines[0]).width; + for (var i = 1; i < lineCount; i++) { + var lineWidth = ctx.measureText(lines[i]).width; + width = lineWidth > width ? lineWidth : width; + } + var height = this.options.fontSize * lineCount; + var left = x - width / 2; + var top = y - height / 2; + if (baseline == "top") { + top += 0.5 * fontSize; + } + this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; + + // create the fontfill background if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { - var width = ctx.measureText(lines[0]).width; - for (var i = 1; i < lineCount; i++) { - var lineWidth = ctx.measureText(lines[i]).width; - width = lineWidth > width ? lineWidth : width; - } - var height = this.options.fontSize * lineCount; - var left = x - width / 2; - var top = y - height / 2; - if (ctx.textBaseline == "top") { - top += 0.5 * fontSize; - } ctx.fillStyle = this.options.fontFill; ctx.fillRect(left, top, width, height); } // draw text ctx.fillStyle = this.options.fontColor || "black"; + ctx.textAlign = align || "center"; + ctx.textBaseline = baseline || "middle"; for (var i = 0; i < lineCount; i++) { ctx.fillText(lines[i], x, yLine); yLine += fontSize; @@ -18917,7 +19975,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 38 */ +/* 40 */ /***/ function(module, exports, __webpack_require__) { /** @@ -18999,11 +20057,17 @@ return /******/ (function(modules) { // webpackBootstrap }; /** - * Set the text for the popup window. This can be HTML code - * @param {string} text + * Set the content for the popup window. This can be HTML code or text. + * @param {string | Element} content */ - Popup.prototype.setText = function(text) { - this.frame.innerHTML = text; + Popup.prototype.setText = function(content) { + if (content instanceof Element) { + this.frame.innerHTML = ''; + this.frame.appendChild(content); + } + else { + this.frame.innerHTML = content; // string containing text or HTML + } }; /** @@ -19057,7 +20121,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 39 */ +/* 41 */ /***/ function(module, exports, __webpack_require__) { /** @@ -19762,9 +20826,9 @@ return /******/ (function(modules) { // webpackBootstrap * @param {function} fn */ function forEach2(array1, array2, fn) { - if (array1 instanceof Array) { + if (Array.isArray(array1)) { array1.forEach(function (elem1) { - if (array2 instanceof Array) { + if (Array.isArray(array2)) { array2.forEach(function (elem2) { fn(elem1, elem2); }); @@ -19775,7 +20839,7 @@ return /******/ (function(modules) { // webpackBootstrap }); } else { - if (array2 instanceof Array) { + if (Array.isArray(array2)) { array2.forEach(function (elem2) { fn(array1, elem2); }); @@ -19889,7 +20953,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 40 */ +/* 42 */ /***/ function(module, exports, __webpack_require__) { @@ -19954,22 +21018,22 @@ return /******/ (function(modules) { // webpackBootstrap exports.parseGephi = parseGephi; /***/ }, -/* 41 */ +/* 43 */ /***/ function(module, exports, __webpack_require__) { // 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__(52); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(55); /***/ }, -/* 42 */ +/* 44 */ /***/ function(module, exports, __webpack_require__) { // 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__(53); + module.exports = window['Hammer'] || __webpack_require__(54); } else { module.exports = function () { @@ -19979,54 +21043,21 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 43 */ -/***/ function(module, exports, __webpack_require__) { - - var Hammer = __webpack_require__(42); - - /** - * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent - * @param {Element} element - * @param {Event} event - */ - exports.fakeGesture = function(element, event) { - var eventType = null; - - // for hammer.js 1.0.5 - // var gesture = Hammer.event.collectEventData(this, eventType, event); - - // for hammer.js 1.0.6+ - var touches = Hammer.event.getTouchList(event, eventType); - var gesture = Hammer.event.collectEventData(this, eventType, touches, event); - - // on IE in standards mode, no touches are recognized by hammer.js, - // resulting in NaN values for center.pageX and center.pageY - if (isNaN(gesture.center.pageX)) { - gesture.center.pageX = event.pageX; - } - if (isNaN(gesture.center.pageY)) { - gesture.center.pageY = event.pageY; - } - - return gesture; - }; - - -/***/ }, -/* 44 */ +/* 45 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(50); - var Hammer = __webpack_require__(42); + var Emitter = __webpack_require__(52); + var Hammer = __webpack_require__(44); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); - var Range = __webpack_require__(15); - var TimeAxis = __webpack_require__(27); - var CurrentTime = __webpack_require__(19); - var CustomTime = __webpack_require__(20); - var ItemSet = __webpack_require__(24); - var Activator = __webpack_require__(49); + var Range = __webpack_require__(16); + var TimeAxis = __webpack_require__(29); + var CurrentTime = __webpack_require__(20); + var CustomTime = __webpack_require__(21); + var ItemSet = __webpack_require__(26); + var Activator = __webpack_require__(51); + var DateUtil = __webpack_require__(14); /** * Create a timeline visualization @@ -20191,9 +21222,13 @@ return /******/ (function(modules) { // webpackBootstrap Core.prototype.setOptions = function (options) { if (options) { // copy the known options - var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes']; + var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; util.selectiveExtend(fields, this.options, options); + if ('hiddenDates' in this.options) { + DateUtil.convertHiddenOptions(this.body, this.options.hiddenDates); + } + if ('clickToUse' in options) { if (options.clickToUse) { this.activator = new Activator(this.dom.root); @@ -20444,13 +21479,15 @@ return /******/ (function(modules) { // webpackBootstrap * option autoResize=false */ Core.prototype.redraw = function() { - var resized = false, - options = this.options, - props = this.props, - dom = this.dom; + var resized = false; + var options = this.options; + var props = this.props; + var dom = this.dom; if (!dom) return; // when destroyed + DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); + // update class names if (options.orientation == 'top') { util.addClassName(dom.root, 'top'); @@ -20634,11 +21671,9 @@ return /******/ (function(modules) { // webpackBootstrap */ // TODO: move this function to Range Core.prototype._toTime = function(x) { - var conversion = this.range.conversion(this.props.center.width); - return new Date(x / conversion.scale + conversion.offset); + return DateUtil.toTime(this.body, this.range, x, this.props.center.width); }; - /** * Convert a position on the global screen (pixels) to a datetime * @param {int} x Position on the screen in pixels @@ -20647,8 +21682,9 @@ return /******/ (function(modules) { // webpackBootstrap */ // TODO: move this function to Range Core.prototype._toGlobalTime = function(x) { - var conversion = this.range.conversion(this.props.root.width); - return new Date(x / conversion.scale + conversion.offset); + return DateUtil.toTime(this.body, this.range, x, this.props.root.width); + //var conversion = this.range.conversion(this.props.root.width); + //return new Date(x / conversion.scale + conversion.offset); }; /** @@ -20660,11 +21696,11 @@ return /******/ (function(modules) { // webpackBootstrap */ // TODO: move this function to Range Core.prototype._toScreen = function(time) { - var conversion = this.range.conversion(this.props.center.width); - return (time.valueOf() - conversion.offset) * conversion.scale; + return DateUtil.toScreen(this, time, this.props.center.width); }; + /** * Convert a datetime (Date object) into a position on the root * This is used to get the pixel density estimate for the screen, not the center panel @@ -20675,8 +21711,9 @@ return /******/ (function(modules) { // webpackBootstrap */ // TODO: move this function to Range Core.prototype._toGlobalScreen = function(time) { - var conversion = this.range.conversion(this.props.root.width); - return (time.valueOf() - conversion.offset) * conversion.scale; + return DateUtil.toScreen(this, time, this.props.root.width); + //var conversion = this.range.conversion(this.props.root.width); + //return (time.valueOf() - conversion.offset) * conversion.scale; }; @@ -20842,7 +21879,41 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 45 */ +/* 46 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(44); + + /** + * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent + * @param {Element} element + * @param {Event} event + */ + exports.fakeGesture = function(element, event) { + var eventType = null; + + // for hammer.js 1.0.5 + // var gesture = Hammer.event.collectEventData(this, eventType, event); + + // for hammer.js 1.0.6+ + var touches = Hammer.event.getTouchList(event, eventType); + var gesture = Hammer.event.collectEventData(this, eventType, touches, event); + + // on IE in standards mode, no touches are recognized by hammer.js, + // resulting in NaN values for center.pageX and center.pageY + if (isNaN(gesture.center.pageX)) { + gesture.center.pageX = event.pageX; + } + if (isNaN(gesture.center.pageY)) { + gesture.center.pageY = event.pageY; + } + + return gesture; + }; + + +/***/ }, +/* 47 */ /***/ function(module, exports, __webpack_require__) { // English @@ -20863,7 +21934,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 46 */ +/* 48 */ /***/ function(module, exports, __webpack_require__) { // English @@ -20904,7 +21975,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 47 */ +/* 49 */ /***/ function(module, exports, __webpack_require__) { /** @@ -21135,16 +22206,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 48 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { - var PhysicsMixin = __webpack_require__(60); - var ClusterMixin = __webpack_require__(54); - var SectorsMixin = __webpack_require__(55); - var SelectionMixin = __webpack_require__(56); - var ManipulationMixin = __webpack_require__(57); - var NavigationMixin = __webpack_require__(58); - var HierarchicalLayoutMixin = __webpack_require__(59); + var PhysicsMixin = __webpack_require__(62); + var ClusterMixin = __webpack_require__(56); + var SectorsMixin = __webpack_require__(57); + var SelectionMixin = __webpack_require__(58); + var ManipulationMixin = __webpack_require__(59); + var NavigationMixin = __webpack_require__(60); + var HierarchicalLayoutMixin = __webpack_require__(61); /** * Load a mixin into the network object @@ -21339,12 +22410,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 49 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { - var mousetrap = __webpack_require__(51); - var Emitter = __webpack_require__(50); - var Hammer = __webpack_require__(42); + var mousetrap = __webpack_require__(53); + var Emitter = __webpack_require__(52); + var Hammer = __webpack_require__(44); var util = __webpack_require__(1); /** @@ -21491,7 +22562,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 50 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { @@ -21661,7 +22732,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 51 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { /** @@ -22466,5037 +23537,5037 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 52 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.8.3 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + 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 (undefined) { - /************************************ - Constants - ************************************/ - - var moment, - VERSION = '2.8.3', - // the global-scope this is NOT the global object in Node.js - globalScope = typeof global !== 'undefined' ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, + (function(window, undefined) { + 'use strict'; - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ - // internal storage for locale config files - locales = {}, + /** + * 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 || {}); + }; - // extra moment internal properties (plugins register props here) - momentProperties = [], + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module.exports), + /** + * 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', - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + /** + * 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', - // 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)$/, + /** + * 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', - // 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, + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - // 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}/, + /** + * 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', - //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 + /** + * 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)' + } + }; - // 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)?)?$/, + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - 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}/] - ], + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - // 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/] - ], + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + /** + * 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; - // 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 - }, + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; - 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' - }, + /** + * 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 = {}; - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, - - // format function strings - formatFunctions = {}, + /** + * 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'; - // 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 - }, + /** + * 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'; - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + /** + * 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'; - 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(); - } - }, + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - deprecations = {}, + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - // 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'); - } + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; } - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } + // find what eventtypes we add listeners to + Event.determineEventTypes(); - 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 - }; - } + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } + // Hammer is ready...! + Hammer.READY = true; + } - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = 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]; } - } - - 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); - }; - } - - 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); + return dest; + }, + /** + * 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); + }, - /************************************ - Constructors - ************************************/ + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - function Locale() { - } + /** + * 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; - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); + // 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; + } + } } - copyConfig(this, config); - this._d = new Date(+config._d); - } - - // 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; - - // 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; - - this._data = {}; - - this._locale = moment.localeData(); + }, - this._bubble(); - } + /** + * 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; + }, - /************************************ - Helpers - ************************************/ + /** + * 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; + } + }, + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; + /** + * 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; + }, - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } + /** + * 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; - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; } - return a; - } + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - function copyConfig(to, from) { - var i, prop, val; + 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 + }; + }, - 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; - } + /** + * 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 + }; + }, - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } + /** + * 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; - return to; - } + return Math.atan2(y, x) * 180 / Math.PI; + }, - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); + + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; } - } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - // 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; + /** + * 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; - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } + return Math.sqrt((x * x) + (y * y)); + }, - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + } + return 1; + }, - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; + /** + * 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; + }, - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + /** + * 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; + }, - return res; - } + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - function 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; + 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); + } + + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } } + }, - return res; - } + /** + * 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; + } - // 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; - } + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; + var falseFn = toggle && function() { + return false; }; - } - - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; } - if (updateOffset) { - moment.updateOffset(mom, days || months); + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; } - } + }, - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); } + }; - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } + /** + * @module hammer + */ + /** + * @class Event + * @static + */ + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } + /** + * 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); + }); + }, - return normalizedInput; - } + /** + * 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); + }); + }, - function makeList(field) { - var count, setter; + /** + * 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; - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; + // 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 (typeof format === 'number') { - index = format; - format = undefined; + // 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; } - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; - - if (index != null) { - return getter(index); + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; + + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); } - }; - } - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; + // ...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 (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); } - } + }; - return value; - } + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } + /** + * 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; - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + // 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; - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + // 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; + } - 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; + // detection has been started, we keep track of this, see above + this.started = true; - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - m._pf.overflow = overflow; + // 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); } - } - 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; + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0; - } - } - return m._isValid; - } + handler.call(Detection, evData); - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + evData.eventType = triggerType; + delete evData.changedLength; + } - // 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; + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; } - 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) { } + return triggerType; + }, + + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; } - 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(); - } + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - /************************************ - Locale - ************************************/ + /** + * 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(); + } + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } - extend(Locale.prototype, { + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); } - } - }, + identifiers.push(touch.identifier); + }); - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + return touchList; + } - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - monthsParse : function (monthName) { - var i, mom, regex; + /** + * 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; + } - if (!this._monthsParse) { - this._monthsParse = []; - } + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, - 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; - } - } - }, + /** + * 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(); + }, - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, - - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, - - weekdaysParse : function (weekdayName) { - var i, mom, regex; - - if (!this._weekdaysParse) { - this._weekdaysParse = []; + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); } + }; + } + }; - 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; - } - } - }, - _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; - }, + /** + * @module hammer + * + * @class PointerEvent + * @static + */ + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - 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'); - }, + /** + * 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; + }, - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, + /** + * 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; + } + }, - _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; - }, + /** + * 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; + } - _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' - }, + var pt = ev.pointerType, + types = {}; - 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); - }, + 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]; + }, - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; + } + }; - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - preparse : function (string) { - return string; - }, + /** + * @module hammer + * + * @class Detection + * @static + */ + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - postformat : function (string) { - return string; - }, + // data of the current Hammer.gesture detection session + current: null, - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: 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. - }, + // when this becomes true, no gestures are fired + stopped: false, - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; + /** + * 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; } - }); - - /************************************ - Formatting - ************************************/ + this.stopped = false; - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } + // 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 + }; - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + this.detect(eventData); + }, - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; } - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); + + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; + + // 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); } - return output; - }; - } + }, this); - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; } - format = expandFormat(format, m.localeData()); - - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); + if(eventData.eventType == EVENT_END) { + this.stopDetect(); } - return formatFunctions[format](m); - } + return eventData; + }, - function expandFormat(format, locale) { - var i = 5; + /** + * 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); - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; + // 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; + + 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; } - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; } - return format; - } + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - /************************************ - Parsing - ************************************/ + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, + /** + * 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; - // 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; + // 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 + }); + }); } - } - 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]); + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - return parts[0] === '+' ? -minutes : minutes; - } + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + Utils.extend(ev, { + startEvent: startEv, - 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); - } + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - 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); - } - } + 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) + }); - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + return ev; + }, - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + /** + * 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; + } - // 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; + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + // set its index + gesture.index = gesture.index || 1000; - 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; + // add Hammer.gesture to the list + this.gestures.push(gesture); + + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + if(a.index > b.index) { + return 1; + } + return 0; + }); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; + return this.gestures; } + }; - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; - if (config._d) { - return; - } + /** + * @module hammer + */ - currentDate = currentDateArray(config); + /** + * create new hammer instance + * all methods should return the instance itself, so it is chainable. + * + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} + */ + Hammer.Instance = function(element, options) { + var self = this; - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + /** + * 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; + }); - // 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]; - } + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - // 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]; - } + // 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); + } - 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); + /** + * 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); } - } + }); - function dateFromObject(config) { - var normalizedInput; + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; - if (config._d) { - return; - } + 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; + }, - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - dateFromConfig(config); - } + 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; + }, - 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()]; + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; } - } - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; + // 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; } - config._a = []; - config._pf.empty = true; + element.dispatchEvent(event); + return this; + }, - // 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; + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - 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); - } - } + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); } - // 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; - } + this.eventHandlers = []; - dateFromConfig(config); - checkOverflow(config); - } + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); + return null; } + }; - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + /** + * @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 + */ - scoreToBeat, - i, - currentScore; + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } + function dragGesture(ev, inst) { + var cur = Detection.current; - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); - - if (!isValid(tempConfig)) { - continue; - } - - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; + } - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - tempConfig._pf.score = currentScore; + 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; + } - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + var startCenter = cur.startEvent.center; - extend(config, bestMoment || tempConfig); - } + // 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; - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - 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; + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; + + // 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; + } } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - 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); - } - } + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } + var isVertical = Utils.isVertical(ev.direction); - 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); + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); + case EVENT_END: + triggered = false; + break; } - 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; - } - } - } - return input; - } + 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, - /************************************ - Relative Time - ************************************/ + /** + * 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 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + /** + * prevent 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, - 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')), + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - 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]; - - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); - } - - - /************************************ - Week of Year - ************************************/ - - - // 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; - } + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; + /** + * 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'); - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; + /** + * @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); } + }; - //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; - - 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; + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; - } + /** + * @param {String} name + */ + (function(name) { + var timer; - /************************************ - Top Level Functions - ************************************/ + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - function makeMoment(config) { - var input = config._i, - format = config._f; + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); - config._locale = config._locale || moment.localeData(config._l); + // set the gesture so we can check in the timeout if it still is + current.name = name; - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + // 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; - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); + case EVENT_RELEASE: + clearTimeout(timer); + break; } - - return new Moment(config); } - moment = function (input, format, locale, strict) { - var c; - - 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(); + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, - return makeMoment(c); + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture }; + })('hold'); - moment.suppressDeprecationWarnings = false; - - 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); - } - ); - - // 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]; - } + /** + * @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); } - return res; } + }; - moment.min = function () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - }; - - moment.max = function () { - var args = [].slice.call(arguments, 0); - - return pickBy('isAfter', args); - }; - - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + /** + * @module gestures + */ + /** + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Swipe + * @static + */ + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - if (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(); + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - return makeMoment(c).utc(); - }; + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - 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; + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; } - } 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; + // 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); + } } + } + }; - ret = new Duration(duration); - - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._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 + */ - return ret; - }; + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - // version number - moment.version = VERSION; + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - // default format - moment.defaultFormat = isoFormat; + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + 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; - // 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 () {}; + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - // 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]; + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; } - relativeTimeThresholds[threshold] = limit; - return true; - }; + } - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); - } - ); - - // 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); - } - - if (data) { - moment.duration._locale = moment._locale = data; - } - } + 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, - return moment._locale._abbr; - }; + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - // backwards compat for now: also set the locale - moment.locale(name); + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 } }; + })('tap'); - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); - } - ); - - // returns locale data - moment.localeData = function (key) { - var locale; + /** + * @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, - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; + /** + * 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 (!key) { - return moment._locale; + if(inst.options.preventDefault) { + ev.preventDefault(); } - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); } + } + }; - return chooseLocale(key); - }; + /** + * @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 + */ - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); - } + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - return m; - }; + // we are transforming! + Detection.current.name = name; - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + inst.trigger(name, ev); // basic transform event - /************************************ - Moment Prototype - ************************************/ + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - extend(moment.fn = Moment.prototype, { + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + } + } - clone : function () { - return moment(this); - }, + 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, - valueOf : function () { - return +this._d + ((this._offset || 0) * 60000); + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 }, - unix : function () { - return Math.floor(+this / 1000); - }, + handler: transformGesture + }; + })('transform'); - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, + /** + * @module hammer + */ - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + // 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; + } - 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]'); - } - }, + })(window); - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { - isValid : function () { - return isValid(this); - }, + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.8.3 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + (function (undefined) { + /************************************ + Constants + ************************************/ - return false; - }, + var moment, + VERSION = '2.8.3', + // the global-scope this is NOT the global object in Node.js + globalScope = typeof global !== 'undefined' ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - parsingFlags : function () { - return extend({}, this._pf); - }, + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - invalidAt: function () { - return this._pf.overflow; - }, + // internal storage for locale config files + locales = {}, - utc : function (keepLocalTime) { - return this.zone(0, keepLocalTime); - }, + // extra moment internal properties (plugins register props here) + momentProperties = [], - local : function (keepLocalTime) { - if (this._isUTC) { - this.zone(0, keepLocalTime); - this._isUTC = false; + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module.exports), - if (keepLocalTime) { - this.add(this._dateTzOffset(), 'm'); - } - } - return this; - }, + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + // 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)$/, - add : createAdder(1, 'add'), + // 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, - subtract : createAdder(-1, 'subtract'), + // 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}/, - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (this.zone() - that.zone()) * 6e4, - diff, output, daysAdjust; + //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 - units = normalizeUnits(units); + // 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)?)?$/, - if (units === 'year' || units === 'month') { - // average number of days in the months in the given dates - diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 - // difference in months - output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); - // adjust by taking difference in days, average number of days - // and dst in the given months. - daysAdjust = (this - moment(this).startOf('month')) - - (that - moment(that).startOf('month')); - // same as above but with zones, to negate all dst - daysAdjust -= ((this.zone() - moment(this).startOf('month').zone()) - - (that.zone() - moment(that).startOf('month').zone())) * 6e4; - output += daysAdjust / diff; - if (units === 'year') { - output = output / 12; - } - } else { - diff = (this - that); - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + 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}/] + ], - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + // 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/] + ], - 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)); + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, + + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 }, - isLeapYear : function () { - return isLeapYear(this.year()); - }, - - isDST : function () { - return (this.zone() < this.clone().month(0).zone() || - this.zone() < this.clone().month(5).zone()); + 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' }, - 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; - } + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' }, - month : makeAccessor('Month', 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 */ - } - - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + // format function strings + formatFunctions = {}, - return this; + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year }, - endOf: function (units) { - units = normalizeUnits(units); - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - isAfter: function (input, units) { - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - return +this.clone().startOf(units) > +moment(input).startOf(units); + 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(); } }, - isBefore: function (input, units) { - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - return +this.clone().startOf(units) < +moment(input).startOf(units); - } - }, + deprecations = {}, - isSame: function (input, units) { - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); - } - }, + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), - - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + // 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'); + } + } - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - zone : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = timezoneMinutesFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateTzOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.subtract(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(offset - input, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } - } else { - return this._isUTC ? offset : this._dateTzOffset(); - } - return this; - }, + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + 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 + }; + } - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } - parseZone : function () { - if (this._tzm) { - this.zone(this._tzm); - } else if (typeof this._i === 'string') { - this.zone(this._i); + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; } - return this; - }, + return fn.apply(this, arguments); + }, fn); + } - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).zone(); - } + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } - return (this.zone() - input) % 60 === 0; - }, + 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); + }; + } - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + 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); - 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'); - }, - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + /************************************ + Constructors + ************************************/ - 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'); - }, + function Locale() { + } - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + } - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + // 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; - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + // 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; - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, + this._data = {}; - 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); - }, + this._locale = moment.localeData(); - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + this._bubble(); + } - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + /************************************ + Helpers + ************************************/ - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, - set : function (units, value) { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; } - return this; - }, - - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + } - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - lang : deprecate( - 'moment().lang() is deprecated. Use moment().localeData() instead.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } - localeData : function () { - return this._locale; - }, + return a; + } - _dateTzOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return Math.round(this._d.getTimezoneOffset() / 15) * 15; - } - }); + function copyConfig(to, from) { + var i, prop, val; - function rawMonthSetter(mom, value) { - var dayOfMonth; + 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; + } - // 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 (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } } } - 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](); + return to; } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); + function absRound(number) { + if (number < 0) { + return Math.ceil(number); } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + return Math.floor(number); } } - 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); - } - }; + // 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 (sign ? (forceSign ? '+' : '') : '-') + output; } - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - // 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; + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - /************************************ - Duration Prototype - ************************************/ + return res; + } + 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; + } - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; + return res; } - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; } - extend(moment.duration.fn = Duration.prototype, { + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + 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); + } + } - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + // 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; + } - hours = absRound(minutes / 60); - data.hours = hours % 24; + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - days += absRound(hours / 24); + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); - - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + return normalizedInput; + } - data.days = days; - data.months = months; - data.years = years; - }, + function makeList(field) { + var count, setter; - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } - 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[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; - return this; - }, + if (typeof format === 'number') { + index = format; + format = undefined; + } - weeks : function () { - return absRound(this.days() / 7); - }, + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); } + } - return this.localeData().postformat(output); - }, + return value; + } - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } - this._bubble(); + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - return this; - }, + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - subtract : function (input, val) { - var dur = moment.duration(input, val); + 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; - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } - this._bubble(); + m._pf.overflow = overflow; + } + } - return this; - }, + 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; - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0; + } + } + return m._isValid; + } - as : function (units) { - var days, months; - units = normalizeUnits(units); + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + yearsToDays(this._months / 12); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; } + j--; } - }, + i++; + } + return null; + } - lang : moment.fn.lang, - locale : moment.fn.locale, + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), + // 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(); + } - 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); + /************************************ + Locale + ************************************/ - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - 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' : ''); + extend(Locale.prototype, { + + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } }, - localeData : function () { - return this._locale; - } - }); + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - moment.duration.fn.toString = moment.duration.fn.toISOString; + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; - } + monthsParse : function (monthName) { + var i, mom, regex; - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); - } - } + if (!this._monthsParse) { + this._monthsParse = []; + } - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + 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; + } + } + }, - /************************************ - Default Locale - ************************************/ + _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()]; + }, - // 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; - } - }); + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - /* EMBED_LOCALES */ + weekdaysParse : function (weekdayName) { + var i, mom, regex; - /************************************ - Exposing Moment - ************************************/ + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - 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; - } - } + 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; + } + } + }, - // 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; + _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; + }, - 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__(65)(module))) + 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'); + }, -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, - 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 */ + _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; + }, - (function(window, undefined) { - 'use strict'; + _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' + }, - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - /** - * Hammer, 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 || {}); - }; + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} - */ - Hammer.VERSION = '1.1.3'; + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', - /** - * 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', + preparse : function (string) { + return string; + }, - /** - * 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', + postformat : function (string) { + return string; + }, - /** - * 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', + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + _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. + }, - /** - * 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', + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); - /** - * 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)' + /************************************ + Formatting + ************************************/ + + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); } - }; - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} - */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + 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; + }; + } - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - /** - * 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; + format = expandFormat(format, m.localeData()); - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } - /** - * 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 = {}; + return formatFunctions[format](m); + } - /** - * 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'; + function expandFormat(format, locale) { + var i = 5; - /** - * 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'; + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } - /** - * 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'; + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; + return format; + } - /** - * 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 || {}; + /************************************ + Parsing + ************************************/ - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private - */ - function setup() { - if(Hammer.READY) { - return; + + // 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; + } + + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; + + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input); + // 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); + } + + 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); + } } - // find what eventtypes we add listeners to - Event.determineEventTypes(); + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + // 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; - // Hammer is ready...! - Hammer.READY = true; - } + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - /** - * @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; + 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; } - dest[key] = src[key]; } - return dest; - }, - - /** - * 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); - }, + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - /** - * 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); - }, + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } - /** - * 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; + // 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; - // 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; - } - } + if (config._d) { + return; } - }, - /** - * 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; - }, + currentDate = currentDateArray(config); - /** - * 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; + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); } - }, - /** - * 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); - }, + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - /** - * 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; + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; } - node = node.parentNode; + + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); } - return false; - }, - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + // 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]; + } - // 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 - }; + // 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]; } - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + 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 { - 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 - }; - }, + function dateFromObject(config) { + var normalizedInput; - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + if (config._d) { + return; + } - /** - * 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; + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - return Math.atan2(y, x) * 180 / Math.PI; - }, + dateFromConfig(config); + } - /** - * 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); + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + config._a = []; + config._pf.empty = true; - return Math.sqrt((x * x) + (y * y)); - }, + // 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; - /** - * 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]); + 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); + } } - return 1; - }, - /** - * 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]); + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); } - return 0; - }, - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + // 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; + } - /** - * 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); + dateFromConfig(config); + checkOverflow(config); + } - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; + if (!isValid(tempConfig)) { + continue; } - } - }, - /** - * 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; + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; + + tempConfig._pf.score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } } - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + extend(config, bestMoment || tempConfig); + } - var falseFn = toggle && function() { - return false; - }; + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; + 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; } - }, - - /** - * 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(); - }); } - }; + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } - /** - * @module hammer - */ - /** - * @class Event - * @static - */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + 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); - /** - * 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); - }); - }, + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } - /** - * 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); - }); - }, + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } - /** - * 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; + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + /************************************ + Relative Time + ************************************/ - // 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; - // 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; - } + // 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); + } - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + 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')), - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + 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]; - // ...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 - } + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); + } - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + /************************************ + Week of Year + ************************************/ - /** - * 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; - // 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; + // 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; - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; } - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; } - // detection has been started, we keep track of this, see above - this.started = true; + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + //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; - // 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); - } + 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; - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } - handler.call(Detection, evData); + /************************************ + Top Level Functions + ************************************/ - evData.eventType = triggerType; - delete evData.changedLength; - } + function makeMoment(config) { + var input = config._i, + format = config._f; - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + config._locale = config._locale || moment.localeData(config._l); - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); } - return triggerType; - }, + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } - /** - * 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' - ]; + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; + makeDateFromStringAndFormat(config); } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; + makeDateFromInput(config); } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + return new Moment(config); + } - /** - * 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(); + moment = function (input, format, locale, strict) { + var c; + + 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(); - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; + return makeMoment(c); + }; + + moment.suppressDeprecationWarnings = false; + + 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); + } + ); + + // 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; + } - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; + moment.min = function () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + }; - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); + moment.max = function () { + var args = [].slice.call(arguments, 0); - return touchList; - } + return pickBy('isAfter', args); + }; - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; - /** - * 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; + 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(); - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + return makeMoment(c).utc(); + }; - /** - * 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(); - }, + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; } - }; - } - }; - + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - /** - * @module hammer - * - * @class PointerEvent - * @static - */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } - /** - * 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; - }, + ret = new Duration(duration); - /** - * 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; + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; } - }, - /** - * 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; - } + return ret; + }; - var pt = ev.pointerType, - types = {}; + // version number + moment.version = VERSION; - 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]; - }, + // default format + moment.defaultFormat = isoFormat; - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; - } - }; + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - /** - * @module hammer - * - * @class Detection - * @static - */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], + // 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 () {}; - // data of the current Hammer.gesture detection session - current: null, + // 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; + }; - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); - // when this becomes true, no gestures are fired - stopped: false, + // 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); + } - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; + if (data) { + moment.duration._locale = moment._locale = data; + } } - this.stopped = false; + return moment._locale._abbr; + }; - // 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 - }; + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); - this.detect(eventData); - }, + // backwards compat for now: also set the locale + moment.locale(name); - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; } + }; - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); + } + ); - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + // returns locale data + moment.localeData = function (key) { + var locale; - // 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); + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; + if (!key) { + return moment._locale; } - if(eventData.eventType == EVENT_END) { - this.stopDetect(); + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; } - return eventData; - }, + return chooseLocale(key); + }; - /** - * 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); + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; - // reset the current - this.current = null; - this.stopped = true; - }, + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; - /** - * 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; + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } - 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; - } + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); } - - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); - - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; + else { + m._pf.userInvalidated = true; } - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, + return m; + }; - /** - * 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; + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - // 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 - }); - }); - } + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + /************************************ + Moment Prototype + ************************************/ - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - Utils.extend(ev, { - startEvent: startEv, + extend(moment.fn = Moment.prototype, { - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + clone : function () { + return moment(this); + }, - 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) - }); + valueOf : function () { + return +this._d + ((this._offset || 0) * 60000); + }, - return ev; - }, + unix : function () { + return Math.floor(+this / 1000); + }, - /** - * 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; - } + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - // set its index - gesture.index = gesture.index || 1000; + 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]'); + } + }, - // add Hammer.gesture to the list - this.gestures.push(gesture); + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, - // 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; + 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; } - return 0; - }); - return this.gestures; - } - }; + return false; + }, + parsingFlags : function () { + return extend({}, this._pf); + }, - /** - * @module hammer - */ + invalidAt: function () { + return this._pf.overflow; + }, - /** - * 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; + utc : function (keepLocalTime) { + return this.zone(0, keepLocalTime); + }, - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + local : function (keepLocalTime) { + if (this._isUTC) { + this.zone(0, keepLocalTime); + this._isUTC = false; - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + if (keepLocalTime) { + this.add(this._dateTzOffset(), 'm'); + } + } + return this; + }, - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, - /** - * 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; - }); + add : createAdder(1, 'add'), - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + subtract : createAdder(-1, 'subtract'), - // 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); - } + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (this.zone() - that.zone()) * 6e4, + diff, output, daysAdjust; - /** - * 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); - } - }); + units = normalizeUnits(units); - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + if (units === 'year' || units === 'month') { + // average number of days in the months in the given dates + diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 + // difference in months + output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); + // adjust by taking difference in days, average number of days + // and dst in the given months. + daysAdjust = (this - moment(this).startOf('month')) - + (that - moment(that).startOf('month')); + // same as above but with zones, to negate all dst + daysAdjust -= ((this.zone() - moment(this).startOf('month').zone()) - + (that.zone() - moment(that).startOf('month').zone())) * 6e4; + output += daysAdjust / diff; + if (units === 'year') { + output = output / 12; + } + } else { + diff = (this - that); + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, - 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; - }, + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, - 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; - }, + 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)); + }, - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + isLeapYear : function () { + return isLeapYear(this.year()); + }, - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + isDST : function () { + return (this.zone() < this.clone().month(0).zone() || + this.zone() < this.clone().month(5).zone()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, - // trigger 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; - } + month : makeAccessor('Month', true), - element.dispatchEvent(event); - return this; - }, + 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 */ + } - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + return this; + }, - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + endOf: function (units) { + units = normalizeUnits(units); + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, - this.eventHandlers = []; + isAfter: function (input, units) { + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + return +this.clone().startOf(units) > +moment(input).startOf(units); + } + }, - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + isBefore: function (input, units) { + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + return +this.clone().startOf(units) < +moment(input).startOf(units); + } + }, - return null; - } - }; + isSame: function (input, units) { + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); + } + }, + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), - /** - * @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 - */ + 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; + } + ), - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + zone : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = timezoneMinutesFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateTzOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.subtract(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(offset - input, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } + } + } else { + return this._isUTC ? offset : this._dateTzOffset(); + } + return this; + }, - function dragGesture(ev, inst) { - var cur = Detection.current; + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + parseZone : function () { + if (this._tzm) { + this.zone(this._tzm); + } else if (typeof this._i === 'string') { + this.zone(this._i); + } + return this; + }, - 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; - } + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).zone(); + } + + return (this.zone() - input) % 60 === 0; + }, - var startCenter = cur.startEvent.center; + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - // 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; + 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'); + }, - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + 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'); + }, - // 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; - } - } + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - var isVertical = Utils.isVertical(ev.direction); + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + 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); + }, - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, - case EVENT_END: - triggered = false; - break; - } - } + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, - 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, + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, - /** - * 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 : function (units, value) { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + return this; + }, - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; - /** - * 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, + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + }, - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + lang : deprecate( + 'moment().lang() is deprecated. Use moment().localeData() instead.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), - /** - * 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, + localeData : function () { + return this._locale; + }, - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 + _dateTzOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return Math.round(this._d.getTimezoneOffset() / 15) * 15; } - }; - })('drag'); + }); - /** - * @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 rawMonthSetter(mom, value) { + var dayOfMonth; - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ + // 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; + } + } + + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - /** - * @param {String} name - */ - (function(name) { - var timer; + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + 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); + } + }; + } - // set the gesture so we can check in the timeout if it still is - current.name = name; + 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)); - // 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; + // 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; - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - case EVENT_RELEASE: - clearTimeout(timer); - break; - } - } + /************************************ + Duration Prototype + ************************************/ - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } - /** - * @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); - } + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; } - }; - /** - * @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, + extend(moment.duration.fn = Duration.prototype, { - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } + hours = absRound(minutes / 60); + data.hours = hours % 24; - // 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); - } - } - } - }; + days += absRound(hours / 24); - /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); + + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; - /** - * @param {String} name - */ - (function(name) { - var hasMoved = false; + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + data.days = days; + data.months = months; + data.years = years; + }, - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + 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); - 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; + return this; + }, - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + weeks : function () { + return absRound(this.days() / 7); + }, - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, - 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, + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + return this.localeData().postformat(output); + }, - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - /** - * @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, + this._bubble(); - /** - * 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; - } + return this; + }, - if(inst.options.preventDefault) { - ev.preventDefault(); - } + subtract : function (input, val) { + var dur = moment.duration(input, val); - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } - } - }; + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - /** - * @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 - */ + this._bubble(); - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + return this; + }, - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; + as : function (units) { + var days, months; + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + yearsToDays(this._months / 12); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); } + } + }, - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + lang : moment.fn.lang, + locale : moment.fn.locale, - // 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; - } + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), - // we are transforming! - Detection.current.name = name; + 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); - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } - inst.trigger(name, ev); // basic transform event + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } + localeData : function () { + return this._locale; + } + }); - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + moment.duration.fn.toString = moment.duration.fn.toISOString; - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } + + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); } } - 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, + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + /************************************ + Default Locale + ************************************/ - handler: transformGesture - }; - })('transform'); - /** - * @module hammer - */ + // 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; + } + }); - // 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; - } + /* EMBED_LOCALES */ - })(window); + /************************************ + 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__(67)(module))) /***/ }, -/* 54 */ +/* 56 */ /***/ function(module, exports, __webpack_require__) { /** @@ -27870,7 +28941,7 @@ return /******/ (function(modules) { // webpackBootstrap // undo the changes from the clustering operation on the parent node parentNode.options.mass -= childNode.options.mass; parentNode.clusterSize -= childNode.clusterSize; - parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*(parentNode.clusterSize-1)); parentNode.dynamicEdgesLength = parentNode.dynamicEdges.length; // place the child node near the parent, not at the exact same location to avoid chaos in the system @@ -28639,10 +29710,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 55 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); + var Node = __webpack_require__(39); /** * Creation of the SectorMixin var. @@ -29181,7 +30253,7 @@ return /******/ (function(modules) { // webpackBootstrap node.y = 0.5 * (maxY + minY); node.width = 2 * (node.x - minX); node.height = 2 * (node.y - minY); - node.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); + node.options.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); node.setScale(this.scale); node._drawCircle(ctx); } @@ -29197,10 +30269,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 56 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { - var Node = __webpack_require__(37); + var Node = __webpack_require__(39); /** * This function can be called from the _doInAllSectors function @@ -29605,7 +30677,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Boolean} [doNotTrigger] | ignore trigger * @private */ - exports._selectObject = function(object, append, doNotTrigger, highlightEdges) { + exports._selectObject = function(object, append, doNotTrigger, highlightEdges, overrideSelectable) { if (doNotTrigger === undefined) { doNotTrigger = false; } @@ -29617,13 +30689,19 @@ return /******/ (function(modules) { // webpackBootstrap this._unselectAll(true); } - if (object.selected == false) { + // selectable allows the object to be selected. Override can be used if needed to bypass this. + if (object.selected == false && (this.constants.selectable == true || overrideSelectable)) { object.select(); this._addToSelection(object); if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { this._selectConnectedEdges(object); } } + // do not select the object if selectable is false, only add it to selection to allow drag to work + else if (object.selected == false) { + this._addToSelection(object); + doNotTrigger = true; + } else { object.unselect(); this._removeFromSelection(object); @@ -29691,12 +30769,12 @@ return /******/ (function(modules) { // webpackBootstrap exports._handleTap = function(pointer) { var node = this._getNodeAt(pointer); if (node != null) { - this._selectObject(node,false); + this._selectObject(node, false); } else { var edge = this._getEdgeAt(pointer); if (edge != null) { - this._selectObject(edge,false); + this._selectObject(edge, false); } else { this._unselectAll(); @@ -29747,15 +30825,18 @@ return /******/ (function(modules) { // webpackBootstrap /** - * handle the onRelease event. These functions are here for the navigation controls module. + * handle the onRelease event. These functions are here for the navigation controls module + * and data manipulation module. * * @private */ exports._handleOnRelease = function(pointer) { - + this._manipulationReleaseOverload(pointer); + this._navigationReleaseOverload(pointer); }; - + exports._manipulationReleaseOverload = function (pointer) {}; + exports._navigationReleaseOverload = function (pointer) {}; /** * @@ -29776,9 +30857,11 @@ return /******/ (function(modules) { // webpackBootstrap */ exports.getSelectedNodes = function() { var idArray = []; - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - idArray.push(nodeId); + if (this.constants.selectable == true) { + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + idArray.push(nodeId); + } } } return idArray @@ -29792,9 +30875,11 @@ return /******/ (function(modules) { // webpackBootstrap */ exports.getSelectedEdges = function() { var idArray = []; - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - idArray.push(edgeId); + if (this.constants.selectable == true) { + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + idArray.push(edgeId); + } } } return idArray; @@ -29802,32 +30887,12 @@ return /******/ (function(modules) { // webpackBootstrap /** - * select zero or more nodes + * select zero or more nodes DEPRICATED * @param {Number[] | String[]} selection An array with the ids of the * selected nodes. */ - exports.setSelection = function(selection) { - var i, iMax, id; - - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; - - // first unselect any selected node - this._unselectAll(true); - - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; - - var node = this.nodes[id]; - if (!node) { - throw new RangeError('Node with id "' + id + '" not found'); - } - this._selectObject(node,true,true); - } - + exports.setSelection = function() { console.log("setSelection is deprecated. Please use selectNodes instead.") - - this.redraw(); }; @@ -29853,7 +30918,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!node) { throw new RangeError('Node with id "' + id + '" not found'); } - this._selectObject(node,true,true,highlightEdges); + this._selectObject(node,true,true,highlightEdges,true); } this.redraw(); }; @@ -29880,7 +30945,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!edge) { throw new RangeError('Edge with id "' + id + '" not found'); } - this._selectObject(edge,true,true,highlightEdges); + this._selectObject(edge,true,true,false,true); } this.redraw(); }; @@ -29908,12 +30973,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 57 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(37); - var Edge = __webpack_require__(34); + var Node = __webpack_require__(39); + var Edge = __webpack_require__(36); /** * clears the toolbar div element of children @@ -29924,6 +30989,11 @@ return /******/ (function(modules) { // webpackBootstrap while (this.manipulationDiv.hasChildNodes()) { this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); } + + this._manipulationReleaseOverload = function () {}; + delete this.sectors['support']['nodes']['targetNode']; + delete this.sectors['support']['nodes']['targetViaNode']; + this.controlNodesActive = false; }; /** @@ -30132,11 +31202,11 @@ return /******/ (function(modules) { // webpackBootstrap // temporarily overload functions this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_handleOnRelease"] = this._handleOnRelease; + this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; this.cachedFunctions["_handleDragStart"] = this._handleDragStart; this.cachedFunctions["_handleDragEnd"] = this._handleDragEnd; this._handleTouch = this._handleConnect; - this._handleOnRelease = function () {}; + this._manipulationReleaseOverload = function () {}; this._handleDragStart = function () {}; this._handleDragEnd = this._finishConnect; @@ -30176,7 +31246,7 @@ return /******/ (function(modules) { // webpackBootstrap // temporarily overload functions this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_handleOnRelease"] = this._handleOnRelease; + this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; this.cachedFunctions["_handleTap"] = this._handleTap; this.cachedFunctions["_handleDragStart"] = this._handleDragStart; this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; @@ -30184,7 +31254,7 @@ return /******/ (function(modules) { // webpackBootstrap this._handleTap = function () {}; this._handleOnDrag = this._controlNodeDrag; this._handleDragStart = function () {} - this._handleOnRelease = this._releaseControlNode; + this._manipulationReleaseOverload = this._releaseControlNode; // redraw to show the unselect this._redraw(); @@ -30504,11 +31574,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 58 */ +/* 60 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(44); exports._cleanNavigation = function() { // clean hammer bindings @@ -30519,6 +31589,8 @@ return /******/ (function(modules) { // webpackBootstrap this.navigationHammers.existing = []; } + this._navigationReleaseOverload = function () {}; + // clean up previous navigation items var wrapper = document.getElementById('network-navigation_wrapper'); if (wrapper && wrapper.parentNode) { @@ -30556,9 +31628,7 @@ return /******/ (function(modules) { // webpackBootstrap this.navigationHammers.new.push(hammer); } - var hammerDoc = Hammer(document, {prevent_default: false}); - hammerDoc.on('release', this._stopMovement.bind(this)); - this.navigationHammers.new.push(hammerDoc); + this._navigationReleaseOverload = this._stopMovement; this.navigationHammers.existing = this.navigationHammers.new; }; @@ -30570,12 +31640,8 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ exports._zoomExtent = function(event) { - // FIXME: this is a workaround because the binding of Hammer on Document makes this fire twice - if (this._zoomExtentLastTime === undefined || new Date() - this._zoomExtentLastTime > 200) { - this._zoomExtentLastTime = new Date(); - this.zoomExtent({duration:800}); - event.stopPropagation(); - } + this.zoomExtent({duration:800}); + event.stopPropagation(); }; /** @@ -30691,7 +31757,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 59 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { exports._resetLevels = function() { @@ -31108,13 +32174,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 60 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(62); - var HierarchialRepulsionMixin = __webpack_require__(63); - var BarnesHutMixin = __webpack_require__(64); + var RepulsionMixin = __webpack_require__(64); + var HierarchialRepulsionMixin = __webpack_require__(65); + var BarnesHutMixin = __webpack_require__(66); /** * Toggling barnes Hut calculation on and off. @@ -31802,7 +32868,7 @@ return /******/ (function(modules) { // webpackBootstrap var valueId = id + "_value"; var rangeValue = document.getElementById(id).value; - if (map instanceof Array) { + if (Array.isArray(map)) { document.getElementById(valueId).value = map[parseInt(rangeValue)]; this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); } @@ -31822,19 +32888,20 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 61 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { function webpackContext(req) { throw new Error("Cannot find module '" + req + "'."); } - webpackContext.resolve = webpackContext; webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; module.exports = webpackContext; + webpackContext.id = 63; /***/ }, -/* 62 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { /** @@ -31898,7 +32965,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 63 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { /** @@ -32057,7 +33124,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 64 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { /** @@ -32462,7 +33529,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 65 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { module.exports = function(module) { diff --git a/dist/vis.map b/dist/vis.map index a7313907..d544c327 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","BackgroundItem","BoxItem","PointItem","RangeItem","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","easeInOutQuad","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","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","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","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","Core","newDataSet","initialLoad","setWindow","animate","fit","setGroups","groups","setSelection","focus","getSelection","itemData","middle","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","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","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","dragging","time","initTime","done","initStart","initEnd","changed","_applyRange","anyChanged","_cancelAnimation","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","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","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","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","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","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","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","newProps","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","lastStart","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","rangePerPixelInv","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","drawData","barPoints","heightOffset","_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","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","setAttribute","baseClassName","onTop","itemSetHeight","marginLeft","_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","fontColor","fontSize","fontFace","fontFill","level","highlightColor","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","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","layout","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","navigationHammers","existing","new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","stabilized","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","Activator","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","emitEvent","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","mainMovingStatus","supportMovingStatus","_doInAllActiveSectors","mainMoving","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","networkConstants","fromId","toId","widthSelected","labelDimensions","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","yLine","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","brokenUrl","img","Image","onload","onerror","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","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","eventType","getTouchList","collectEventData","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_initAutoResize","component","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","custom","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_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","trigger","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","_d","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","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","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","_dateTzOffset","inputString","asFloat","daysAdjust","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","dates","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","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","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","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","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivs","navigationDivActions","hammerDoc","_stopMovement","_zoomExtent","_zoomExtentLastTime","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","_setLevelDirected","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","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","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","easeInOutQuad","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","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","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","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","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","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","setWindow","animate","fit","setSelection","focus","getSelection","itemData","middle","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","day","month","year","week","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","dayOfYear","switchedDay","checkFirstStep","time","getHiddenDuration","correctTimeForHidden","conversion","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","hiddenTimes","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","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","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","dragging","initTime","done","initStart","initEnd","changed","anyChanged","_cancelAnimation","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","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","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","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","visibleSubgroups","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","_calculateHeight","offsetTop","offsetLeft","ii","repositionY","resetSubgroups","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","box","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","nonFirstMargin","firstGroup","_firstGroup","firstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","initialX","selected","dragLeftItem","dragRightItem","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","lastStart","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","rangePerPixelInv","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","drawData","barPoints","heightOffset","_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","timeLabelsize","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","onTop","itemSubgroup","subgroupIndex","itemSetHeight","marginLeft","_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","fontColor","fontSize","fontFace","fontFill","level","highlightColor","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","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","layout","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","navigationHammers","existing","new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","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","Activator","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","mainMovingStatus","supportMovingStatus","_doInAllActiveSectors","mainMoving","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","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","brokenUrl","img","Image","onload","onerror","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","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","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_initAutoResize","component","_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","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_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","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","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","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","_d","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","days","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","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","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","_dateTzOffset","inputString","asFloat","daysAdjust","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","require","noGlobal","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","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","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","_setLevelDirected","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","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 diff --git a/dist/vis.min.css b/dist/vis.min.css index be8fefa9..e0996856 100644 --- a/dist/vis.min.css +++ b/dist/vis.min.css @@ -1 +1 @@ -.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis.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:0;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:2}.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.background{overflow:hidden;border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;top:0;bottom:0}.vis.timeline .item.range .content{position:relative;display:inline-block;overflow:hidden;max-width:100%}.vis.timeline .item.background .content{position:absolute;display:inline-block;overflow:hidden;max-width:100%;margin:5px}.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}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize}.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);position:absolute;left:0;top:0;width:100%;height:30px}div.network-manipulation-editMode{position:absolute;left:0;top:0;height:30px;margin-top:20px}div.network-manipulation-closeDiv{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-manipulation-closeDiv:hover{opacity:.6}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_wrapper{position:absolute;left:0;top:0;width:100%;height:100%}div.network-navigation{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.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 .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.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%;overflow:visible}.vis.timeline .axis{position:absolute;width:100%;height:0;left:0;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:2}.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.background{overflow:hidden;border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis.timeline .item.range .content{position:relative;display:inline-block;overflow:hidden;max-width:100%}.vis.timeline .item.background .content{position:absolute;display:inline-block;overflow:hidden;max-width:100%;margin:5px}.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}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize}.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);position:absolute;left:0;top:0;width:100%;height:30px}div.network-manipulation-editMode{position:absolute;left:0;top:0;height:30px;margin-top:20px}div.network-manipulation-closeDiv{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-manipulation-closeDiv:hover{opacity:.6}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_wrapper{position:absolute;left:0;top:0;width:100%;height:100%}div.network-navigation{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.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 0d5cbaae..1c784b86 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -4,8 +4,8 @@ * * A dynamic, browser-based visualization library. * - * @version 3.5.0 - * @date 2014-09-16 + * @version 3.6.0 + * @date 2014-10-21 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -22,17 +22,17 @@ * 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),BackgroundItem:i(29),BoxItem:i(30),PointItem:i(31),RangeItem:i(32)},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(33),e.network={Edge:i(34),Groups:i(35),Images:i(36),Node:i(37),Popup:i(38),dotparser:i(39),gephiParser:i(40)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(41),e.hammer=i(42)},function(module,exports,__webpack_require__){var moment=__webpack_require__(41);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},exports.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},exports.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size),r.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(50),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){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");var n=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:n._toScreen.bind(n),toGlobalScreen:n._toGlobalScreen.bind(n),toTime:n._toTime.bind(n),toGlobalTime:n._toGlobalTime.bind(n)}},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(50),i(42),i(1)),n=i(3),r=i(4),a=i(15),h=i(44),d=i(27),l=i(19),c=i(20),p=i(24);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){var n=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:n._toScreen.bind(n),toGlobalScreen:n._toGlobalScreen.bind(n),toTime:n._toTime.bind(n),toGlobalTime:n._toGlobalTime.bind(n)}},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),s&&this.setGroups(s),e?this.setItems(e):this.redraw()}var o=(i(50),i(42),i(1)),n=i(3),r=i(4),a=i(15),h=i(44),d=i(27),l=i(19),c=i(20),p=i(26);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i&&("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&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t){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,this._start==this._end&&(this._start-=.75,this._end+=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(){var t=""+Number(this.current).toPrecision(5);if(-1!=t.indexOf(",")||-1!=t.indexOf("."))for(var 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(-3,"days").valueOf(),this.end=i.clone().add(4,"days").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.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(43),h=i(41),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i){function s(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-c,i=e>l,f=i||null===o?o:r.easeInOutQuad(e,h,o,l),m=i||null===n?n:r.easeInOutQuad(e,d,n,l);u=a._applyRange(f,m),p=p||u,u&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end)}),i?p&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end)}):a.animateTimer=setTimeout(s,20)}}var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,l="number"==typeof i?i:500,c=(new Date).valueOf(),p=!1;return s()}var u=this._applyRange(o,n);if(u){var f={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",f),this.body.emitter.emit("rangechanged",f)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return 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.props.touch.dragging=!0,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.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end)}))},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(41);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.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(18),r=i(41),a=i(45);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(42),n=i(1),r=i(18),a=i(41),h=i(45);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf()) -},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},this.linegraphOptions=s,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||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements)},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||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px"):(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=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},f={item:t.item,axis:t.item.vertical/2},m=0,g=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);r=s||r,m+=t.height}),m=Math.max(m,g),this.stackDirty=!1,a.style.height=i(m),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="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[f];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[f];if(this.groupsData)t&&(t.hide(),delete this.groups[f]);else if(!t){var e=null,i=null;t=new d(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 r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},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(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==f)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},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=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this.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.setData(e),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 r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(t)})}}},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,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(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||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{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||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(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||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1;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("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.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];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(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a,h=[],d=[];if(t.length>0){for(n=0;n0)if(o=this.groups[t[n]],"line"==o.options.style||"stack"!=o.options.barChart.handleOverlap){var l=s[0].y,c=s[0].y;for(r=0;rs[r].y?s[r].y:l,c=c0&&(h.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,h),i.__barchartLeft=this._getStackedBarYRange(p,h),i.__barchartLeft.yAxisOrientation="left",t.push("__barchartLeft")),d.length>0&&(d.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,d),i.__barchartRight=this._getStackedBarYRange(p,d),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={},c=0;for(a=0;a0&&(i=Math.min(i,Math.abs(d[a-1].x-s))),o=this._getSafeDrawData(i,r,p);else{var f=a+(l[s].amount-l[s].resolved),m=a-(l[s].resolved+1);f0&&(i=Math.min(i,Math.abs(d[m].x-s))),o=this._getSafeDrawData(i,r,p),l[s].resolved+=1,"stack"==r.options.barChart.handleOverlap?(u=l[s].accumulated,l[s].accumulated+=r.zeroPosition-d[a].y):"sideBySide"==r.options.barChart.handleOverlap&&(o.width=o.width/l[s].amount,o.offset+=l[s].resolved*o.width-.5*o.width*(l[s].amount+1),"left"==r.options.barChart.align?o.offset-=.5*o.width:"right"==r.options.barChart.align&&(o.offset+=.5*o.width))}n.drawBar(d[a].x+o.offset,d[a].y-u,o.width,r.zeroPosition-d[a].y,r.className+" bar",this.svgElements,this.svg),1==r.options.drawPoints.enabled&&n.drawPoint(d[a].x+o.offset,d[a].y-u,r,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,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(42);s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e instanceof Element)t.innerHTML="",t.appendChild(e);else{if(void 0==e)throw new Error('Property "content" missing in item '+this.data.id);t.innerHTML=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0)for(var e=0;et.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw time axis: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=n.prototype.show,s.prototype.hide=n.prototype.hide,s.prototype.repositionX=n.prototype.repositionX,s.prototype.repositionY=function(){var t="top"===this.options.orientation;this.dom.content.style.top=t?"":"0",this.dom.content.style.bottom=t?"0":""},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.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw time axis: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=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,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?Math.max(-s,0):0>s?Math.min(-s,o-s-this.props.content.width-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._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,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,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,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",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",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],"new":[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null;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.stabilized=!1,this.stabilizationIterations=null,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(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(50),n=i(42),r=i(51),a=i(1),h=i(43),d=i(3),l=i(4),c=i(39),p=i(40),u=i(35),f=i(36),m=i(37),g=i(34),v=i(38),y=i(48),b=i(49),_=i(46);i(47),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/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*(Math.abs(o.minX)+Math.abs(o.maxX)),h=1.1*(Math.abs(o.minY)+Math.abs(o.maxY)),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.')}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,this.start()},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=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(),this.constants.keyboard.enabled&&this.isActive()&&(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),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof 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){var i=!1;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth&&(this.frame.canvas.width=this.frame.canvas.clientWidth,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight&&(this.frame.canvas.height=this.frame.canvas.clientHeight,i=!0)),1==i&&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(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(){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(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s0){var i=this,s={iterations:i.stabilizationIterations};i.stabilizationIterations=0,setTimeout(function(){i.emit("stabilized",s)},0)}},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new m({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.focusOnNode=function(t,e){if(this.nodes.hasOwnProperty(t)){void 0===e&&(e={});var i={x:this.nodes[t].x,y:this.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("This nodeId cannot be found.")},s.prototype.moveTo=function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this._getScale()),void 0===t.position&&(t.position=this._getTranslation()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))},s.prototype.animateView=function(t){if(void 0===t)return void(t={});this.releaseNode(),1==t.locked&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(1),this.sourceScale=this._getScale(),this.sourceTranslation=this._getTranslation(),this.targetScale=t.scale,this._setScale(this.targetScale);var e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0==t.animation.duration?null!=this.lockedOnNodeId?(this._classicRedraw=this._redraw,this._redraw=this._lockedRedraw):(this._setScale(this.targetScale),this._setTranslation(this.targetTranslation.x,this.targetTranslation.y),this._redraw()):(this.animationSpeed=1/(this.renderRefreshRate*t.animation.duration*.001)||1/this.renderRefreshRate,this.animationEasingFunction=t.animation.easingFunction,this._classicRedraw=this._redraw,this._redraw=this._transitionRedraw,this._redraw(),this.moving=!0,this.start())},s.prototype._lockedRedraw=function(){var t={x:this.nodes[this.lockedOnNodeId].x,y:this.nodes[this.lockedOnNodeId].y},e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},s=this._getTranslation(),o={x:s.x+i.x*this.scale+this.lockedOnNodeOffset.x,y:s.y+i.y*this.scale+this.lockedOnNodeOffset.y};this._setTranslation(o.x,o.y),this._classicRedraw()},s.prototype.releaseNode=function(){null!=this.lockedOnNodeId&&(this._redraw=this._classicRedraw,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null)},s.prototype._transitionRedraw=function(t){this.easingTime=t||this.easingTime+this.animationSpeed,this.easingTime+=this.animationSpeed;var e=a.easingFunctions[this.animationEasingFunction](this.easingTime);this._setScale(this.sourceScale+(this.targetScale-this.sourceScale)*e),this._setTranslation(this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e),this._classicRedraw(),this.moving=!0,this.easingTime>=1&&(this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.labelDimensions={top:0,left:0,width:0,height:0},this.from=null,this.to=null,this.via=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(37);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(o[d]).width;h=l>h?l:h}var c=this.options.fontSize*n,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(p,u,h,c)),t.fillStyle=this.options.fontColor||"black",t.textAlign="center",t.textBaseline="middle";for(var d=0;n>d;d++)t.fillText(o[d],i,a),a+=r}},s.prototype._drawDashLine=function(t){t.strokeStyle=1==this.selected?this.options.color.highlight:1==this.hover?this.options.color.hover:this.options.color.color,t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.mozDash||void 0!==t.setLineDash){var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],"undefined"!=typeof t.setLineDash?(t.setLineDash(i),t.lineDashOffset=0):(t.mozDash=i,t.mozDashOffset=0),e=this._line(t),"undefined"!=typeof t.setLineDash?(t.setLineDash([0]),t.lineDashOffset=0):(t.mozDash=[0],t.mozDashOffset=0)}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(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(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._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){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,f,m,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,f=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(m,g,u,f,o,n),v=v>l?l:v),m=u,g=f;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,f,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,f=x.y-_):(u=x.x+_,f=x.y-.5*x.height),y=u-o,b=f-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},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,e){var i=this.images[t];if(void 0==i){var s=this;i=new Image,this.images[t]=i,i.onload=function(){s.callback&&s.callback(this)},i.onerror=function(){this.src=e,s.callback&&s.callback(this)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.x=null,this.y=null,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.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),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","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,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.options.shape&&(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)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._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.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;if(1==r&&(l=s+(1-h)/(2*d)),void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var f=this.options.fontSize*h,m=i-c/2,g=s-f/2;"top"==t.textBaseline&&(g+=.5*d),t.fillStyle=this.options.fontFill,t.fillRect(m,g,c,f)}t.fillStyle=this.options.fontColor||"black";for(var p=0;h>p;p++)t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(k=D.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.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=D.DELIMITER);var i=O+n();if(C[i])return k=D.DELIMITER,L=i,o(),void o();if(C[O])return k=D.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=D.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=D.IDENTIFIER)}for(k=D.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==D.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!=D.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=D.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==D.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!=D.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!=D.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=D.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 D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,O="",L="",k=D.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=o&&(o=864e5),i=new Date(i.valueOf()-.05*o),s=new Date(s.valueOf()+.05*o)}if(null!==i||null!==s){var n=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(i,s,n)}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),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+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop(); -var 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.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},s.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},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.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.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(60),o=i(54),n=i(55),r=i(56),a=i(57),h=i(58),d=i(59);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.frame.appendChild(this.manipulationDiv)),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.frame.appendChild(this.editModeDiv)),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.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.frame.removeChild(this.manipulationDiv),this.frame.removeChild(this.editModeDiv),this.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(51),r=i(50),a=i(42),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),n.bind("esc",this.escListener)},s.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),n.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){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 C)t[e]?i=!0:C[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){C[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++C[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=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={},D={},C={},E=!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),D[t+":"+i]=e,this},unbind:function(t,e){return D[t+":"+e]&&(delete D[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return D[t+":"+e](),this},reset:function(){return M={},D={},this}};t.exports=L},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Le.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Me.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){xi[t]||(d(e),xi[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function f(){}function m(t,e){e!==!1&&P(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=O(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=Me.localeData(),this._bubble()}function v(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function y(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),He.length>0)for(i in He)s=He[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&k(t[s])!==k(e[s]))&&r++;return r+n}function T(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=fi[t]||mi[e]||e}return t}function O(t){var e,i,s={};for(i in t)a(t,i)&&(e=T(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Me[t]=function(s,o){var r,a,h=Me._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Me().utc().set(i,t);return h.call(Me._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function k(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function N(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return pe(Me([t,11,31+e-i]),e,i).week}function A(t){return z(t)?366:365}function z(t){return t%4===0&&t%100!==0||t%400===0}function P(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Ne]<0||t._a[Ne]>11?Ne:t._a[Ie]<1||t._a[Ie]>N(t._a[ke],t._a[Ne])?Ie:t._a[Ae]<0||t._a[Ae]>23?Ae:t._a[ze]<0||t._a[ze]>59?ze:t._a[Pe]<0||t._a[Pe]>59?Pe:t._a[Re]<0||t._a[Re]>999?Re:-1,t._pf._overflowDayOfYear&&(ke>e||e>Ie)&&(e=Ie),t._pf.overflow=e)}function R(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length)),t._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=Y(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function Y(t){var e=null;if(!Fe[t]&&Ye)try{e=Me.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Me.locale(e)}catch(i){}return Fe[t]}function B(t,e){return e._isUTC?Me(t).zone(e._offset||0):Me(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(je);for(e=0,i=s.length;i>e;e++)s[e]=_i[s[e]]?_i[s[e]]:W(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function j(t,e){return t.isValid()?(e=U(e,t.localeData()),gi[e]||(gi[e]=G(e)),gi[e](t)):t.localeData().invalidDate()}function U(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Ue.lastIndex=0;s>=0&&Ue.test(t);)t=t.replace(Ue,i),Ue.lastIndex=0,s-=1;return t}function V(t,e){var i,s=e._strict;switch(t){case"Q":return ii;case"DDDD":return oi;case"YYYY":case"GGGG":case"gggg":return s?ni:Ze;case"Y":case"G":case"g":return ai;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ri:qe;case"S":if(s)return ii;case"SS":if(s)return si;case"SSS":if(s)return oi;case"DDD":return Xe;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Qe;case"a":case"A":return e._locale._meridiemParse;case"X":return ti;case"Z":case"ZZ":return $e;case"T":return Je;case"SSSS":return Ke;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?si:Ve;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ve;case"Do":return ei;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match($e)||[],i=e[e.length-1]||[],s=(i+"").match(pi)||["-",0,0],o=+(60*s[1])+k(s[2]);return"+"===s[0]?-o:o}function Z(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Ne]=3*(k(e)-1));break;case"M":case"MM":null!=e&&(o[Ne]=k(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[Ne]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ie]=k(e));break;case"Do":null!=e&&(o[Ie]=k(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=k(e));break;case"YY":o[ke]=Me.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[ke]=k(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ae]=k(e);break;case"m":case"mm":o[ze]=k(e);break;case"s":case"ss":o[Pe]=k(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Re]=k(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=k(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Me.parseTwoDigitYear(e)}}function q(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[ke],pe(Me(),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[ke],pe(Me(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=ue(i,s,o,a,n),t._a[ke]=h.year,t._dayOfYear=h.dayOfYear}function K(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ie]&&null==t._a[Ne]&&q(t),t._dayOfYear&&(o=r(t._a[ke],s[ke]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=he(o,0,t._dayOfYear),t._a[Ne]=i.getUTCMonth(),t._a[Ie]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];t._d=(t._useUTC?he:ae).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function Q(t){var e;t._d||(e=O(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],K(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===Me.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=U(t._f,t._locale).match(je)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),_i[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Z(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[Ae]<12&&(t._a[Ae]+=12),t._isPm===!1&&12===t._a[Ae]&&(t._a[Ae]=0),K(t),P(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));v(t,i||e)}function se(t){var e,i,s=t._i,o=hi.exec(s);if(o){for(t._pf.iso=!0,e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f=li[e][0]+(o[6]||" ");break}for(e=0,i=ci.length;i>e;e++)if(ci[e][1].exec(s)){t._f+=ci[e][0];break}s.match($e)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,Me.createFromInputFallback(t))}function ne(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function he(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function de(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function le(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ce(t,e,i){var s=Me.duration(t).abs(),o=Oe(s.as("s")),n=Oe(s.as("m")),r=Oe(s.as("h")),a=Oe(s.as("d")),h=Oe(s.as("M")),d=Oe(s.as("y")),l=o0,l[4]=i,le.apply({},l)}function pe(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Me(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ue(t,e,i,s,o){var n,r,a=he(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function fe(t){var e=t._i,i=t._f;return t._locale=t._locale||Me.localeData(t._l),null===e||i===n&&""===e?Me.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),Me.isMoment(e)?new m(e,!0):(i?D(i)?ie(t):J(t):re(t),new m(t)))}function me(t,e){var i,s;if(1===e.length&&D(e[0])&&(e=e[0]),!e.length)return Me();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours() -},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return k(this.milliseconds()/100)},SS:function(){return _(k(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+":"+_(k(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+_(k(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},xi={},wi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];yi.length;)Ce=yi.pop(),_i[Ce+"o"]=u(_i[Ce],Ce);for(;bi.length;)Ce=bi.pop(),_i[Ce+Ce]=p(_i[Ce],2);_i.DDDD=p(_i.DDD,3),v(f.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=Me.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=Me([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 pe(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Me=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),fe(o)},Me.suppressDeprecationWarnings=!1,Me.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i)}),Me.min=function(){var t=[].slice.call(arguments,0);return me("isBefore",t)},Me.max=function(){var t=[].slice.call(arguments,0);return me("isAfter",t)},Me.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),fe(o).utc()},Me.unix=function(t){return Me(1e3*t)},Me.duration=function(t,e){var i,s,o,n,r=t,h=null;return Me.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=We.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:k(h[Ie])*i,h:k(h[Ae])*i,m:k(h[ze])*i,s:k(h[Pe])*i,ms:k(h[Re])*i}):(h=Ge.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(Me(r.from),Me(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),Me.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Me.version=Ee,Me.defaultFormat=di,Me.ISO_8601=function(){},Me.momentProperties=He,Me.updateOffset=function(){},Me.relativeTimeThreshold=function(t,e){return vi[t]===n?!1:e===n?vi[t]:(vi[t]=e,!0)},Me.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Me.locale(t,e)}),Me.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Me.defineLocale(t,e):Me.localeData(t),i&&(Me.duration._locale=Me._locale=i)),Me._locale._abbr},Me.defineLocale=function(t,e){return null!==e?(e.abbr=t,Fe[t]||(Fe[t]=new f),Fe[t].set(e),Me.locale(t),Fe[t]):(delete Fe[t],null)},Me.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Me.localeData(t)}),Me.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Me._locale;if(!D(t)){if(e=Y(t))return e;t=[t]}return H(t)},Me.isMoment=function(t){return t instanceof m||null!=t&&a(t,"_isAMomentObject")},Me.isDuration=function(t){return t instanceof g};for(Ce=wi.length-1;Ce>=0;--Ce)L(wi[Ce]);Me.normalizeUnits=function(t){return T(t)},Me.invalid=function(t){var e=Me.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},Me.parseZone=function(){return Me.apply(null,arguments).parseZone()},Me.parseTwoDigitYear=function(t){return k(t)+(k(t)>68?1900:2e3)},v(Me.fn=m.prototype,{clone:function(){return Me(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=Me(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._dateTzOffset(),"m")),this},format:function(t){var e=j(this,t||Me.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n,r=B(t,this),a=6e4*(this.zone()-r.zone());return e=T(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),o=12*(this.year()-r.year())+(this.month()-r.month()),n=this-Me(this).startOf("month")-(r-Me(r).startOf("month")),n-=6e4*(this.zone()-Me(this).startOf("month").zone()-(r.zone()-Me(r).startOf("month").zone())),o+=n/s,"year"===e&&(o/=12)):(s=this-r,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),i?o:b(o)},from:function(t,e){return Me.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Me(),t)},calendar:function(t){var e=t||Me(),i=B(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 z(this.year())},isDST:function(){return this.zone()+t):+this.clone().startOf(e)>+Me(t).startOf(e)},isBefore:function(t,e){return e=T("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+t>+this):+this.clone().startOf(e)<+Me(t).startOf(e)},isSame:function(t,e){return e=T(e||"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+this===+t):+this.clone().startOf(e)===+B(t,this).startOf(e)},min:l("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),this>t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._dateTzOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateTzOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?M(this,Me.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Me.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?Me(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return N(this.year(),this.month())},dayOfYear:function(t){var e=Oe((Me(this).startOf("day")-Me(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=pe(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=pe(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=pe(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=T(t),this[t]()},set:function(t,e){return t=T(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Me.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),Me.fn.millisecond=Me.fn.milliseconds=be("Milliseconds",!1),Me.fn.second=Me.fn.seconds=be("Seconds",!1),Me.fn.minute=Me.fn.minutes=be("Minutes",!1),Me.fn.hour=Me.fn.hours=be("Hours",!0),Me.fn.date=be("Date",!0),Me.fn.dates=l("dates accessor is deprecated. Use date instead.",be("Date",!0)),Me.fn.year=be("FullYear",!0),Me.fn.years=l("years accessor is deprecated. Use year instead.",be("FullYear",!0)),Me.fn.days=Me.fn.day,Me.fn.months=Me.fn.month,Me.fn.weeks=Me.fn.week,Me.fn.isoWeeks=Me.fn.isoWeek,Me.fn.quarters=Me.fn.quarter,Me.fn.toJSON=Me.fn.toISOString,v(Me.duration.fn=g.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(_e(o)),o-=b(xe(a)),n+=b(o/30),o%=30,a+=b(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12)},humanize:function(t){var e=ce(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Me.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=Me.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=T(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=T(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*_e(e),"month"===t?i:i/12;switch(e=this._days+xe(this._months/12),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Me.fn.lang,locale:Me.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale}}),Me.duration.fn.toString=Me.duration.fn.toISOString;for(Ce in ui)a(ui,Ce)&&we(Ce.toLowerCase());Me.duration.fn.asMilliseconds=function(){return this.as("ms")},Me.duration.fn.asSeconds=function(){return this.as("s")},Me.duration.fn.asMinutes=function(){return this.as("m")},Me.duration.fn.asHours=function(){return this.as("h")},Me.duration.fn.asDays=function(){return this.as("d")},Me.duration.fn.asWeeks=function(){return this.as("weeks")},Me.duration.fn.asMonths=function(){return this.as("M")},Me.duration.fn.asYears=function(){return this.as("y")},Me.locale("en",{ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Ye?o.exports=Me:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Te.moment=De),Me}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(65)(t))},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 D(t,e){return new D.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){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](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;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(37),n=i(34);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.addNode+"
"+t.addEdge+"",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.edgeDescription+"";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.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._handleOnRelease=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.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);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)"); -var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(!(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),i(42));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t200)&&(this._zoomExtentLastTime=new Date,this.zoomExtent({duration:800}),t.stopPropagation())},e._stopMovement=function(){this._xStopMoving(),this._yStopMoving(),this._stopZoom()},e._moveUp=function(t){this.yIncrement=this.constants.keyboard.speed.y,this.start(),t.preventDefault()},e._moveDown=function(t){this.yIncrement=-this.constants.keyboard.speed.y,this.start(),t.preventDefault()},e._moveLeft=function(t){this.xIncrement=this.constants.keyboard.speed.x,this.start(),t.preventDefault()},e._moveRight=function(t){this.xIncrement=-this.constants.keyboard.speed.y,this.start(),t.preventDefault()},e._zoomIn=function(t){this.zoomIncrement=this.constants.keyboard.speed.zoom,this.start(),t.preventDefault()},e._zoomOut=function(t){this.zoomIncrement=-this.constants.keyboard.speed.zoom,this.start(),t.preventDefault()},e._stopZoom=function(t){this.zoomIncrement=0,t&&t.preventDefault()},e._yStopMoving=function(t){this.yIncrement=0,t&&t.preventDefault()},e._xStopMoving=function(t){this.xIncrement=0,t&&t.preventDefault()}},function(t,e){e._resetLevels=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];0==e.preassignedLevel&&(e.level=-1,e.hierarchyEnumerated=!1)}},e._setupHierarchicalLayout=function(){if(1==this.constants.hierarchicalLayout.enabled&&this.nodeIndices.length>0){"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,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s=0;s1&&o.hierarchyEnumerated===!1&&this._setLevelDirected(o.level,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={DateUtil:i(14),DataStep:i(15),Range:i(16),stack:i(17),TimeStep:i(18),components:{items:{Item:i(30),BackgroundItem:i(31),BoxItem:i(32),PointItem:i(33),RangeItem:i(34)},Component:i(19),CurrentTime:i(20),CustomTime:i(21),DataAxis:i(22),GraphGroup:i(23),Group:i(24),BackgroundGroup:i(25),ItemSet:i(26),Legend:i(27),LineGraph:i(28),TimeAxis:i(29)}},e.Network=i(35),e.network={Edge:i(36),Groups:i(37),Images:i(38),Node:i(39),Popup:i(40),dotparser:i(41),gephiParser:i(42)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(43),e.hammer=i(44)},function(module,exports,__webpack_require__){var moment=__webpack_require__(43);exports.isNumber=function(t){return t instanceof Number||"number"==typeof t},exports.isString=function(t){return t instanceof String||"string"==typeof t},exports.isDate=function(t){if(t instanceof Date)return!0;if(exports.isString(t)){var e=ASPDateRegex.exec(t);if(e)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},exports.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},exports.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},exports.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},exports.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},exports.convert=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw new Error("Type must be a string");switch(e){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(moment.isMoment(t))return new Date(t.valueOf());if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])):moment(t).toDate();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"Moment":if(exports.isNumber(t))return moment(t);if(t instanceof Date)return moment(t.valueOf());if(moment.isMoment(t))return moment(t);if(exports.isString(t))return i=ASPDateRegex.exec(t),moment(i?Number(i[1]):t);throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"ISODate":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(moment.isMoment(t))return t.toDate().toISOString();if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ISODate");case"ASPDate":if(exports.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(exports.isString(t)){i=ASPDateRegex.exec(t);var s;return s=i?new Date(Number(i[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+e+'"')}};var ASPDateRegex=/^\/?Date\((\-?\d+)/i;exports.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},exports.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},exports.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},exports.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},exports.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},exports.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},exports.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},exports.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},exports.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},exports.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},exports.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},exports.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},exports.option={},exports.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},exports.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},exports.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},exports.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),exports.isString(t)?t:exports.isNumber(t)?t+"px":e||null},exports.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},exports.GiveDec=function(Hex){var Value;return Value="A"==Hex?10:"B"==Hex?11:"C"==Hex?12:"D"==Hex?13:"E"==Hex?14:"F"==Hex?15:eval(Hex)},exports.GiveHex=function(t){var e;return e=10==t?"A":11==t?"B":12==t?"C":13==t?"D":14==t?"E":15==t?"F":""+t},exports.parseColor=function(t){var e;if(exports.isString(t)){if(exports.isValidRGB(t)){var i=t.substr(4).substr(0,t.length-5).split(",");t=exports.RGBToHex(i[0],i[1],i[2])}if(exports.isValidHex(t)){var s=exports.hexToHSV(t),o={h:s.h,s:.45*s.s,v:Math.min(1,1.05*s.v)},n={h:s.h,s:Math.min(1,1.25*s.v),v:.6*s.v},r=exports.HSVToHex(n.h,n.h,n.v),a=exports.HSVToHex(o.h,o.s,o.v);e={background:t,border:r,highlight:{background:a,border:r},hover:{background:a,border:r}}}else e={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else e={},e.background=t.background||"white",e.border=t.border||e.background,exports.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border),exports.isString(t.hover)?e.hover={border:t.hover,background:t.hover}:(e.hover={},e.hover.background=t.hover&&t.hover.background||e.background,e.hover.border=t.hover&&t.hover.border||e.border);return e},exports.hexToRGB=function(t){t=t.replace("#","").toUpperCase();var e=exports.GiveDec(t.substring(0,1)),i=exports.GiveDec(t.substring(1,2)),s=exports.GiveDec(t.substring(2,3)),o=exports.GiveDec(t.substring(3,4)),n=exports.GiveDec(t.substring(4,5)),r=exports.GiveDec(t.substring(5,6)),a=16*e+i,h=16*s+o,i=16*n+r;return{r:a,g:h,b:i}},exports.RGBToHex=function(t,e,i){var s=exports.GiveHex(Math.floor(t/16)),o=exports.GiveHex(t%16),n=exports.GiveHex(Math.floor(e/16)),r=exports.GiveHex(e%16),a=exports.GiveHex(Math.floor(i/16)),h=exports.GiveHex(i%16),d=s+o+n+r+a+h;return"#"+d},exports.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var cssUtil={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};exports.addCssText=function(t,e){var i=cssUtil.split(t.style.cssText),s=cssUtil.split(e),o=exports.extend(i,s);t.style.cssText=cssUtil.join(o)},exports.removeCssText=function(t,e){var i=cssUtil.split(t.style.cssText),s=cssUtil.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=cssUtil.join(i)},exports.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},exports.HSVToHex=function(t,e,i){var s=exports.HSVToRGB(t,e,i);return exports.RGBToHex(s.r,s.g,s.b)},exports.hexToHSV=function(t){var e=exports.hexToRGB(t);return exports.RGBToHSV(e.r,e.g,e.b)},exports.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},exports.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},exports.selectiveBridgeObject=function(t,e){if("object"==typeof e){for(var i=Object.create(e),s=0;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},exports.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},exports.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size),r.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){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t)}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=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var f={},m=0,g=c.length;g>m;m++){var v=c[m];f[v]=t.getValue(p,m)}h(f)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,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";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new 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(52),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(" "+this.xValueLabel(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(" "+this.yValueLabel(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(this.zValueLabel(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,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{snap:null,toScreen:u._toScreen.bind(u),toGlobalScreen:u._toGlobalScreen.bind(u),toTime:u._toTime.bind(u),toGlobalTime:u._toGlobalTime.bind(u)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(52),i(44),i(1)),n=i(3),r=i(4),a=i(16),h=i(45),d=i(29),l=i(20),c=i(21),p=i(26);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{snap:null,toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(52),i(44),i(1)),n=i(3),r=i(4),a=i(16),h=i(45),d=i(29),l=i(20),c=i(21),p=i(28);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(43);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0;switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.day(o.day),d.subtract(7,"days"),d.month(o.month()),d.year(o.year()),l.day(o.day),l.subtract(7+p,"days"),l.month(o.month()),l.year(o.year());break;case"weekly":d.week()!=l.week()&&(p=1),d.week(o.week()-1),d.year(o.year()),l.week(o.week()-1+p),l.year(o.year());break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()-1),d.year(o.year()),l.month(o.month()-1+p),l.year(o.year());break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()-1),l.year(o.year()-1+p);break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;n>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(7,"days"),l.add(7,"days");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var u=e.isHidden(t.range.start,t.hiddenDates),f=e.isHidden(t.range.end,t.hiddenDates),m=t.range.start,g=t.range.end;1==u.hidden&&(m=1==t.range.startToFront?u.startDate-1:u.endDate+1),1==f.hidden&&(g=1==t.range.endToFront?f.startDate-1:f.endDate+1),(1==u.hidden||1==f.hidden)&&t.range._applyRange(m,g)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=n&&r>i){e=!0;break}}if(1==e&&i<=t._end.valueOf()){var a=s(r);t.current=a.toDate()}},e.toScreen=function(t,i,s){var o=e.isHidden(i,t.body.hiddenDates);1==o.hidden&&(i=o.startDate);var n=e.getHiddenDuration(t.body.hiddenDates,t.range);i=e.correctTimeForHidden(t.body.hiddenDates,t.range,i);var r=t.range.conversion(s,n);return(i.valueOf()-r.offset)*r.scale},e.toTime=function(t,i,s,o){var n=e.getHiddenDuration(t.hiddenDates,i),r=i.end-i.start-n,a=r*s/o,h=e.getAccumulatedHiddenDuration(t.hiddenDates,i,a),d=new Date(h+a+i.start);return d},e.getHiddenDuration=function(t,e){for(var i=0,s=0;s=e.start&&n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=!1,s=0;s=o&&n>t){i=!0;break}}return{hidden:i,startDate:o,endDate:n}}},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,this._start==this._end&&(this._start-=.75,this._end+=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(){var t=""+Number(this.current).toPrecision(5);if(-1!=t.indexOf(",")||-1!=t.indexOf("."))for(var 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(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(46),h=i(43),d=i(19),l=i(14);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i){function s(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,m=i||null===o?o:r.easeInOutQuad(e,h,o,c),g=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(m,g),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end)}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end)}):a.animateTimer=setTimeout(s,20)}}var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1;return s()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var m={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",m),this.body.emitter.emit("rangechanged",m)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDuration(this.body.hiddenDates,this);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end)})}}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end)}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDuration(this.body.hiddenDates,this),o=i+(this.props.touch.start-i)*e,r=i+s+(this.props.touch.end-(i+s))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var a=l.snapAwayFromHidden(this.body.hiddenDates,o,1-e,!1),h=l.snapAwayFromHidden(this.body.hiddenDates,r,e-1,!1);(a!=o||h!=r)&&(this.props.touch.start=a,this.props.touch.end=h,this.scaleOffset=1-t.gesture.scale,o=a,r=h),this.setRange(o,r),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width,n=l.getHiddenDuration(this.body.hiddenDates,this);return e=this.conversion(s,n),t.x/e.scale+e.offset}var r=this.body.domProps.center.height;return e=this.conversion(r),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDuration(this.body.hiddenDates,this),o=e+(this.start-e)*t,n=e+s+(this.end-(e+s))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var r=l.snapAwayFromHidden(this.body.hiddenDates,o,i,!0),a=l.snapAwayFromHidden(this.body.hiddenDates,n,-i,!0);(r!=o||a!=n)&&(o=r,n=a),this.setRange(o,n),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=s.SCALE.DAY,this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[])}var o=i(43),n=i(14);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(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case s.SCALE.YEAR:case s.SCALE.MONTH:case s.SCALE.WEEKDAY:case s.SCALE.DAY:case s.SCALE.HOUR:case s.SCALE.MINUTE:case s.SCALE.SECOND:case s.SCALE.MILLISECOND:return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case s.SCALE.WEEKDAY:case s.SCALE.DAY:case s.SCALE.HOUR:case s.SCALE.MINUTE:case s.SCALE.SECOND:case s.SCALE.MILLISECOND:return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case s.SCALE.MILLISECOND:case s.SCALE.SECOND:case s.SCALE.MINUTE:case s.SCALE.HOUR:return!0;default:return!1}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.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(19),r=i(43),a=i(47);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(44),n=i(1),r=i(19),a=i(43),h=i(47);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},this.linegraphOptions=s,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(19),a=i(15);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||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements)},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||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px"):(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.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){this.items[t.id]=t,t.setParent(this);var e=0;if(void 0!==t.data.subgroup&&void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:e},e++),-1==this.visibleItems.indexOf(t)){var i=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,i)}},s.prototype.resetSubgroups=function(){for(var t in this.subgroups)this.subgroups.hasOwnProperty(t)&&(this.subgroups[t].visible=!1)},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;ns;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(44),n=i(1),r=i(3),a=i(4),h=i(19),d=i(24),l=i(25),c=i(32),p=i(33),u=i(34),f=i(31),m="__ungrouped__",g="__background__";s.prototype=new h,s.types={background:f,box:c,range:u,point:p},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new l(g,null,this);r.show(),this.groups[g]=r,this.hammer=o(this.body.dom.centerContainer,{prevent_default:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(){this.groupIds=[],this.stackDirty=!0},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet) +},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width,this.groups[g].redraw(e,f,c);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,v=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);r=s||r,m+=t.height}),m=Math.max(m,v),this.stackDirty=!1,a.style.height=i(m),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="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[m];return i||null},s.prototype._updateUngrouped=function(){var t,e,i=this.groups[m],s=this.groups[g];if(this.groupsData){if(i){i.hide(),delete this.groups[m];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)||t.hide()}}}else if(!i){var r=null,a=null;i=new d(r,a,this),this.groups[m]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],t instanceof f?s.add(t):i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e?this.groupsData&&void 0!=t.group?t.group:g:this.groupsData?t.group:m},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},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(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==m||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},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=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1);var i=this._getGroupId(t.data),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()})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(t)})}}},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()})}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(19);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.svg.style.height="100%",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{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||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(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||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1;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("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(19),d=i(22),l=i(23),c=i(27),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.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];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(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a,h=[],d=[];if(t.length>0){for(n=0;n0)if(o=this.groups[t[n]],"line"==o.options.style||"stack"!=o.options.barChart.handleOverlap){var l=s[0].y,c=s[0].y;for(r=0;rs[r].y?s[r].y:l,c=c0&&(h.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,h),i.__barchartLeft=this._getStackedBarYRange(p,h),i.__barchartLeft.yAxisOrientation="left",t.push("__barchartLeft")),d.length>0&&(d.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,d),i.__barchartRight=this._getStackedBarYRange(p,d),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={},c=0;for(a=0;a0&&(i=Math.min(i,Math.abs(d[a-1].x-s))),o=this._getSafeDrawData(i,r,p);else{var f=a+(l[s].amount-l[s].resolved),m=a-(l[s].resolved+1);f0&&(i=Math.min(i,Math.abs(d[m].x-s))),o=this._getSafeDrawData(i,r,p),l[s].resolved+=1,"stack"==r.options.barChart.handleOverlap?(u=l[s].accumulated,l[s].accumulated+=r.zeroPosition-d[a].y):"sideBySide"==r.options.barChart.handleOverlap&&(o.width=o.width/l[s].amount,o.offset+=l[s].resolved*o.width-.5*o.width*(l[s].amount+1),"left"==r.options.barChart.align?o.offset-=.5*o.width:"right"==r.options.barChart.align&&(o.offset+=.5*o.width))}n.drawBar(d[a].x+o.offset,d[a].y-u,o.width,r.zeroPosition-d[a].y,r.className+" bar",this.svgElements,this.svg),1==r.options.drawPoints.enabled&&n.drawPoint(d[a].x+o.offset,d[a].y-u,r,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,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;ic;){c++;var p=h.getCurrent(),u=this.body.util.toScreen(p),f=h.isMajor();this.options.showMinorLabels&&this._repaintMinorText(u,h.getLabelMinor(),t),f&&this.options.showMajorLabels?(u>0&&(void 0==l&&(l=u),this._repaintMajorText(u,h.getLabelMajor(),t)),this._repaintMajorLine(u,t)):this._repaintMinorLine(u,t),h.next()}if(this.options.showMajorLabels){var m=this.body.util.toTime(0),g=h.getLabelMajor(m),v=g.length*(this.props.majorCharWidth||10)+10;(void 0==l||l>v)&&this._repaintMajorText(0,g,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 major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(44),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(30);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.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,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?Math.max(-s,0):0>s?Math.min(-s,o-s-this.props.content.width-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._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,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,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,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",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",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],"new":[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null;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.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(52),n=i(44),r=i(53),a=i(1),h=i(46),d=i(3),l=i(4),c=i(41),p=i(42),u=i(37),f=i(38),m=i(39),g=i(36),v=i(40),y=i(50),b=i(51),_=i(48);i(49),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/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.')}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,this.start()},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild); +if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=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(),this.constants.keyboard.enabled&&this.isActive()&&(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&&1==this.constants.dragNodes){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof 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){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth&&(this.frame.canvas.width=this.frame.canvas.clientWidth,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight&&(this.frame.canvas.height=this.frame.canvas.clientHeight,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height,oldWidth:s,oldHeight:o})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new 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,e){for(var i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new m(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(){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(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s0){var i=this,s={iterations:i.stabilizationIterations};i.stabilizationIterations=0,i.startedStabilization=!1,setTimeout(function(){i.emit("stabilized",s)},0)}},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new m({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.dirtyLabel=!0,this.from=null,this.to=null,this.via=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(39);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.dirtyLabel=!0),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)),t.fillStyle=this.options.fontColor||"black",t.textAlign="center",t.textBaseline="middle",o=this.labelDimensions.yLine;for(var d=0;r>d;d++)t.fillText(n[d],i,o),o+=a}},s.prototype._drawDashLine=function(t){t.strokeStyle=1==this.selected?this.options.color.highlight:1==this.hover?this.options.color.hover:this.options.color.color,t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.mozDash||void 0!==t.setLineDash){var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],"undefined"!=typeof t.setLineDash?(t.setLineDash(i),t.lineDashOffset=0):(t.mozDash=i,t.mozDashOffset=0),e=this._line(t),"undefined"!=typeof t.setLineDash?(t.setLineDash([0]),t.lineDashOffset=0):(t.mozDash=[0],t.mozDashOffset=0)}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(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(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._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){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,f,m,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,f=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(m,g,u,f,o,n),v=v>l?l:v),m=u,g=f;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,f,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,f=x.y-_):(u=x.x+_,f=x.y-.5*x.height),y=u-o,b=f-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},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,e){var i=this.images[t];if(void 0==i){var s=this;i=new Image,this.images[t]=i,i.onload=function(){s.callback&&s.callback(this)},i.onerror=function(){this.src=e,s.callback&&s.callback(this)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.x=null,this.y=null,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.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),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);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,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.options.shape&&(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)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._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;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=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var f=this.options.fontSize*h,m=i-c/2,g=s-f/2;"top"==n&&(g+=.5*d),this.labelDimensions={top:g,left:m,width:c,height:f,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(m,g,c,f)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";for(var p=0;h>p;p++)t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(k=D.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.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=D.DELIMITER);var i=O+n();if(C[i])return k=D.DELIMITER,L=i,o(),void o();if(C[O])return k=D.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=D.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=D.IDENTIFIER)}for(k=D.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==D.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!=D.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=D.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==D.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!=D.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!=D.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=D.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){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){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 D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,O="",L="",k=D.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=o&&(o=864e5),i=new Date(i.valueOf()-.05*o),s=new Date(s.valueOf()+.05*o)}if(null!==i||null!==s){var n=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(i,s,n)}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",f=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=f,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=f,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=f,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.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},s.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},s.prototype._toTime=function(t){return h.toTime(this.body,this.range,t,this.props.center.width)},s.prototype._toGlobalTime=function(t){return h.toTime(this.body,this.range,t,this.props.root.width)},s.prototype._toScreen=function(t){return h.toScreen(this,t,this.props.center.width)},s.prototype._toGlobalScreen=function(t){return h.toScreen(this,t,this.props.root.width)},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.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.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(62),o=i(56),n=i(57),r=i(58),a=i(59),h=i(60),d=i(61);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.frame.appendChild(this.manipulationDiv)),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.frame.appendChild(this.editModeDiv)),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.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.frame.removeChild(this.manipulationDiv),this.frame.removeChild(this.editModeDiv),this.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(53),r=i(52),a=i(44),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),n.bind("esc",this.escListener)},s.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),n.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){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 C)t[e]?i=!0:C[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){C[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++C[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=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={},D={},C={},E=!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),D[t+":"+i]=e,this},unbind:function(t,e){return D[t+":"+e]&&(delete D[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return D[t+":"+e](),this},reset:function(){return M={},D={},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 D(t,e){return new D.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(t,e){return Le.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Me.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){xi[t]||(d(e),xi[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function f(){}function m(t,e){e!==!1&&P(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=O(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=Me.localeData(),this._bubble()}function v(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function y(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),He.length>0)for(i in He)s=He[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&k(t[s])!==k(e[s]))&&r++;return r+n}function T(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=fi[t]||mi[e]||e}return t}function O(t){var e,i,s={};for(i in t)a(t,i)&&(e=T(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Me[t]=function(s,o){var r,a,h=Me._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Me().utc().set(i,t);return h.call(Me._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function k(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function N(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return pe(Me([t,11,31+e-i]),e,i).week}function A(t){return z(t)?366:365}function z(t){return t%4===0&&t%100!==0||t%400===0}function P(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Ne]<0||t._a[Ne]>11?Ne:t._a[Ie]<1||t._a[Ie]>N(t._a[ke],t._a[Ne])?Ie:t._a[Ae]<0||t._a[Ae]>23?Ae:t._a[ze]<0||t._a[ze]>59?ze:t._a[Pe]<0||t._a[Pe]>59?Pe:t._a[Re]<0||t._a[Re]>999?Re:-1,t._pf._overflowDayOfYear&&(ke>e||e>Ie)&&(e=Ie),t._pf.overflow=e)}function R(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length)),t._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=Y(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function Y(t){var e=null;if(!Fe[t]&&Ye)try{e=Me.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Me.locale(e)}catch(i){}return Fe[t]}function B(t,e){return e._isUTC?Me(t).zone(e._offset||0):Me(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(je);for(e=0,i=s.length;i>e;e++)s[e]=_i[s[e]]?_i[s[e]]:W(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function j(t,e){return t.isValid()?(e=U(e,t.localeData()),gi[e]||(gi[e]=G(e)),gi[e](t)):t.localeData().invalidDate()}function U(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Ue.lastIndex=0;s>=0&&Ue.test(t);)t=t.replace(Ue,i),Ue.lastIndex=0,s-=1;return t}function V(t,e){var i,s=e._strict;switch(t){case"Q":return ii;case"DDDD":return oi;case"YYYY":case"GGGG":case"gggg":return s?ni:Ze;case"Y":case"G":case"g":return ai;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ri:qe;case"S":if(s)return ii;case"SS":if(s)return si;case"SSS":if(s)return oi;case"DDD":return Xe;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Qe;case"a":case"A":return e._locale._meridiemParse;case"X":return ti;case"Z":case"ZZ":return $e;case"T":return Je;case"SSSS":return Ke;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?si:Ve;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ve;case"Do":return ei;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match($e)||[],i=e[e.length-1]||[],s=(i+"").match(pi)||["-",0,0],o=+(60*s[1])+k(s[2]);return"+"===s[0]?-o:o}function Z(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Ne]=3*(k(e)-1));break;case"M":case"MM":null!=e&&(o[Ne]=k(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[Ne]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ie]=k(e));break;case"Do":null!=e&&(o[Ie]=k(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=k(e));break;case"YY":o[ke]=Me.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[ke]=k(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ae]=k(e);break;case"m":case"mm":o[ze]=k(e);break;case"s":case"ss":o[Pe]=k(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Re]=k(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=k(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Me.parseTwoDigitYear(e)}}function q(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[ke],pe(Me(),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[ke],pe(Me(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=ue(i,s,o,a,n),t._a[ke]=h.year,t._dayOfYear=h.dayOfYear}function K(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ie]&&null==t._a[Ne]&&q(t),t._dayOfYear&&(o=r(t._a[ke],s[ke]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=he(o,0,t._dayOfYear),t._a[Ne]=i.getUTCMonth(),t._a[Ie]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];t._d=(t._useUTC?he:ae).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function Q(t){var e;t._d||(e=O(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],K(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===Me.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=U(t._f,t._locale).match(je)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),_i[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Z(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[Ae]<12&&(t._a[Ae]+=12),t._isPm===!1&&12===t._a[Ae]&&(t._a[Ae]=0),K(t),P(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));v(t,i||e)}function se(t){var e,i,s=t._i,o=hi.exec(s);if(o){for(t._pf.iso=!0,e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f=li[e][0]+(o[6]||" ");break}for(e=0,i=ci.length;i>e;e++)if(ci[e][1].exec(s)){t._f+=ci[e][0];break}s.match($e)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,Me.createFromInputFallback(t))}function ne(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function he(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function de(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function le(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ce(t,e,i){var s=Me.duration(t).abs(),o=Oe(s.as("s")),n=Oe(s.as("m")),r=Oe(s.as("h")),a=Oe(s.as("d")),h=Oe(s.as("M")),d=Oe(s.as("y")),l=o0,l[4]=i,le.apply({},l)}function pe(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Me(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ue(t,e,i,s,o){var n,r,a=he(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function fe(t){var e=t._i,i=t._f;return t._locale=t._locale||Me.localeData(t._l),null===e||i===n&&""===e?Me.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),Me.isMoment(e)?new m(e,!0):(i?D(i)?ie(t):J(t):re(t),new m(t)))}function me(t,e){var i,s;if(1===e.length&&D(e[0])&&(e=e[0]),!e.length)return Me();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return k(this.milliseconds()/100)},SS:function(){return _(k(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+":"+_(k(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+_(k(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},xi={},wi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];yi.length;)Ce=yi.pop(),_i[Ce+"o"]=u(_i[Ce],Ce);for(;bi.length;)Ce=bi.pop(),_i[Ce+Ce]=p(_i[Ce],2);_i.DDDD=p(_i.DDD,3),v(f.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=Me.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=Me([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 pe(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Me=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),fe(o)},Me.suppressDeprecationWarnings=!1,Me.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i)}),Me.min=function(){var t=[].slice.call(arguments,0);return me("isBefore",t)},Me.max=function(){var t=[].slice.call(arguments,0);return me("isAfter",t)},Me.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),fe(o).utc()},Me.unix=function(t){return Me(1e3*t)},Me.duration=function(t,e){var i,s,o,n,r=t,h=null;return Me.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=We.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:k(h[Ie])*i,h:k(h[Ae])*i,m:k(h[ze])*i,s:k(h[Pe])*i,ms:k(h[Re])*i}):(h=Ge.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(Me(r.from),Me(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),Me.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Me.version=Ee,Me.defaultFormat=di,Me.ISO_8601=function(){},Me.momentProperties=He,Me.updateOffset=function(){},Me.relativeTimeThreshold=function(t,e){return vi[t]===n?!1:e===n?vi[t]:(vi[t]=e,!0)},Me.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Me.locale(t,e)}),Me.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Me.defineLocale(t,e):Me.localeData(t),i&&(Me.duration._locale=Me._locale=i)),Me._locale._abbr},Me.defineLocale=function(t,e){return null!==e?(e.abbr=t,Fe[t]||(Fe[t]=new f),Fe[t].set(e),Me.locale(t),Fe[t]):(delete Fe[t],null)},Me.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Me.localeData(t)}),Me.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Me._locale;if(!D(t)){if(e=Y(t))return e;t=[t]}return H(t)},Me.isMoment=function(t){return t instanceof m||null!=t&&a(t,"_isAMomentObject")},Me.isDuration=function(t){return t instanceof g};for(Ce=wi.length-1;Ce>=0;--Ce)L(wi[Ce]);Me.normalizeUnits=function(t){return T(t)},Me.invalid=function(t){var e=Me.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},Me.parseZone=function(){return Me.apply(null,arguments).parseZone()},Me.parseTwoDigitYear=function(t){return k(t)+(k(t)>68?1900:2e3)},v(Me.fn=m.prototype,{clone:function(){return Me(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=Me(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._dateTzOffset(),"m")),this},format:function(t){var e=j(this,t||Me.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n,r=B(t,this),a=6e4*(this.zone()-r.zone());return e=T(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),o=12*(this.year()-r.year())+(this.month()-r.month()),n=this-Me(this).startOf("month")-(r-Me(r).startOf("month")),n-=6e4*(this.zone()-Me(this).startOf("month").zone()-(r.zone()-Me(r).startOf("month").zone())),o+=n/s,"year"===e&&(o/=12)):(s=this-r,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),i?o:b(o)},from:function(t,e){return Me.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Me(),t)},calendar:function(t){var e=t||Me(),i=B(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 z(this.year())},isDST:function(){return this.zone()+t):+this.clone().startOf(e)>+Me(t).startOf(e)},isBefore:function(t,e){return e=T("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+t>+this):+this.clone().startOf(e)<+Me(t).startOf(e)},isSame:function(t,e){return e=T(e||"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+this===+t):+this.clone().startOf(e)===+B(t,this).startOf(e)},min:l("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),this>t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._dateTzOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateTzOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?M(this,Me.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Me.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?Me(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return N(this.year(),this.month())},dayOfYear:function(t){var e=Oe((Me(this).startOf("day")-Me(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=pe(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=pe(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=pe(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=T(t),this[t]()},set:function(t,e){return t=T(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Me.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),Me.fn.millisecond=Me.fn.milliseconds=be("Milliseconds",!1),Me.fn.second=Me.fn.seconds=be("Seconds",!1),Me.fn.minute=Me.fn.minutes=be("Minutes",!1),Me.fn.hour=Me.fn.hours=be("Hours",!0),Me.fn.date=be("Date",!0),Me.fn.dates=l("dates accessor is deprecated. Use date instead.",be("Date",!0)),Me.fn.year=be("FullYear",!0),Me.fn.years=l("years accessor is deprecated. Use year instead.",be("FullYear",!0)),Me.fn.days=Me.fn.day,Me.fn.months=Me.fn.month,Me.fn.weeks=Me.fn.week,Me.fn.isoWeeks=Me.fn.isoWeek,Me.fn.quarters=Me.fn.quarter,Me.fn.toJSON=Me.fn.toISOString,v(Me.duration.fn=g.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(_e(o)),o-=b(xe(a)),n+=b(o/30),o%=30,a+=b(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12)},humanize:function(t){var e=ce(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Me.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=Me.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=T(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=T(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*_e(e),"month"===t?i:i/12;switch(e=this._days+xe(this._months/12),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Me.fn.lang,locale:Me.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale}}),Me.duration.fn.toString=Me.duration.fn.toISOString;for(Ce in ui)a(ui,Ce)&&we(Ce.toLowerCase());Me.duration.fn.asMilliseconds=function(){return this.as("ms")},Me.duration.fn.asSeconds=function(){return this.as("s")},Me.duration.fn.asMinutes=function(){return this.as("m")},Me.duration.fn.asHours=function(){return this.as("h")},Me.duration.fn.asDays=function(){return this.as("d")},Me.duration.fn.asWeeks=function(){return this.as("weeks")},Me.duration.fn.asMonths=function(){return this.as("M")},Me.duration.fn.asYears=function(){return this.as("y")},Me.locale("en",{ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Ye?o.exports=Me:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Te.moment=De),Me}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(67)(t))},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(39);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id] +},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(39),n=i(36);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1},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.addNode+"
"+t.addEdge+"",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.edgeDescription+"";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._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.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._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._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);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(!(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),i(44));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){"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,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s=0;s1&&o.hierarchyEnumerated===!1&&this._setLevelDirected(o.level,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.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=63},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}}])}); //# sourceMappingURL=vis.map \ No newline at end of file diff --git a/docs/dataset.html b/docs/dataset.html index 57010e1d..d9627a44 100644 --- a/docs/dataset.html +++ b/docs/dataset.html @@ -117,8 +117,8 @@ var data = new vis.DataSet([data] [, options])

- The parameter datacode> is optional and can be an Array or - Google DataTable with items. + The parameter data is optional and can be an Array or + Google DataTable with items.

@@ -183,7 +183,7 @@ var data = new vis.DataSet([data] [, options]) add(data [, senderId]) Number[] - Add data to the DataSet. Adding an item will fail when there already is an item with the same id. The function returns an array with the ids of the added items. See section Data Manipulation. + Add one or multiple items to the DataSet. data can be a single item or an array with items. Adding an item will fail when there already is an item with the same id. The function returns an array with the ids of the added items. See section Data Manipulation. @@ -216,7 +216,7 @@ var data = new vis.DataSet([data] [, options]) Object | Array | DataTable Get a single item, multiple items, or all items from the DataSet. - Usage examples can be found in section Getting Data, and the available options are described in section Data Selection. If parameter data isprovided, items will be appended to this array or table, which is required in case of Google DataTable. + Usage examples can be found in section Getting Data, and the available options are described in section Data Selection. If parameter data is provided, items will be appended to this array or table, which is required in case of Google DataTable. @@ -290,18 +290,17 @@ var data = new vis.DataSet([data] [, options]) Number[] - Remove on ore multiple items by id or by the items themselves. Returns an array with the ids of the removed items. See section Data Manipulation. + Remove one or multiple items by id or by the items themselves. Returns an array with the ids of the removed items. See section Data Manipulation. - update(id [, senderId])
- update(ids [, senderId]) + update(data [, senderId]) Number[] - Update on ore existing items. When an item doesn't exist, it will be created. Returns an array with the ids of the removed items. See section Data Manipulation. + Update on ore multiple existing items. data can be a single item or an array with items. When an item doesn't exist, it will be created. Returns an array with the ids of the removed items. See section Data Manipulation. @@ -448,8 +447,10 @@ function (event, properties, senderId) { In case of the events add, update, and remove, properties is always an object containing a property - items, which contains an array with the ids of the affected - items. + items, which contains an array with the ids of the affected + items. The update event has an extra field data + containing the original data of the updated items, i.e. the gives the + changed fields of the changed items. @@ -861,4 +862,4 @@ var positiveBalance = dataset.get({ - \ No newline at end of file + diff --git a/docs/graph2d.html b/docs/graph2d.html index 67414a99..5f8b8f0a 100644 --- a/docs/graph2d.html +++ b/docs/graph2d.html @@ -113,7 +113,8 @@ Groups is a vis DataSet containing groups. The available options and the method of construction are described in section Data Format.

-
var graph = new vis.Graph2d(container [, data] [, options] [,groups]);
+
var graph = new vis.Graph2d(container [, data] [, groups] [, options]);
+For backwards compatibility, groups and options can be interchanged.

Data, options and groups can be set or changed later on using the functions diff --git a/docs/graph3d.html b/docs/graph3d.html index e103aefd..8a81c25a 100644 --- a/docs/graph3d.html +++ b/docs/graph3d.html @@ -419,6 +419,14 @@ var options = { none Step size for the grid on the x-axis. + + xValueLabel + function + none + A function for custom formatting of the labels along the x-axis, + for example function (x) {return (x * 100) + '%'}. + + yBarWidth @@ -454,6 +462,14 @@ var options = { none Step size for the grid on the y-axis. + + yValueLabel + function + none + A function for custom formatting of the labels along the y-axis, + for example function (y) {return (y * 100) + '%'}. + + zMin @@ -473,6 +489,14 @@ var options = { none Step size for the grid on the z-axis. + + zValueLabel + function + none + A function for custom formatting of the labels along the z-axis, + for example function (z) {return (z * 100) + '%'}. + + xLabel diff --git a/docs/network.html b/docs/network.html index 785cf377..d4fd6b89 100644 --- a/docs/network.html +++ b/docs/network.html @@ -316,10 +316,11 @@ When using a DataSet, the network is automatically updating to changes in the Da title - string | function + string | function | Element no Title to be displayed when the user hovers over the node. - The title can contain HTML code. If using a function, returning undefined + The title can be an HTML element or a string containing plain text or HTML. + When title is a function, the returned result is displayed as tooltip, and returning undefined will prevent the tooltip from being displayed. @@ -428,7 +429,8 @@ When using a DataSet, the network is automatically updating to changes in the Da string | function no Title to be displayed when the user hovers over the edge. - The title can contain HTML code. If using a function, returning undefined + The title can be an HTML element or a string containing plain text or HTML. + When title is a function, the returned result is displayed as tooltip, and returning undefined will prevent the tooltip from being displayed. @@ -648,8 +650,8 @@ var options = { Boolean false - With the advent of the storePosition() function, the positions of the nodes can be saved after they are stabilized. The smoothCurves require support nodes and those positions are not stored. In order - to speed up the initialization of the network by using storePosition() and loading the nodes with the stored positions, the freezeForStabilization option freezes all nodes that have been supplied with + With the advent of the storePositions() function, the positions of the nodes can be saved after they are stabilized. The smoothCurves require support nodes and those positions are not stored. In order + to speed up the initialization of the network by using storePositions() and loading the nodes with the stored positions, the freezeForStabilization option freezes all nodes that have been supplied with an x and y position in place during the stabilization. That way only the support nodes for the smooth curves have to stabilize, greatly speeding up the stabilization process with cached positions. @@ -2139,6 +2141,12 @@ var options: { Zooming in is > 1.0, zooming out is < 0. Scale cannot be smaller or equal to 0. + + getCenterCoordinates() + Number + Returns the x and y coodinates of the center of the screen (in canvas space). + + getSelection() Array of ids @@ -2153,7 +2161,7 @@ var options: { This function will move the view to center on the specified node. An optional options object can submitted where you can define the animation properties.
The options that can be defined are:
scale:Number
- to zoom to that scale,
- offset:{x:Number, y:Number}
- to offset the position from the center of the canvas (in DOM units),
+ offset:{x:Number, y:Number}
- to offset the position from the center of the canvas (in pixels),
locked: boolean
- if true, the view remains locked on this node until either another focusOnNode, moveTo, releaseNode or drag is done
animation: Object || Boolean
- to define the specifics of the animation. True is animated with default settings, false is not animated.

@@ -2171,13 +2179,6 @@ var options: { When locked on to a node, this function releases it again. If the view is not locked onto a node due to the focusOnNode locked option, nothing happens. - - storePosition() - none - This will put the X and Y positions of all nodes in the dataset. It will also include allowedToMoveX and allowedToMoveY with the correct values. - You can use this to stablize your network once, then save the positions in a database so the next time you load the nodes, stabilization will be near instantaneous. - - DOMtoCanvas(pos) object @@ -2267,16 +2268,6 @@ var options: { edges with id 3 and 5. - - setSelection(selection) - none - Select nodes [deprecated]. - selection is an array with ids of nodes to be selected. - The array selection can contain zero or multiple ids. - Example usage: network.setSelection([3, 5]); will select - nodes with id 3 and 5. - - setSize(width, height) @@ -2285,7 +2276,22 @@ var options: { containing a new size for the visualization. Size can be provided in pixels or in percentages. - + + getPositions([ids]) + Object + This will return an object of all nodes' positions. Data can be accessed with object[nodeId].x and .y. You can optionally supply an id as string or number or an array of ids. If no id or array of ids have been supplied, all positions are returned. + + + + storePositions() + none + When using the vis.DataSet to load your nodes into the network, this method will put the X and Y positions of all nodes into that dataset. It will also include allowedToMoveX and allowedToMoveY with the correct values. + If you're loading your nodes from a database and have this dynamically coupled with the DataSet, you can use this + to stablize your network once, then save the positions in that database through the DataSet so the next time you load the nodes, stabilization will be near instantaneous. + If the nodes are still moving and you're using dynamic smooth edges (which is on by default), you can use the option freezeForStabilization to improve initialization time. +

NOTE:This method does not work with the hierarchical layout because the hierarchical algorithm is assigning X Y positions on load, regardless of the ones you supply it with. + + zoomExtent([options]) none @@ -2416,6 +2422,8 @@ network.off('select', onSelect);

  • width: the new width of the canvas
  • height: the new height of the canvas
  • +
  • oldWidth: the old width of the canvas
  • +
  • oldHeight: the old height of the canvas
@@ -2437,13 +2445,20 @@ network.off('select', onSelect); - - stabilized - Fired every time the network has been stabilized. This event can be used to trigger the .storePosition() function after stabilization. Fired with an object having the following properties: - -
    -
  • iterations: number of iterations used to stabilize
  • -
+ + startStabilization + Fired once when the network starts the physics calculation. This ends with the stabilized event. + + none + + + + stabilized + Fired every time the network has been stabilized. This event can be used to trigger the .storePositions() function after stabilization. Fired with an object having the following properties: + +
    +
  • iterations: number of iterations used to stabilize
  • +
@@ -2455,7 +2470,7 @@ network.off('select', onSelect); zoom - Fired when the network has zoomed. This event can be used to trigger the .storePosition() function after stabilization. + Fired when the network has zoomed. This event can be used to trigger the .storePositions() function after stabilization.
  • direction: "+" or "-"
  • diff --git a/docs/timeline.html b/docs/timeline.html index fb02ad90..de2e2175 100644 --- a/docs/timeline.html +++ b/docs/timeline.html @@ -111,17 +111,21 @@ The constructor of the Timeline is vis.Timeline
    var timeline = new vis.Timeline(container, items, options);
    +or when using groups: +
    var timeline = new vis.Timeline(container, items, groups, options);
    - -The constructor accepts three parameters: +The constructor accepts four parameters:
    • container is the DOM element in which to create the timeline.
    • items is an Array containing items. The properties of an - item are described in section Data Format. -
    • + item are described in section Data Format, items. +
    • + groups is an Array containing groups. The properties of a + group are described in section Data Format, groups. +
    • options is an optional Object containing a name-value map with options. Options can also be set using the method @@ -145,7 +149,8 @@ The constructor accepts three parameters: The Timeline uses regular Arrays and Objects as data format. Data items can contain the properties start, end (optional), content, - group (optional), and className (optional). + group (optional), className (optional), + and style (optional).

      @@ -158,7 +163,7 @@ var items = [ start: new Date(2010, 7, 15), end: new Date(2010, 8, 2), // end is optional content: 'Trajectory A' - // Optional: fields 'id', 'type', 'group', 'className' + // Optional: fields 'id', 'type', 'group', 'className', 'style' } // more items... ]); @@ -231,6 +236,15 @@ var items = [ yes The start date of the item, for example new Date(2010,9,23). + + style + String + no + + A css text string to apply custom styling for an individual item, for + example "color: red; background-color: pink;". + + title String @@ -259,7 +273,7 @@ var items = [ content, and className (optional).

      - Groups can be applied to a timeline using the method setGroups. + Groups can be applied to a timeline using the method setGroups or supplied in the constructor. A table with groups can be created like:

      @@ -268,7 +282,7 @@ var groups = [ { id: 1, content: 'Group 1' - // Optional: a field 'className' + // Optional: a field 'className', 'style' } // more groups... ]); @@ -316,6 +330,15 @@ var groups = [ property group which matches the id of the group. + + style + String + no + + A css text string to apply custom styling for an individual group label, for + example "color: red; background-color: pink;". + + title String @@ -381,9 +404,10 @@ var options = { dataAttributes - Array[String] + Array[String] | 'all' false - An array of fields optionally defined on the timeline items that will be appended as data- attributes to the DOM element of the items. + An array of fields optionally defined on the timeline items that will be appended as data- attributes to the DOM element of the items.
      + If value is 'all' then each field defined on the timeline item will become a data- attribute. @@ -455,6 +479,16 @@ var options = { + + hiddenDates + Object + none + This option allows you to hide specific timespans from the time axis. The dates can be supplied as an object: + {start: '2014-03-21 00:00:00', end: '2014-03-28 00:00:00', [repeat:'daily']} or as an Array of these objects. The repeat argument is optional. + The possible values are (case-sensitive): daily, weekly, monthly, yearly. To hide a weekend, pick any Saturday as start and the following Monday as end + and set repeat to weekly. + + locale String diff --git a/download/vis.zip b/download/vis.zip index fd2ad980..627c9537 100644 Binary files a/download/vis.zip and b/download/vis.zip differ diff --git a/examples/graph2d/03_groups.html b/examples/graph2d/03_groups.html index fb8bedb4..8ec2ac56 100644 --- a/examples/graph2d/03_groups.html +++ b/examples/graph2d/03_groups.html @@ -105,7 +105,7 @@ start: '2014-06-10', end: '2014-07-04' }; - var graph2d = new vis.Graph2d(container, dataset, options, groups); + var graph2d = new vis.Graph2d(container, dataset, groups, options); diff --git a/examples/graph2d/04_rightAxis.html b/examples/graph2d/04_rightAxis.html index a111edda..597c33c0 100644 --- a/examples/graph2d/04_rightAxis.html +++ b/examples/graph2d/04_rightAxis.html @@ -119,7 +119,7 @@ end: '2014-07-04', movable: false }; - var graph2d = new vis.Graph2d(container, dataset, options, groups); + var graph2d = new vis.Graph2d(container, dataset, groups, options); diff --git a/examples/graph2d/05_bothAxis.html b/examples/graph2d/05_bothAxis.html index 59442a10..2a344c85 100644 --- a/examples/graph2d/05_bothAxis.html +++ b/examples/graph2d/05_bothAxis.html @@ -131,7 +131,7 @@ start: '2014-06-09', end: '2014-07-03' }; - var graph2d = new vis.Graph2d(container, items, options, groups); + var graph2d = new vis.Graph2d(container, items, groups, options); diff --git a/examples/graph2d/06_interpolation.html b/examples/graph2d/06_interpolation.html index 0088b780..55fd0bbe 100644 --- a/examples/graph2d/06_interpolation.html +++ b/examples/graph2d/06_interpolation.html @@ -94,7 +94,7 @@ start: '2014-06-11', end: '2014-06-22' }; - var graph2d = new vis.Graph2d(container, dataset, options, groups); + var graph2d = new vis.Graph2d(container, dataset, groups, options); diff --git a/examples/graph2d/09_external_legend.html b/examples/graph2d/09_external_legend.html index 0c3b6921..9dfa0b2c 100644 --- a/examples/graph2d/09_external_legend.html +++ b/examples/graph2d/09_external_legend.html @@ -287,7 +287,7 @@ start: '2014-06-09', end: '2014-07-03' }; - var graph2d = new vis.Graph2d(container, items, options, groups); + var graph2d = new vis.Graph2d(container, items, groups, options); /** diff --git a/examples/graph2d/11_barsSideBySideGroups.html b/examples/graph2d/11_barsSideBySideGroups.html index 22798d97..b54ee119 100644 --- a/examples/graph2d/11_barsSideBySideGroups.html +++ b/examples/graph2d/11_barsSideBySideGroups.html @@ -71,7 +71,7 @@ start: '2014-06-10', end: '2014-06-18' }; - var graph2d = new vis.Graph2d(container, items, options,groups); + var graph2d = new vis.Graph2d(container, items, groups, options); var dropdown = document.getElementById("dropdownID"); dropdown.onchange = update; diff --git a/examples/graph2d/12_customRange.html b/examples/graph2d/12_customRange.html index 5dd51eea..d4d4e4ec 100644 --- a/examples/graph2d/12_customRange.html +++ b/examples/graph2d/12_customRange.html @@ -87,7 +87,7 @@ var options = { start: '2014-06-10', end: '2014-06-18' }; - var graph2d = new vis.Graph2d(container, items, options,groups); + var graph2d = new vis.Graph2d(container, items, groups, options); diff --git a/examples/graph2d/14_toggleGroups.html b/examples/graph2d/14_toggleGroups.html index 9b3ee0ba..0e8802ec 100644 --- a/examples/graph2d/14_toggleGroups.html +++ b/examples/graph2d/14_toggleGroups.html @@ -128,12 +128,12 @@ showMajorLabels:false, showMinorLabels:false }; - var graph2d1 = new vis.Graph2d(document.getElementById('visualization1'), dataset, options, groups); - var graph2d2 = new vis.Graph2d(document.getElementById('visualization2'), dataset, options, groups); - var graph2d3 = new vis.Graph2d(document.getElementById('visualization3'), dataset, options, groups); - var graph2d4 = new vis.Graph2d(document.getElementById('visualization4'), dataset, options, groups); - var graph2d5 = new vis.Graph2d(document.getElementById('visualization5'), dataset, options, groups); - var graph2d6 = new vis.Graph2d(document.getElementById('visualization6'), dataset, options, groups); + var graph2d1 = new vis.Graph2d(document.getElementById('visualization1'), dataset, groups, options); + var graph2d2 = new vis.Graph2d(document.getElementById('visualization2'), dataset, groups, options); + var graph2d3 = new vis.Graph2d(document.getElementById('visualization3'), dataset, groups, options); + var graph2d4 = new vis.Graph2d(document.getElementById('visualization4'), dataset, groups, options); + var graph2d5 = new vis.Graph2d(document.getElementById('visualization5'), dataset, groups, options); + var graph2d6 = new vis.Graph2d(document.getElementById('visualization6'), dataset, groups, options); graph2d1.setOptions({groups:{visibility:{0:true, 1:false, 2:false, 3:false, "__ungrouped__":false}}}) graph2d2.setOptions({groups:{visibility:{0:false, 1:true, 2:false, 3:false, "__ungrouped__":false}}}) diff --git a/examples/graph3d/example12_ticks.html b/examples/graph3d/example12_ticks.html new file mode 100644 index 00000000..0d4c4cdb --- /dev/null +++ b/examples/graph3d/example12_ticks.html @@ -0,0 +1,115 @@ + + + + Graph 3D Axis Ticks + + + + + + + + + + +

      + +

      + +
      + +
      + + diff --git a/examples/graph3d/index.html b/examples/graph3d/index.html index 3af5edbe..3e7a9b6f 100644 --- a/examples/graph3d/index.html +++ b/examples/graph3d/index.html @@ -18,6 +18,7 @@

      example09_mobile.html

      example10_styles.html

      example11_tooltips.html

      +

      example12_ticks.html

      Playground

      Open the playground

      diff --git a/examples/network/02_random_nodes.html b/examples/network/02_random_nodes.html index b0d3ce1b..617ba1e6 100644 --- a/examples/network/02_random_nodes.html +++ b/examples/network/02_random_nodes.html @@ -83,7 +83,10 @@ document.getElementById('selection').innerHTML = 'Selection: ' + params.nodes; }); network.on('stabilized', function (params) { - document.getElementById('stabilization').innerHTML = 'Stabilization took ' + params.iterations + ' iterations.'; + document.getElementById('stabilization').innerHTML = 'Stabilization took ' + params.iterations + ' iterations.'; + }); + network.on('startStabilization', function (params) { + document.getElementById('stabilization').innerHTML = 'Stabilizing...'; }); } diff --git a/examples/timeline/24_all_data_attributes.html b/examples/timeline/24_all_data_attributes.html new file mode 100644 index 00000000..dc077aa3 --- /dev/null +++ b/examples/timeline/24_all_data_attributes.html @@ -0,0 +1,43 @@ + + + + Timeline | Basic demo + + + + + + + +

      + In this example all items get HTML attributes attached: each item gets data-? attributes for each field defined on the JS object. +

      + +
      + + + + \ No newline at end of file diff --git a/examples/timeline/25_background_areas.html b/examples/timeline/25_background_areas.html new file mode 100644 index 00000000..777baa9c --- /dev/null +++ b/examples/timeline/25_background_areas.html @@ -0,0 +1,52 @@ + + + + Timeline | Background areas + + + + + + + + +

      This example demonstrates the item type "background", see "Period A" and "Period B". The background areas can be styled with css.

      + +
      + + + + \ No newline at end of file diff --git a/examples/timeline/27_templates.html b/examples/timeline/27_templates.html new file mode 100644 index 00000000..eb68de13 --- /dev/null +++ b/examples/timeline/27_templates.html @@ -0,0 +1,250 @@ + + + + Timeline | Templates + + + + + + + + + + + + +

      WK 2014

      +

      + This example demonstrates using templates to format item contents. In this case handlebars is used as template engine, but you can just use your favorite template engine or manually craft HTML from the data of an item. +

      + +
      + +
      + + + + \ No newline at end of file diff --git a/examples/timeline/29_hiding_times.html b/examples/timeline/29_hiding_times.html new file mode 100644 index 00000000..161bf39d --- /dev/null +++ b/examples/timeline/29_hiding_times.html @@ -0,0 +1,50 @@ + + + + Timeline | Hiding times demo + + + + + + + +
      + + + \ No newline at end of file diff --git a/examples/timeline/30_subgroups.html b/examples/timeline/30_subgroups.html new file mode 100644 index 00000000..86511fb3 --- /dev/null +++ b/examples/timeline/30_subgroups.html @@ -0,0 +1,73 @@ + + + + Timeline | Background areas + + + + + + + + +

      This example demonstrates the item type "background", see "Period A" and "Period B". The background areas can be styled with css.

      + +
      + + + + \ No newline at end of file diff --git a/examples/timeline/31_background_areas_with_groups.html b/examples/timeline/31_background_areas_with_groups.html new file mode 100644 index 00000000..b557b5a2 --- /dev/null +++ b/examples/timeline/31_background_areas_with_groups.html @@ -0,0 +1,56 @@ + + + + Timeline | Background areas with groups + + + + + + + + +

      This example demonstrates the item type "background" when using groups.

      +
        +
      • Background items having a group are displayed in that group
      • +
      • Background items without a group are spread over the whole timeline
      • +
      • Background items with a non-existing group are not displayed
      • +
      +
      + + + + \ No newline at end of file diff --git a/examples/timeline/index.html b/examples/timeline/index.html index 89389e96..c02c1182 100644 --- a/examples/timeline/index.html +++ b/examples/timeline/index.html @@ -35,9 +35,13 @@

      21_set_selection.html

      22_window_adjustment.html

      23_data_attributes.html

      -

      24_background_areas.html

      -

      25_templates.html

      +

      24_all_data_attributes.html

      +

      25_background_areas.html

      26_external_data.html

      +

      27_templates.html

      +

      29_hiding_times.html

      +

      30_subgroups.html

      +

      31_background_areas_with_groups.html

      requirejs_example.html

      diff --git a/index.html b/index.html index e6d5529b..e75c238e 100644 --- a/index.html +++ b/index.html @@ -74,7 +74,7 @@ bower install vis

      download

      Click here to download vis.js -(version 3.5.0) +(version 3.6.0)

      Example